Skip to content

The TUI

Run writing-agent with no arguments and you get the interactive studio: a themed masthead, a compact start screen, and a prompt that accepts three kinds of input.

InputExampleWhat happens
Commandsrun, status, export --format epubExecuted directly - no command prefix needed
Slash commands/theme fallout, /set max_run_tokens 200000Shell/system controls - see the full list
Plain English”write an article about voice agents, technical, for engineers”Routed to the chat assistant, which proposes an abstract you can refine; on your explicit go-ahead (“run it”) it creates the project and starts writing

The chat assistant can run most commands for you, but creating a project requires your explicit confirmation (a code-level gate, not a prompt suggestion), and it never auto-runs the destructive/account commands (delete, write, /user) - though it can change settings (/set …) when you ask in plain English.

During run you see, continuously updated: elapsed time, live token count vs your budget, real USD cost, a progress bar, the current unit and stage (with an animated spinner while a model call is in flight), the goal line (your thesis or premise), and a short scroll of recent events. A draft-opening glimpse per attempt lets you cancel a run going wrong before it costs more.

Each critic verdict is shown as a normalized trust chip - ✓ approved · insight 5/5 · confidence ●●●○○ instead of the raw verdict=approve confidence=0.50 blocking=1, with the invariant that a blocking issue never reads as a bare “approve”.

Finished runs ring the terminal bell and show a summary card: units · words · elapsed · tokens · cost · average insight + clarity/structure/evidence scores.

Even in autonomous mode you can take the wheel without killing the run - a background key-listener acts at the next unit boundary (a model call can’t be interrupted mid-token):

  • esc / p - pause cleanly; the run is fully resumable (run again).
  • m - drop to manual review at the next unit.

If a run hits the token cap (max_run_tokens) or you pause it, you get a structured paused card explaining why and how to resume. Export failures say why and how to recover (file locked, missing optional dependency) instead of silently skipping.

  • WRITINGAGENT_A11Y=1 - line-mode: no live redraw, append-only full-sentence status updates for screen readers.
  • WRITINGAGENT_REDUCED_MOTION=1 - static run stages, no spinner animation.
  • Narrow terminals (<60 columns) fall back to a one-line wordmark.
  • --plain / NO_COLOR - plain-text, no styling.

When a section stalls - the critic keeps blocking and the revision cap is reached - you get a one-keypress menu:

[f]ix · [i]nstruct · [a]pprove as-is · [g]o autonomous · [r]ead draft · [s]top

In autonomous mode (/auto on or run --autonomous) nothing ever pauses: the best-judged draft is committed and contradictions are auto-repaired.

Eleven built-in themes change everything - palette, the wordmark’s figlet face, glyphs, and text tint:

/theme # list with swatches
/theme fallout # Pip-Boy amber CRT
/theme editorial # the blue-ink default
/theme highcontrast # colourblind-safe (Okabe-Ito)

editorial (default) · highcontrast · kazama · supabase · violet-bloom · t3-chat · starry-night · vercel · fallout · mimi · astrovista

highcontrast is colourblind-safe (Okabe-Ito: ok = blue, error = vermillion - never a red/green pair).

The default editorial theme is the terminal expression of the editorial design system - its “ink & brass” skin: manuscript red for status, gold + brass on a warm parchment ground. Themes recolor, never restructure; the same system governs the web dashboard.

Everything above has a browser twin: writing-agent web opens the web dashboard on 127.0.0.1 - the same pipeline, live runs over Server-Sent Events, and per-project evals, artifacts, export, and cost, one job at a time.

  • /help - every command + slash command
  • /features - feature toggles with live on/off state
  • /dashboard - usage telemetry: calls, tokens, cost, latency, errors
  • Tab-completion everywhere: commands, project names, settings keys and values