Skip to content
yottacode v0.5.0 is out! 🎉 See the release notes ↗

CLI usage

yottacode has two primary entry points:

  • yottacode — launch the interactive TUI
  • yottacode run "<prompt>" — run one prompt non-interactively

Both use the same agent, tools, provider configuration, memory, and sessions.

Global provider flags

These work for the TUI and run mode.

FlagEnv varRequiredPurpose
--model, -mYOTTACODE_MODELyesModel id to use
--base-urlYOTTACODE_BASE_URLyesProvider base URL
--api-keyYOTTACODE_API_KEYnoBearer token
--providerYOTTACODE_PROVIDERnoProvider override
--reasoning-effortYOTTACODE_REASONING_EFFORTnoReasoning hint: low, medium, high
--enable-web-searchYOTTACODE_ENABLE_WEB_SEARCHnoEnable hosted web search when supported
--disable-web-searchYOTTACODE_DISABLE_WEB_SEARCHnoDisable default hosted web search
--enable-x-searchYOTTACODE_ENABLE_X_SEARCHnoEnable xAI x_search
--enable-code-interpreterYOTTACODE_ENABLE_CODE_INTERPRETERnoEnable hosted code interpreter when supported
--allow-pathsYOTTACODE_ALLOW_PATHSnoExtra write roots
--yolo—noDangerous: skip approval prompts and raise the iteration cap (yolo mode overlay). Explicit deny rules still apply. Launch-only; use /yolo to toggle mid-session.
--max-iterations—noTool-call cap per turn; default 128 (auto raises to 512; --yolo raises to 2560 by default)
--permission-mode—noTUI only — startup mode: default | plan | auto. Mirrors Claude Code’s --permission-mode.
--plan-resume—noTUI only — resume a saved plan by slug/substring (implies --permission-mode plan)
--resume—noResume a session by id or name
--continue / -c—noResume the most recent session in the current directory (mirrors claude --continue). Mutually exclusive with --resume.
—YOTTACODE_NO_UPDATE_CHECKnoSet to 1 to disable the once-a-day GitHub release check on TUI startup.

Note

Precedence is flags → environment variables → config file (where supported) → a clean error for any missing required value.

Two ways to run

yottacode

The TUI is best for multi-turn coding work. It provides streaming output, slash commands, approval modals, session controls, and inline scrollback.

Fresh sessions open on a welcome card. Hover an action to select it, click to activate it, or use the shortcut shown at the right edge of the row. The cmdline placeholder invites users to build anything; clicking the cmdline briefly brightens the existing border color so the terminal UI feels focusable:

  • Ctrl+W — New worktree
  • Ctrl+R — Resume session
  • Ctrl+P — Enter plan mode
  • ? — Help / cheatsheet when input is empty

The welcome card intentionally stays action-only. Runtime state such as model, provider, branch, directory, memory, context, and tool status lives in the cmdline/status bar instead of being duplicated in the card.

Terminal tab/window titles use the compact form <icon> · yottacode · <branch-or-worktree> · <dir> so multiple sessions are distinguishable without opening each tab. The first icon is live-updated when the terminal supports title updates:

  • ◐ / ◓ / ◑ / ◒ — working; cycles while the agent turn, tool call, or summarizer is active
  • ◆ — needs input; an approval, path-trust prompt, or exit decision is waiting
  • ↵ — queued input; a follow-up message is waiting to be consumed
  • ○ — idle and ready for input

Managed worktree names are shown as wt:<name> and take precedence over the branch label.

Useful keys:

  • Enter — submit
  • Ctrl+J — insert newline
  • Ctrl+C — cancel an in-flight turn
  • Ctrl+D — quit when input is empty
  • ? — show cheatsheet when input is empty
  • / — open slash-command palette

See TUI slash commands.

Operational progress remains on stderr and never contaminates the JSON stdout object. Errors that occur before an agent turn starts, such as invalid flags or missing provider configuration, retain the normal CLI error output because no run result or session exists yet.

Legacy --json receipt

The older --json flag remains compatible: stdout is still answer-only text and a final receipt is appended to stderr with statuses such as success, approval_required, tests_failed, or iteration_cap. Do not combine it with --format json; new integrations should use the structured stdout contract.

See the five yottacode run recipes for PR descriptions, codemods, test triage, dependency-audit summaries, and changelog drafting.

Setup

yottacode setup

Runs the first-run configuration wizard. It can write ~/.yottacode/config.toml and help configure provider profiles.

Provider commands

yottacode provider list
yottacode provider add openai
yottacode provider use openai
yottacode provider remove old-provider
yottacode provider refresh
yottacode provider refresh openai

Provider profiles live in ~/.yottacode/config.toml as [[providers]] blocks.

Model commands

yottacode model list
yottacode model list --all
yottacode model use <your-model-id>
yottacode model fetch
yottacode model fetch openai

model use updates the active default_model in config. In the TUI, /model <name> switches only the running session.

Diagnostics

yottacode doctor
yottacode doctor --json

doctor prints a grep-friendly report with a top-level summary and consistent sections for provider, GitHub, LSP, media, and sandbox checks. It probes the provider /models endpoint for reachability, auth status, model visibility, provider capabilities, and bounded model-list samples; GitHub can be skipped with --no-github. The JSON form is intended for scripts and keeps the provider fields at the top level for compatibility while adding nested section/status objects.

ChatGPT OAuth

yottacode openai-auth login
yottacode openai-auth status
yottacode openai-auth status --json
yottacode openai-auth logout

These commands manage the openai-auth provider’s browser OAuth credentials and account-specific model list.

GitHub Copilot auth

yottacode copilot-auth login
yottacode copilot-auth models
yottacode copilot-auth models --raw
yottacode copilot-auth status
yottacode copilot-auth status --json
yottacode copilot-auth logout

These commands manage the copilot provider’s GitHub device-code OAuth credentials and model cache. login runs the device code flow and caches available models. models lists cached models and marks plan-gated ones with [upgrade plan].

Sessions

yottacode sessions list
yottacode sessions list --json
yottacode sessions resume <id-or-name>
yottacode sessions resume <id-or-name> --summarized
yottacode sessions rename <id-or-name> <new-name>
yottacode sessions export <id-or-name>
yottacode sessions export <id-or-name> path.md --force
yottacode sessions export <id-or-name> path.jsonl --force

Sessions are saved automatically after completed turns in ~/.yottacode/sessions/. Export paths ending in .jsonl write a schema-versioned structured activity log for team audit and debugging; review it before sharing because prompts, tool args/results, paths, command output, and image metadata can contain sensitive local context.

Memory

yottacode memory list                              # default scope: project
yottacode memory list --scope user
yottacode memory recall --query "testing preferences"
yottacode memory recall --query "deployment" --scope project --top-k 3 --format json
yottacode memory audit                             # read-only curation report
yottacode memory forget --scope <user|project> <name>

Use the TUI /memory picker to edit USER.md / YOTTACODE.md and browse agent-managed memories in vim. See Memory for the full layout and the memory_save / memory_forget tools the agent uses to curate this layer.

Worktrees

yottacode --worktree <name>           # start a session in a git worktree
yottacode -w <name>                   # short form
yottacode run --worktree <name>       # one-shot in a worktree
yottacode worktree list               # list active worktrees
yottacode worktree status             # show worktree state
yottacode worktree remove <name>      # remove a worktree
yottacode worktree prune              # clean up stale worktrees

See Worktrees for the full workflow and .worktreeinclude format.

GitHub setup

yottacode setup github                # interactive PAT setup (or use $GITHUB_TOKEN / gh auth)

See GitHub integration for the full auth chain and available slash commands.

Version

yottacode version