Launchers and the uniform flags
Start Claude Code, Codex, Gemini CLI, Kimi Code, Antigravity CLI or Ollama through orboto with the same flags, and see which guarantees each launcher gives its harness.
orboto claude, orboto codex, orboto gemini, orboto kimi, orboto agy and orboto ollama are launchers: orboto starts the harness, stays its parent and gives it the guarantees orboto can offer - supervision, a project scope, a live terminal, the wake channel, the completion guard. This page lists the flags every launcher understands, and what each launcher does and does not provide.
The uniform flags
Added in v0.213.0 Every launcher takes the same three requests and translates them into the form its harness understands, so a harness never answers unknown option '--yolo'.
| Uniform flag | claude | codex | gemini | kimi | agy | ollama |
|---|---|---|---|---|---|---|
--yolo or --skip: full access, nothing asked | --dangerously-skip-permissions | --dangerously-bypass-approvals-and-sandbox | --approval-mode yolo | --auto | --dangerously-skip-permissions | refused: no permission mode |
--continue: the most recent conversation here | --continue | resume --last | --resume latest | --continue | --continue | refused: no session |
--resume <id>: one conversation | --resume <id> | resume <id> | --resume <id> | --session <id> | --conversation <id> | refused: no session |
orboto claude --yolo
orboto codex --skip --continue
orboto gemini --resume 3f9a1c2e
orboto kimi --yolo --continue
orboto agy --resume <conversation-id>--yoloand--skipare one request. They behave identically.orboto claudealso keeps--skip-permissions.- Read anywhere before a bare
--. The launcher reads its flags wherever they stand up to the first--. A--right after orboto's own flags is orboto's separator and is dropped; a--that follows harness arguments is the harness's own end-of-options marker and reaches it with everything after it. Added in v0.225.0 This rule is the same for every launcher. - A harness without a form refuses.
orboto ollama --yolostops at the start with exit code 2 and names the launcher and the reason; it does not drop the flag silently. --continueand--resume <id>exclude each other.--resumetakes the next word as the id. A bare--resumewith nothing after it is the harness's own picker, and passes through unchanged.- A full-access flag you typed natively is not doubled.
orboto codex --yolo -- --dangerously-bypass-approvals-and-sandboxstarts Codex with the flag once. - A supervised restart keeps the translated flag. When orboto restarts a session after an update or an account switch, the full-access flag stays in the restart.
Two harness details: Gemini CLI's own bare --yolo is deprecated, which is why orboto passes --approval-mode yolo; and Kimi's own --yolo still asks before risky actions, which is why --yolo maps to --auto, the mode that never asks.
Flags you want on every start of orboto claude can be stored once as standing arguments.
Launcher flags every launcher takes
Added in v0.225.0 orboto claude, orboto codex, orboto gemini, orboto kimi, orboto agy and orboto ollama read the same launcher flags, anywhere before a bare --. They never reach the harness, and orboto <launcher> --help lists them.
| Flag | What it does |
|---|---|
--no-self-update | Starts on a CLI older than your orboto instance without updating it. ORBOTO_NO_SELF_UPDATE=1 does the same for every start. |
--no-supervise | Runs the harness without the orboto supervisor: no restart, account switch, wake line or live session reaches it. orboto kimi and orboto agy end the session they declared when the harness exits; orboto claude hands its process over to Claude Code, and orboto closes that session once it has been without contact for the workspace's session window (one hour by default). ollama always runs this way. |
--no-live | Keeps supervision but does not show the terminal in Admin → Agents → Live. |
Your CLI updates itself before the session starts
Added in v0.225.0 Every launcher compares your CLI with your orboto instance before the harness starts. If the CLI is older, the start says so in one line, installs the newest release (checked against its published checksum) and starts itself again on the new binary with exactly the arguments you typed:
orboto kimi: CLI 0.224.0 is older than the instance 0.225.0 - run `orboto self-update` and restart this session
orboto kimi: the CLI was updated to 0.225.0 - restarting this command with the new binary
orboto kimi: this start runs the CLI 0.225.0 the self-update installedThe restarted start never updates a second time. If the update fails, the start warns and your session starts anyway on the installed CLI. When the CLI cannot be replaced, for example because it was installed by another user or a package manager, orboto says so before downloading anything; update it the way you installed it. --no-self-update or ORBOTO_NO_SELF_UPDATE=1 keep the installed CLI, and the session then runs with the older CLI's behaviour until you update.
The same check runs when orboto messages --follow, orboto codex-runner, orboto agent-runner and orboto pi-runner start work; each takes --no-self-update, and their status and stop commands never update. On a server where the service user cannot replace the binary, set ORBOTO_NO_SELF_UPDATE=1 in the service environment.
What each launcher provides
Every launcher declares each guarantee as provided or missing, with the reason. A launcher with gaps names them in one line on stderr when it starts, and orboto <launcher> --help prints each gap with its reason after the usage:
orboto codex: this launcher does not provide scope, transcript, mcp config, sign in probe, wake, completion guard, status line, update guard (`orboto codex --help` names why)orboto claude provides every guarantee and prints no such line. Added in v0.223.0 orboto kimi and orboto agy provide most of them; orboto codex and orboto gemini share a smaller set:
| Guarantee | claude | kimi, agy | codex, gemini | ollama |
|---|---|---|---|---|
| Supervision: orboto stays the parent, the terminal and exit code are the harness's | yes | yes | yes | no: runs in the foreground |
| Restart with the same conversation (update, account switch) | yes | yes | yes | no: Ollama keeps no session |
| Terminal in Admin -> Agents -> Live | yes | yes | yes | no |
Login profiles (accounts, --account, switch <name>) | yes | kimi yes; agy no: its Google sign-in lives in the system keyring | yes | accounts and --account yes, with its own host-per-profile model; no switch, Ollama keeps no session |
| Automatic switch at the usage limit | yes: before and at the limit, by default with two or more profiles | no: the login changes only with orboto kimi switch <name>; agy has no profiles to switch to | no: the login changes only with orboto <launcher> switch <name> | no |
Added in v0.230.0 Change the usage-limit policy of a running session (Admin -> Agents -> Live, orboto live switching) | yes, also with orboto claude switching | no | no | no |
Uniform --yolo, --continue, --resume | yes | yes | yes | no |
| Project gate: refuses a folder that is not wired to a project | yes | no | no | no |
| Scope declaration and an orboto agent session (what mail finds) | yes | yes | no | no |
| MCP configuration and sign-in probe | yes | yes | no | no |
| Agent mail reaching the running session | yes, the wake channel, no Monitor needed | yes, through hooks and a wake line at an idle prompt, no Monitor needed (Added in v0.230.0 the supervisor's inbox read every 15 seconds keeps the session reachable) | no | no |
| Completion guard (the check when a turn ends) | yes | yes | no | no |
| Transcript in the Live view | yes, from the session record | yes, from Kimi Code's session record and agy's conversation transcript | no: the terminal tab shows the screen | no |
| Status line with context size and usage | yes | yes: kimi reports the context size (no usage windows), agy the context size and quota windows | no | no |
| Self-update of an outdated CLI before the start | yes | yes | yes | yes |
| Update guard (dependency and changelog check) | yes | no | no | no |
Added in v0.230.0 A second launcher in a busy checkout gets a row of its own. A launcher whose checkout token another launcher on the machine already runs under takes the lowest free suffix (-s2, -s3), so the two sessions never share a row, and they run side by side as long as their scopes share no project and no ticket. A new start that continues the same conversation of the same harness gets the token of a session that just ended back inside 10 minutes; orboto codex and orboto gemini report no session of their own, so their restarts start fresh. The rules are on Session origin and state. Mail reaches a session started with orboto claude, orboto kimi or orboto agy without a Monitor beside it, see Agent inbox and wake-up delivery.
Runner sessions differ from these terminals. A session a runner owns - orboto agent-runner, orboto codex-runner and orboto live-session run - switches login profiles at the usage limit when it runs Claude Code or Codex and starts with --account and --on-limit ask|stop|switch:<names>: it reacts to the limit the harness reports, it has no start default and no switch before the limit, and a runner of any other harness ignores both flags. Added in v0.230.0 Such a session takes the policy change from Admin -> Agents -> Live and orboto live switching as well, and publishes its policy there. agent-runner, codex-runner and live-session run --daemon accept API-key profiles only, because an unattended session cannot sign in. How to change a policy is on Login profiles.
How Kimi Code and Antigravity CLI get their mail and what orboto writes into their settings is on Kimi Code with orboto and Antigravity CLI.
In plain terms, for Codex and Gemini CLI:
- There is no project gate.
orboto codexstarts in any directory and asks for no project, whereorboto clauderefuses a directory that is not wired.orboto kimiandorboto agydo not refuse either, but declare the project the folder belongs to. - There is no scope declaration. The launcher declares no role and no project and registers no orboto agent session, and no mail reaches the running session. The harness can still use orboto through the CLI or MCP (Codex CLI), and the agent inbox describes the wake paths for harnesses without a channel (Agent inbox). When
geminiis not installed andagyis,orboto geministarts agy with everythingorboto agyprovides. - The live session is a terminal only. With an orboto login and a terminal, the launcher shows the terminal in Admin -> Agents -> Live, which is how an operator watches and types into it. There is no transcript;
--no-liveandORBOTO_LIVE_SESSION=offkeep it out. - No completion guard and no status line. Nothing checks the session's work at the end of a turn.
orboto <launcher> updateworks, without the dependency and changelog checkorboto claude updateruns first. See Update Claude Code, Codex and the other harnesses.
pi has no launcher. Its runners (orboto pi-runner and the lane runners) own headless turns instead of an interactive terminal; see Run an agent fleet.
The adapter contract
Behind the launchers is one adapter per harness and one registry, so every launcher answers to the same contract. An adapter declares the guarantees above, starts the harness (supervised or not), translates the uniform flags, builds the argument list a restart resumes with, and, when it owns them, the MCP configuration entry named orboto, the sign-in probe, the completion hook, the status line and the transcript source. The registry refuses an adapter that leaves a guarantee undeclared or declares a gap without a reason, and every registered adapter passes one shared conformance suite that starts a fake harness and checks the flags, the restart, the scope, the live terminal, the login profile and the gap lines.
For you, the contract means three things: the flags above behave the same on every launcher, a missing guarantee is always named rather than silently skipped, and a new harness joins by passing the same checks.
A control session starts any of these launchers in another checkout with orboto agent start.
See also Login profiles, Claude Code with orboto and Publish an agent session live.
Kimi Code with orboto
Start Kimi Code with orboto kimi: the session declares its scope, gets the orboto MCP server, receives its agent mail and runs the completion check at the end of every turn.
Login profiles for Claude Code, Codex, Gemini CLI and Kimi
Keep several accounts of the same coding harness on one machine, sign each one in from orboto, see which account every profile holds, and switch between them without losing the conversation.