Let's Go Live!

Salvo brand guide

Salvo is our live production system, formerly LGL-OS. The name comes from broadcast routing, where a salvo is a saved set of crosspoints fired together. This guide covers the name, mark, colour, type and writing voice.

salvo.network A Let's Go Live! product Internal reference

Who it's for

Salvo sits between signal entry and content delivery: it ingests, routes, records and releases feeds during a live production. The people using it are working under time pressure, often at night, often on a show that can't be repeated.

Broadcast engineers

They've built signal chains in the dark at 5am and can tell specs from marketing within a sentence. Give them numbers, protocols and limits.

Technical directors

They need the whole system on one screen and need to know it will hold for the length of the show.

Production teams

They won't read the manual beforehand. Whatever they need has to be obvious when they sit down.

How we come across

Direct Precise Calm under pressure

How we don't

Hype-driven Vague Consumer-cute Self-congratulatory

The name

Salvo is a term engineers already use in the control room, and an ordinary English word to everyone else. Both readings describe what the product does: many routes, one action.

In the control room

Engineers recognise the router term and assume you've worked live before.

Outside it

Everyone else hears several things happening at once.

Shape

Five letters, two syllables. It fits a favicon, a tab title and a rack label, none of which LGL-OS did well.

Risk

It's a common word, so trademark clearance and search ranking are harder. Clear it before anything is printed.

Salvo and salvo

The product name and the router term will appear in the same sentence. Capitalisation tells them apart.

Correct

Capitalised Salvo is the product. Lowercase salvo is the action.

"When an operator fires a salvo, every routed source cuts together."

Incorrect

"Salvo fires a Salvo"

"salvo records continuously"

Naming and hierarchy

NameWhat it isWhen to use
Let's Go Live!The companyContracts, about pages, legal
SalvoThe product. No hyphen, suffix or TLDEverywhere else
Salvo [App]An individual app or productProduct pages, in-app navigation, docs
ATEM BuilderThe free ATEM planner. No Salvo prefixEverywhere
salvo.networkThe web addressURLs, footers, business cards. Not in running copy
salvoThe CLI command, and the router termTerminal, code samples, technical prose

Apps

SalvoREMI
SalvoProducer
SalvoDistribute
SalvoProjects
SalvoVault
SalvoNodes
ATEM Builder

On first mention, use the full name and say what it does. After that, the short name is enough. The names follow the product catalog (orchestrate-core src/shared/products.js, salvo.network catalog.md).

Correct

Salvo Distribute takes your feeds in, records them and streams them everywhere. Once Distribute is running, every feed is recorded.

Incorrect

"LGL-OS Distribute"

"the Distribute module"

"Salvo's Producer"

The URL

Only the dot takes colour. The letters stay black or white.

URL lockup
Salvo.Network
In text
salvo.network

Mark and wordmark

A router matrix is a grid of crosspoints. The mark is the set of crosspoints that, closed together, spell an S. Every asset is SVG built from rects and outlined paths, so nothing depends on a font at render time.

Mark

Routed S mark on light
Routed S · light
Routed S mark on dark
Routed S · dark
Closed tile, cobalt
Tile · accent
Closed tile, white
Tile · white
Closed tile, dark
Tile · dark
Closed tile, light
Tile · light

Small sizes

16, 24, 32 and 48px. At 16px the open matrix reads as a shape, not a letter. Below 24px, use the tile.

Wordmark

Inter Tight 800, uppercase, −0.01em tracking. A plain, dense grotesque in the tradition of pro equipment, and it holds at 13px in a nav bar.

Salvo wordmark on light
On light
Salvo wordmark on dark
On dark
Salvo lockup on light
Lockup · light
Salvo lockup on dark
Lockup · dark

The mark sits at cap height and never taller, with one grid cell of clear space on every side. Don't tint letters of the wordmark or set it in another cut; colour comes from the mark and the URL dot.

Favicon and app icons

Favicon
Favicon
Apple touch icon
Touch icon · 180
PWA icon

Full inventory: salvo-assets/README.md. Rebuild with node scripts/salvo-assets-build.mjs.

Product logos

Every app has its own glyph on the same 5×5 crosspoint grid as the S. The tile is the app icon and favicon; the open glyph is what Salvo Home and the dashboard draw next to the app name. Salvo itself, Salvo Home and the dashboard keep the S.

The glyphs come from the product catalog (orchestrate-core src/shared/products.js, editable on Dashboard → Products). When one changes, update it in scripts/salvo-products-build.mjs and rebuild with node scripts/salvo-products-build.mjs. Each folder in salvo-assets/products/ also holds mono, on-dark, favicon (ICO, 16–192px PNG) and touch-icon versions.

Voice

Write the way an experienced colleague talks on comms during a show: short, specific, no performance. The voice is the same everywhere; length and detail change with the context.

Lead with what it does

"Distribute records every feed" says more than three sentences on why recording matters.

Skip superlatives

"Reliable," not "ultra-reliable." "Fast," not "blazingly fast." Give a number if you have one.

Assume the reader knows the field

Our readers know SRT, RTMP and LTC. Don't define them or put them in quotes.

Before publishing, ask: would a TD at Pinkpop nod at this, or roll their eyes? And is there a shorter way to say it?

Product UI

Shortest possible, verb first.

Write

Recording started

Source disconnected. Retrying…

Clip exported · 00:02:14 · 1080p

Avoid

Your recording has been successfully initiated!

Oops! Something went wrong.

Your clip has been exported! Great job!

Errors

Say what happened and what to do next. Don't blame the operator.

Write

Ingest source 'CAM-02' dropped. Last frame: 4s ago. Check connection.

Export failed: disk full. Free 2.1 GB to continue.

Avoid

Something went wrong. Please try again.

Product pages

Explain it the way you would to someone across the desk.

Write

Salvo records, routes and releases every feed in your production at once. If the stream is live, the file is growing.

Avoid

Our state-of-the-art recording engine leverages cutting-edge technology…

Documentation

Start with the task. Write for someone reading at 2am before a show.

Write

To add an SRT source, go to Distribute → Sources → Add.

Avoid

In this section, we'll walk you through the process of configuring a new source…

Vocabulary

UseInstead of
stream, source, feedinput, asset (in live context)
recordcapture (unless at ingest level)
fire a salvotrigger the preset, execute the routing
extractpull, grab
timelinesession
operatoruser (in production context)
reliablerobust, rock-solid, bulletproof, seamless
useutilize, leverage

Color

Neutrals are shared with Let's Go Live!: paper, grey and ink. Cobalt is the accent, kept to one primary action, links and active states. Green, amber and red are reserved for status.

Light surfaces

Base
Page background
#F7F8FA
Panel
Cards, surfaces
#FFFFFF
Raised
Subtle fills
#F0F2F5
Divider
Borders, hover
#E4E7EC
Primary text
#101828
Secondary text
#344054
Muted text
Metadata, timestamps
#667085

Cobalt

Salvo's own accent; Let's Go Live! orange stays on company material. Keep it under a tenth of any screen. Buttons carry white labels; small cobalt text on paper uses the darker step.

Fill
Primary button, mark, URL dot, active states
#2F5BEA
Text
Links, small copy on paper, button hover
#2348C4
On dark
Links, mark and active states on dark
#7B9BFF
Fire salvo Preview

Status

Cobalt never signals status, and no status uses blue, so an accent is never mistaken for a state. Status chips are filled squares, always paired with a word. On light backgrounds, status text uses the darker step.

#1FA463
Live
Text: #11744A
#E8A317
Warning
Text: #9A5B00
#E0362C
Error
Text: #B0221A · on dark #FF6B5E
2 streams ingesting
Export queued
Source dropped

Type

Two typefaces. Schibsted Grotesk for headings and text. Martian Mono, shared with Let's Go Live!, for readouts, labels and buttons. The wordmark is drawn from Inter Tight and never used as text.

Headings
Schibsted Grotesk 700

Sentence case. Capitals are for the wordmark only.

Text and interface
Schibsted Grotesk 400 / 500

17px on pages and in docs, 13–14px in the product. Tabular figures on.

Readouts
Martian Mono 400 / 500

Timecode, addresses, bitrates, logs, buttons and short caps labels.

Two densities

Pages are read; operator screens are scanned. Same family, different sizes. Nothing goes below 12px.

Pages and docs
Page heading · Schibsted 700 · 52 / 1.05 (mobile 36)
Continuous recording for live shows
Section heading · Schibsted 700 · 34 / 1.1
Ingest sources
Lead · Schibsted 400 · 20 / 1.5
Salvo records, routes and releases every feed in your production at once.
Body · Schibsted 400 · 17 / 1.6
Distribute records continuously across active streams. If the stream is live, the file is growing.
Operator screens
H1 · Schibsted 600 · 24
Continuous recording
H2 · Schibsted 600 · 18
Ingest sources
Body · Schibsted 400 · 14 / 1.55
Distribute records continuously across active streams. If the stream is live, the file is growing.
Label · Schibsted 500 · 13
Program
Timecode · Martian 500 · 30 · tabular
01:14:32:18
Readout · Martian 400 · 13
srt://ingest-01.salvo.network:9000 · 12.4 Mbps · 180 ms
Tally · Martian 500 · 12 · +4%
PROGRAM · PREVIEW · STANDBY

Rules

Sentence case

Headings explain; they don't shout. Left-aligned, natural line breaks. Capitals belong to the wordmark, buttons and short labels.

No microtype

Nothing under 12px. Small type has to be readable at the size it ships, not just look technical.

Mono for values and controls

Martian Mono where digits must line up, a string must be copied exactly, or an operator presses it. Never for running text.

Let the product carry the page

Real equipment and real screens do the visual work; type identifies and explains them.

Retired faces

Retired · IBM Plex

The v1 Salvo family (Sans, Condensed, Mono). Replaced by Schibsted Grotesk and Martian Mono in v2.

Retired · Syne

Its widths move between weights, which makes a headline feel unstable.

Retired · Inter, JetBrains Mono (as text faces)

Fine faces, but as the interface type they make the product look like every other dashboard on the operator's screen. Inter Tight lives on only in the wordmark.

Dark surfaces

Light is the default: pages, docs, sign-in, admin and every default view. Dark is for screens operators watch in low light: the program view, the multiviewer, a panel in a truck at midnight. Same tokens, same status colours, same type.

Dark ramp

Base
Page background
#121212
Panel
Cards, sidebars
#1A1A1A
Raised
Borders, hover
#222222
Elevated
Dropdowns, modals
#333333
Primary text
#EDEDED
Secondary text
#CCCCCC
Muted text
Metadata, timestamps
#999999

Preview

Salvo REMI Distribute Producer
ON AIR
Program
01:14:32:18
CAM 01 · Wide12.4 MbpsLIVE
CAM 02 · Close11.8 MbpsSYNC
SRT · Remote180 msDROP
Fire salvo Preview

Rules

No pure black

#121212 is the darkest surface. Pure black reads as a hole in the screen.

No pure white text

#EDEDED for primary text. Pure white on dark tires the eyes over a long show.

Elevation is lightness

Base, panel, raised, elevated: each step is lighter. Shadows don't read on dark, so we don't use them there.

Cobalt steps up on dark

Links, the mark and active states use #7B9BFF. The #2F5BEA button fill stays the same, with a white label.

How the interface talks

Every label, tooltip and notification is copy. Write it with the same care as a product page.

Buttons

Verb first. Name the action, not the destination.

Write

Fire salvo · Start recording · Add source · Export clip · Open timeline

Avoid

Click here to start · Submit · Go · Recording options

Empty states

Tell the operator what to do, not what's missing.

Write

No sources connected. Add one in Distribute → Sources.

Avoid

Nothing here yet! Get started by adding your first source 🎉

Confirmations

Say what happened, in the past tense.

Write

Clip exported · 00:02:14 · 1080p

4 crosspoints armed · released 01:14:32:18

Avoid

Your clip has been successfully exported! Great job!

Words we don't use

Revolutionary Seamless Leverage Solution Simply Game-changing Ecosystem Utilize

UI playground

Live components from @ionglue/ui-core: the webapp template, the primitives and the ATEM panels. It updates by itself with every change to LGL-UI. Open it full screen.