Every task in yothere follows the same shape: you hail it in one line, your paired machine advances it on its own, and it comes back to your inbox only when it needs a human. These five recipes show that loop end to end, with the exact commands and what you’ll see. Every hail below is one the parser actually accepts.
Every recipe below can be dispatched three ways, and they are equivalent:
- CLI:
yothere spawn "<task>" - Cockpit: type the task in the command bar at
/overviewand press Dispatch. - Voice: click Connect and say it out loud.
All three land in the same queue. Your machine leases each turn and runs it locally, on the coding-agent subscription you already have (Claude Code or the Codex CLI). Nothing advances while that machine is off, which is the deal: we never hold your model credentials. When the machine reconnects, the queued tasks drain.
yothere spawn, needs a verb the parser knows: research, scan, draft, review, compare on the reading side, and fix, add, implement, refactor, rename, debug on the code side. (The cockpit's typed box is more forgiving, since typing is deliberate.) It never accepts ship, merge, deploy, or push as the verb, because those are how you APPROVE a result, not how you ask for work. "Send it" approves a draft; it does not start a thread.Recipe 1: Scan the competition
Hail it:
yothere spawn "scan our top 3 competitors"
Your machine leases it on the next tick and the agent starts working in your project directory. You’ll see it in the Working lane with a live activity line: each search, each read, each tool call as it goes.
It runs on its own and pings you exactly once, at the fork that actually needs your judgment. Partway through you might get a question in your inbox, “Which two should I go deep on?”, with the options as one-tap chips and its own recommendation marked. Answer it:
yothere reply <id> "the first two"
It resumes on the next tick and finishes with a one-pager in Done. It asked instead of assuming, and you spent ten seconds on a task that took it twenty minutes.
Recipe 2: Draft the support replies
Hail it:
yothere spawn "draft replies for the support inbox"
yothere reads the inbox, groups what matters, and writes replies, but it never sends. Each drafted reply arrives in your inbox as a draft to send with the text inline and three verbs: Send, Edit draft, Discard. Approve the good ones, edit or discard the rest.
Approve it on the card: press Send in the cockpit (or Edit draft, change the text, then send). On a call you can say “send it” out loud, which records the same approval.
Only those affordances count as an approval. Pressing Send mints a single-use, thread-bound grant that the send-gate honours for exactly one send. A free-text yothere reply <id> "send it" from the CLI does not: it answers the thread, the gate stays closed, and the draft comes back to ask you again.
That yes is enforced on your machine, not promised in a prompt: the send-gate denies the outward action inside the worker turn. The gate is a guardrail, not a sandbox: it holds sends, posts, and pushes, and git push can never be granted at all, but reads and plain GET requests are not contained, so an agent can still read what your work directory and your MCP servers reach.
Recipe 3: Research a decision
Hail it:
yothere spawn "research the SOC 2 options and compare them"
This is the classic ambient task: it runs for a while on its own and surfaces a question only at the fork that needs you, “Type I or Type II first?”, with the two options as chips. Answer it:
yothere reply <id> "Type II"
It resumes and finishes with a sourced comparison in Done: the options, the tradeoffs, and a recommendation, verdict first. You read it when you have a minute; it is a result to review, not a queue to drive.
Recipe 4: Review a contract
Hail it:
yothere spawn "review the vendor contract and flag what's unusual"
review is a read task: it reads the document, flags what stands out, and writes notes. It lands in your inbox as a result to look at, not a meeting. If it hits a genuine fork (“which jurisdiction governs?”) it asks; otherwise it just finishes and the notes are waiting.
Recipe 5: Fix a bug in your repo
Code threads need one setup step: tell yothere which repo you mean. A workspace is a git repo you already have on this machine. yothere never clones it and never holds a git credential.
Register the repo (once):
yothere workspace add site ~/code/my-site
yothere workspace list
Hail the fix:
yothere spawn --repo site "fix the layout shift on the pricing page"
The thread does not run in your working tree. It runs in its own git worktree under ~/.yothere/worktrees/, on its own branch (yothere/<thread-id>-<slug>), so it cannot touch what you are editing and two code threads cannot collide. The agent reads enough of the codebase to match its conventions, makes the change, runs your tests and linter, and commits on that branch. It lands in your inbox as a result with what changed, why, and the commit sha.
Read what it did, from your own checkout:
The branch is already in your repo, so nothing to fetch:
git branch --list 'yothere/*'
git log --oneline main..yothere/<thread-id>-<slug>
git diff main...yothere/<thread-id>-<slug>
Press Ship it and yothere pushes the branch and opens the PR as you. Or ask for changes, or discard it. That call is yours.
git push, gh api and the mutating gh subcommands are on a never-grant list in the send-gate: no approval can mint a grant for them, so a worker turn cannot publish. Ship it is not that turn. It runs the push and the PR host-side, as you, with the login already on your machine, as deterministic git with no model in the loop.--repo is the reliable way to bind a repo, and it is why the recipe above passes it. Two other ways in: name the repo in the hail (“in site, fix the layout shift on the pricing page”), or, with exactly one workspace registered, hail something code-shaped (“fix the flaky test in the auth module”, “add a --version flag to the CLI”), which binds with no flag. A hail that names neither a repo nor anything code-shaped stays unbound and runs in YOTHERE_WORK_DIR, so when you mean a repo, say so. If yothere cannot tell which repo you mean, it asks instead of guessing. A reading task (“research the SOC 2 options”) is never dragged into a worktree.
Presets: named tasks you run on demand
Some tasks you run again and again. Presets are named, repeatable versions of them:
yothere presets # list what's available, with ETAs
yothere preset news-scan "agentic commerce" # run one now
A preset spawns a thread the same way a hail does, and runs immediately. read_only presets (a daily brief, a news scan, a research dive) run fully headless; a gated one (an outreach draft) writes drafts and stops at the send-gate for your approval.
Hailing by voice
Every recipe works hands-free, including the code one (“fix the layout shift on the pricing page” is a hail you can say out loud). Voice is hosted: click Connect in the cockpit, say the task, and watch the transcript stream as the fleet answers back. There is no phone number, no Twilio, and no key to bring, with 120 voice minutes a day (resets daily) so a forgotten call cannot run away. You can also ask “what’s waiting on me?” and it reads your inbox back, answer a blocked thread out loud, say “send it” to approve a draft (it records a real approval), or pick a finished thread back up. Need a moment off-mic? Tap the mic button, or say “mute me”.
The call itself runs on our media worker, not on your machine. The transcript streams into the cockpit live while the call runs, and the call content is deleted from our servers when the call ends: we do not keep it afterward (1.23.0 privacy). The audio is not recorded. While a call is live, treat what you say the way you treat what you type into the cockpit, and see Privacy for the details. English, or neutral Latin American Spanish, is a setting in /settings.
Where to go next
- The full command surface is in the CLI reference.
- The lanes and cards are covered in the Cockpit tour.
- Setting up on a fresh machine? Start with Onboarding.
- Working in Claude Code? Let it hand chunks to the fleet: Delegate from your editor.