CLI reference

Every yothere command and the module entry points, with what each one does.

Beta · access required

yothere is in invite-only beta. The commands below work once you have access.Request access and we'll get you set up.

yothere is the single front door to the fleet. Run yothere --help for the built-in summary, or yothere <command> --help for a command’s flags. This page enumerates every subcommand and the python -m ... module entry points. Spawning threads is pure file I/O and safe to run in-session; advancing them is the runner’s job (see Module commands).

Note The relay command is a deprecated alias for yothere; both invoke the same CLI. Prefer yothere.

Commands

Command What it does
yothere init [--demo] First-run setup: create the ~/.yothere layout and detect or wire a brain. Idempotent and non-destructive. --demo drives a live zero-key demo thread to done.
yothere spawn "<task>" Spawn one or more threads from a natural-language task. A reminder-shaped task is captured to Bob Reminders instead of spawning.
yothere preset <key> [arg] Spawn a named preset, e.g. yothere preset news-scan "agentic commerce".
yothere presets List available presets with their ETA and read-only or gated-send label.
yothere note "<text>" Capture a reminder to Bob Reminders (no thread).
yothere mode <id> <auto|planning> Set an existing thread’s scope.
yothere list List live threads and their state in a table.
yothere show <id> Show one thread: state, any open question and options, summary, and the first lines of the plan.
yothere focus <id> Pin the focus thread (the one the attention router never auto-interrupts).
yothere unfocus Clear the focus pin.
yothere reply <id> [text] Answer a blocked thread, which flips it to resumed so the runner re-advances it. Text is positional or piped via stdin.
yothere resume <id> Flip a thread to resumed (re-advance it) without adding a reply.
yothere status Print a spoken-prose summary of the fleet (text).
yothere say Speak the fleet summary aloud (macOS say).
yothere listen Start the live voice loop: speak to spawn, get status, reply, or capture a note.
yothere board [--open] Build the standalone fleet board. --open opens it in your browser.
yothere tasks <discover|refresh|show> Brain-discovered task source: find where your to-dos live, refresh the cache, or show the current source.
yothere invite create [...] Mint a signup invite code (hosted mode). See the flags below.
yothere park <id> Pause a thread.
yothere kill <id> [--archive] [--force] Remove a thread, or archive a recoverable copy.

Key flags

spawn

yothere spawn "<task>" [--focus] [--yes] [--mode auto|planning]

  • --focus pins the first spawned thread as the focus thread.
  • --yes spawns even on a low-confidence parse. Without it, a low-confidence task prints a clarifying question and stops (no surprise spawn).
  • --mode auto|planning forces the scope. Omit it and each task is classified automatically.

preset accepts the same --focus and --mode flags: yothere preset <key> [arg] [--focus] [--mode auto|planning].

say and listen

yothere say [--lang en|es|de] [--tts say|kokoro]

yothere listen [--ptt] [--once] [--lang en|es|de] [--tts say|kokoro] [--model small|medium] [--device <n>]

  • --ptt is push-to-talk (press Enter to talk) instead of the hands-free wake word.
  • --once does a single capture, routes it, and exits (a smoke test).
  • --model picks the speech-to-text model size.
  • --device overrides the sounddevice input index.

The voice deps are the voice extra. If they are missing, yothere listen reports what to install.

invite create

yothere invite create [--code <code>] [--uses <n>] [--budget <usd>] [--email <addr>] [--expires <iso8601>]

Mints a signup invite for hosted mode (requires RELAY_AUTH_MODE=hosted). --uses defaults to 1, --budget sets the per-tenant daily cost cap in USD, --email binds the code to one address, and --expires takes an ISO 8601 timestamp (e.g. 2026-12-31T00:00:00Z).

kill

yothere kill <id> [--archive] [--force]

  • --archive moves the thread to a recoverable archive within the fleet tree instead of deleting it.
  • A hard delete is irreversible. An interactive shell prompts for confirmation; a non-interactive caller must pass --force. Prefer --archive to keep a copy.

Module commands

Some surfaces run as Python modules rather than yothere subcommands. These are the operator-run engine, the service installer, and the standalone servers.

Command What it does
python -m yothere.runner once Advance the fleet one tick and print the JSON summary. This is the default when no verb is given.
python -m yothere.runner loop The always-on advance engine. A single-instance file lock prevents a second loop from double-spawning workers.
python -m yothere.runner_watchdog A one-shot liveness check that nudges you if the runner is down or crashlooping. Run it on a schedule.
python -m yothere.onboarding status Print every setup step with its live state.
python -m yothere.onboarding apply <step> [--args <json>] [--yes] Apply one onboarding step. --args is JSON, --yes skips the confirmation prompt.
python -m yothere.service install [--cockpit] [--dry-run] Write the service wrappers and units and load them. --cockpit also installs the cockpit service; --dry-run prints the plan and changes nothing.
python -m yothere.service uninstall [--dry-run] Stop and remove the units and wrappers (keeps your env and threads).
python -m yothere.service status Report the liveness of the installed units.
python -m yothere.voicecall.pipeline serve Serve the voice pipeline. serve is the default verb; call places an outbound call. Needs the voice extra.
yothere-mcp The MCP server console script, so any MCP client can drive a fleet. Needs the mcp extra to run.
Note Every RELAY_* environment variable also accepts its YOTHERE_* sibling. Lead with the YOTHERE_* names; the RELAY_* forms are legacy aliases kept for back-compat.

Next steps