Skip to content

Voice

Terminal carries voice so an exercise does not need Discord beside it. A voice room is a document an administrator creates in Settings → Rooms; the audio runs on a LiveKit server deployed beside Mainframe (profile voice, see Configuration). Mainframe hands out the join tokens from your grants and knows who is in which room; nothing about you reaches the voice server but an opaque identity and your display name.

Open a room with the palette (Voice: Team Alfa), the Voice panel, or the VOICE chip in the statusbar. One Voice panel shows one room; the chip in its toolbar switches rooms and marks the ones you are in with a dot. Any number of panels may be open on any rooms, and you may be in several rooms at once: every joined room plays, and you talk into every joined room whose grant lets you.

Before you join, the rows show who is there now, greyed. Join connects you; the rows go live, your own row reads you, and a green dot pulses beside whoever is speaking, yourself included. Leave disconnects that room; Leave Every Room in the palette disconnects all of them. A reload starts with no rooms joined; a lost Mainframe connection rejoins the rooms you were in once it is back.

You hear a room when your role’s voice.listen grant covers it and talk when voice.talk does (see Access). Without voice.talk you join listen-only: your row reads LISTEN for everyone and your toolbar has no Mute. A room whose grant you lose removes you within seconds, everywhere.

Mute stops your microphone in that room only: the other rooms keep hearing you, and your row shows the muted glyph to everyone in the room. Deafen silences that room for you only: nobody else notices. Both are per room and per browser, and neither survives a reload. The browser’s microphone indicator stays on while you are muted, because the capture stays open so that unmuting is instant; leaving your last room releases it.

Hover a person’s row for their slider. The setting follows the person, not the room: 150 % on Jonas in Alfa is 150 % on Jonas in Bravo, and it is kept in this browser. Chromium goes to 200 %; Firefox and Safari stop at 100 % and the slider says max 100 %.

Terminal → Settings… → Voice holds what this browser sends and hears, shared by every room you are in and applied the moment you change it:

Row What it does
Input device the microphone every room sends. Until the browser has given device names the row offers Request access, which asks for the microphone once; nothing prompts on its own.
Output device the speakers or headset every room plays through. Hidden in browsers that cannot switch outputs (Safari); Firefox lists outputs once the window has focus.
Input volume 0–200 % on top of the browser’s own gain, with a level meter under it that moves while you speak. The meter is the microphone test: if it does not move, nothing is sent.
Echo cancellation, Noise suppression, Auto gain the browser’s processing on the one capture. A change re-opens the microphone; the rooms do not notice.

If the chosen microphone is unplugged, the rooms fall back to the default microphone at once and a toast names the device now in use (Microphone changed · …). Plugging it back in does not switch back: the row keeps your choice with not connected beside it, and the next join or a change in this section picks it up again. The output device follows the same rule.

Every room is open mic by default: you talk whenever you are not muted. The OPEN chip in the Voice panel’s toolbar switches that room to push-to-talk (PTT): the room is muted until you hold a key or a controller button bound to Talk in <room>, and muted again the moment you let go — also when the window loses focus, when the tab is hidden, on Escape, or when the keymap changes. Talk in Every Room holds every room you are in at once. There are no default keys: bind them in Settings → Keyboard or → Controller (see Settings); the chip’s tooltip names the key to hold, or where to bind one. A binding made before the rooms have loaded is kept and works once they do.

Mute wins in both modes: holding a talk key never unmutes a muted room. The mode is your habit, kept in this browser per room, not a property of the room: a briefing room can be open for the commander and push-to-talk for a pilot with a stick in hand. While a push-to-talk room transmits, your own row reads TX.

On a controller the talk buttons — like Join, Leave, Mute and Deafen — work without a control lease, so a pilot waiting on the ground still talks; every other pad button keeps the lease rule (see Control).

While you are in any room the statusbar reads VOICE · Team Alfa, or VOICE · 2 for two rooms. The microphone glyph is the transmit indicator: lit while this browser sends anywhere (an open room you have not muted, or a push-to-talk room you are holding), crossed out otherwise — red when every joined room is muted. A held push-to-talk room adds · TX. A headphone-off glyph shows when every joined room is deafened. Amber means a room is reconnecting, red that one failed. Clicking it reveals the panel of the first room you joined.

The line under the rows says what is happening; only one shows.

Line Meaning
Not joined · Join you can join this room
Connecting…, Reconnecting… the connection is being made, or remade after a drop
Audio blocked · Enable the browser refused to play sound until you click; Enable does
Microphone denied · Retry the browser refused the microphone; you are joined listen-only until Retry succeeds
No access your grants do not cover this room
Voice unavailable this deployment runs without the voice profile
Removed · Join Mainframe removed you (a role or grant change); Join again with your new grants

No video or screen sharing. No voice activation threshold, no transmit tail after a released key, no per-room input volume, no stereo placement of rooms. No text chat inside a room: mention a room in Chat instead. The assistant never joins, leaves, mutes or talks.

When the deployment enables recording, voice is recorded automatically even without a listener. The live room displays recording status. Replay follows the global playhead; press Listen to unlock sound, then choose the room mix or individual speakers and their volumes. Multiple panels on the same room share one player. Pause, seek and playback speed apply to voice too. Audio plays at 0.25× through 4× with pitch preservation; 8× and 16× use muted Fast scan.

Entering replay disconnects this browser from live rooms and releases its microphone. Returning live requires an explicit Join. A different browser can remain live; linked windows continue to share replay mode.

Recorded coverage can contain gaps after startup, an outage or retention expiry. Missing audio is shown as a gap. Recorded audible-activity indicators remain available. Transcription is deferred and hidden from the UI.

Current access and deletion apply to recordings and transcripts. A deleted room is absent from the picker; a saved panel on it shows <Deleted room>. Recordings from before capture was enabled cannot be recovered.