Autousers
desktop_windows

TUI vs plain mode

The CLI auto-detects whether to launch the interactive TUI or run as a scriptable plain command — here is how that decision is made and how to override it.

The autousers binary runs in one of two modes — TUI (interactive Ink-based terminal UI) or plain CLI (commander-driven, scriptable). You never pick the mode explicitly: the CLI looks at how you invoked it and the surrounding environment, then dispatches accordingly.

How the mode is chosen

Mode selection follows a single rule: launch the TUI iff stdout is a TTY AND the CI environment variable is unset AND --no-tui is not passed AND there is no positional subcommand on argv. Any other shape falls through to plain mode.

  • autousers — TUI (interactive Ink-based UI; requires a TTY)
  • autousers <subcommand> (e.g. eval list, autouser create) — plain CLI
  • autousers --no-tui — plain CLI (force, even on a bare invocation)
  • autousers in a CI runner or piped output — plain CLI (auto-detected via TTY check + CI env var)
  • autousers --help / autousers --version — plain CLI (so the output stays scriptable)

When to use which

The TUI is the friendly default for first-run setup, browsing evaluations, and building autousers conversationally. Plain mode is for scripts, CI, and any one-shot command you would pipe into jq.

Interactive — launch the TUI

autousers

Bare invocation in an interactive shell — drops into the menu

Scripted — pipe JSON into jq

autousers eval list --json | jq '.[] | select(.status == "Running")'

Plain mode is automatic once a subcommand is present

CI — non-interactive eval with cost preview

# Dry-run first — prints the cost preview, spends nothing.
autousers eval run <id>

# Confirm and queue the real autouser runs.
autousers eval run <id> --commit

The same dryRun-first rule the MCP server enforces, end to end

Force plain mode inside a TTY

autousers --no-tui              # bypass the TUI, print top-level help
autousers eval list --no-tui    # already plain — flag is a no-op here

Useful when piping through tee or capturing in a wrapper script

Parity guarantee

Every TUI capability has a plain-mode equivalent — there is no workflow that requires the interactive UI. If the TUI lets you do it, autousers <subcommand> --help will show you the flags to do the same thing non-interactively. The TUI is an ergonomic layer on top of the same /api/v1 surface.

infoPrefer driving Autousers from natural language? The MCP server exposes the same surface as tools — see the MCP overview to wire it into Claude, Cursor, or any other MCP-aware host.
Was this article helpful?