atrium can launch an agent pane under a chosen credential identity, so a single grid of agents can run under different keys or federation profiles at once. Only the identity's name is ever shown; the secret behind it is never displayed, cached, logged, or persisted.
Pass --identity <name> (short form -I <name>) when you launch an agent:
atrium --identity work claude # a static key stored in your OS vault
atrium --identity wif:prod claude # a Workload Identity Federation profileThe identity is resolved for that one child and injected into its environment. It never touches atrium's sibling panes, and atrium itself makes no network calls.
A <name> can name one of two kinds of credential:
- Static key. A plain key name (for example
work) refers to a static key stored in your OS vault. - Workload Identity Federation. A
wif:<name>name (for examplewif:prod) refers to a Workload Identity Federation profile.
The two read apart at a glance in the pane's tag: ·wif:prod for a federation profile versus ·work for a static key. That visible distinction surfaces the credential-precedence footgun, a leftover static key silently shadowing a WIF profile, so you can catch it.
atrium resolves the target's environment through the akey crate:
- A key name becomes
ANTHROPIC_API_KEY. - A
wif:<name>profile becomes the five documented federation variables.
The resolved environment is injected into that one child through the pty (pty::Pty::spawn_with_env). The credential is set for that agent alone.
The identity applies to the initial agent pane and is inherited by every split and new pane created from it. Identity is fixed for a pane's lifetime, because a running process's environment cannot change after it starts. To re-identify a pane you respawn it, which is an explicit, visible action.
Only the name of an identity is ever rendered.
- A
·<name>tag rides in the pane's top border (for example2:claude ·work) and appears next to the window's entry in the bar. - The tag renders as colored text: the identity color is used as the name's foreground, matching the pane border, in both the border and the status bar (drawn as foreground over the bar's dark background). It is never a filled color chip.
- The text is always drawn. Color is a redundant accessibility channel, never the only signal, so the identity is legible without relying on color.
The resolved environment is re-fetched on every spawn, handed straight to the child, and dropped. It is:
- never cached on the pane,
- never logged,
- never persisted,
- never present in
ATRIUM_DEBUGtraces.
A screen-shared grid leaks no key and no token. It shows only the labels you typed.
If an identity cannot be resolved (no such target, or the vault is locked), the reason is flashed in the bar and the agent spawns without the credential. You are told what happened rather than running unauthenticated by surprise. atrium never leaves an agent silently unauthenticated.
Non-agent panes (shells, editors) and no-identity spawns are unaffected: they use the plain spawn path and carry no tag.
Identity is not limited to a single interactive launch. It also works with fleets and with the control plane via ctl spawn --identity, so a whole fleet or a remotely spawned pane can carry the same credential guarantees.
See also the atrium README.