A recorded CLI session: commands with a prompt, output with the CLI's own ✓/✗ marks. Copy copies the commands only.
DataServer-rendered
Examples
A switch and a refused switch
Long lines wrap by default, so a phone never scrolls sideways.
Light
sb use
$ sb use my-server staging
Refreshing staging…
✓ my-server now answers from staging · 9 tools (+1, −0)
+ get_alerts
$ sb use my-server prod
✗ Did not switch: prod failed to refresh (http): 502 Bad Gateway
my-server still answers from staging
Dark
sb use
$ sb use my-server staging
Refreshing staging…
✓ my-server now answers from staging · 9 tools (+1, −0)
+ get_alerts
$ sb use my-server prod
✗ Did not switch: prod failed to refresh (http): 502 Bad Gateway
my-server still answers from staging
`note` lines (`# …`) say what happens between commands, e.g. what an agent decided to do next. They are never copied.
Your agent
# serve the local build behind the same URL
$ sb dev my-server --port 3000
✓ my-server → local (relay) · 9 tools
# run the suite against it
$ sb eval run evals/my-server.yaml --target local
Example
<Terminal title="Your agent" lines={[{ kind: 'note', text: 'serve the local build behind the same URL' }, { kind: 'cmd', text: 'sb dev my-server --port 3000' }, …]} />
Column output, not wrapped
`wrap={false}` keeps each row whole; the transcript scrolls sideways and is keyboard reachable.
Inspector
$ sb calls --tail
14:02:07 my-server@local get_forecast ok 41 ms 1840→912 claude-code call_7Hk2pQx9LmT4vR8sWd3e
cmd gets a $ prompt; ok/fail/warn get ✓/✗/!; dim is secondary output; note is a # narration line between commands (never copied).
title
RemixNode
"Terminal"
Header label (the figcaption).
wrap
boolean
true
false: keep lines whole and scroll sideways (column output).
copyLabel
string | false
"Copy commands"
Copies the cmd lines, one per line. false hides the button.
Also accepts every <figure> attribute.
Accessibility
A <figure> named by its <figcaption>. The prompt and marks are real characters; the prompt is aria-hidden and not selectable, so copied text is the command alone.
Status is never colour alone: ok, fail and warn lines carry ✓, ✗ and !.
With wrap={false} the <pre> has tabindex="0" and a label, so keyboard users can scroll it.
Guidance
Do
Print what the CLI really prints, including hints and units.
Use `dim` for progress and hints, not for results.