yothere ships as a single package on public PyPI. The core install is everything you need to pair a machine to the hosted cockpit and run agent turns on it: the CLI, the leaser that picks up queued jobs, the fleet runner, and the board. The optional surfaces (the MCP server, the LLM tiebreak) are extras, so you only pull the dependencies you use.
What you must bring
yothere is a cockpit, not a model. It never holds your model credentials and never bills you for inference. The agents run on your machine, on the subscription you already pay for.
| Requirement | Detail |
|---|---|
| A Mac or Linux machine | Nothing else is supported. On Windows, run it under WSL2 (the systemd path). |
| Python 3.11, 3.12, or 3.13 | The package declares >=3.11,<3.14, and yothere doctor hard-fails 3.14: the pinned media stack does not build there. |
| pipx | Puts yothere in its own isolated environment and on your PATH. |
| Claude Code or the Codex CLI, logged in | yothere drives whichever one you have. It never sees the credential. |
| A machine you can leave open | Every turn runs here. Asleep means nothing advances. |
Install pipx first if you do not have it:
brew install pipx # or: python3 -m pip install --user pipx
pipx ensurepath
pipx is the recommended installer because it is persistent. pipx run and uvx cache their
environments and can be garbage-collected out from under a long-running yothere service, which
is exactly the process that must not disappear.
Install from PyPI
pipx install yothere
That is enough to pair the machine, lease jobs from the hosted cockpit, run each turn locally, spawn
threads, and glance at the board. No API keys are required. Pairing runs a browser device flow:
yothere login prints a short pairing code plus a link to app.yothere.ai/activate, where you
confirm which machine is asking and pick its permission tier, then the CLI saves the per-device
credential (no token is pasted). A headless or SSH-only box pairs the same way: run yothere login
on the box and open the printed link in a browser on any device. For unattended provisioning, an
operator can mint a single-use token on the control plane with yothere admin pair-token and
redeem it via yothere login --url <cp> --token <t>. The Quickstart walks
the whole path.
~/.yothere: threads, data, state, and logs. YOTHERE_HOME moves that root. Your device credential is the exception: it lives at ~/.yothere/credentials.json (mode 0600) and follows YOTHERE_CREDENTIALS, not YOTHERE_HOME, so pointing YOTHERE_HOME somewhere else leaves the credential where it was.Verify
Confirm what you installed:
yothere --version # the installed version
yothere --help # the command surface
pipx list # the package, its Python, and its console scripts
We deliberately keep version numbers out of these docs, since a pinned number goes stale. Compare
what you see against the current release on the
PyPI project page, or run pip show yothere.
Then check the machine itself. doctor reports pass, warn, or fail per check, with the fix for each
one: your Python version and whether it is in an ephemeral cache, the ~/.yothere layout and its
writability, which brain resolves (your Claude Code or Codex CLI, and whether it is authenticated),
the service unit, and your notifier.
yothere doctor
yothere doctor --json # machine-readable
yothere doctor --bundle # a support bundle to send us
For an end-to-end check, run the bundled zero-key demo. It spawns a thread and drives it through the real runner to completion in about 30 seconds, with no API keys and no account:
yothere init --demo
See the Quickstart for what the demo does and what comes after it.
Optional extras
Install extras with the bracket syntax. Quote the argument so your shell does not interpret the brackets.
| Extra | Install | What it adds |
|---|---|---|
mcp |
pipx install 'yothere[mcp]' |
The MCP server surface, so any MCP client can drive a fleet. See the yothere-mcp note below. |
llm |
pipx install 'yothere[llm]' |
An optional LLM tiebreak for routing and scope classification. A deterministic fallback is used otherwise. |
web, postgres, voice) that the hosted service and yothere's own development use. You do not need them. Voice in particular is hosted: you click Connect in the cockpit and talk in the browser, with nothing to install and no key to bring.yothere-mcp console script is installed by the core package, but it needs the mcp extra's dependency to actually run. The tool logic lives in SDK-free helpers, so it imports and tests without the extra; the extra is what lets the server serve.Upgrading
pipx upgrade yothere
If a new release adds dependencies for an extra you rely on, reinstall it with
pipx install --force 'yothere[mcp]'. Your state under ~/.yothere is untouched by an upgrade.
Install from source
There is no public clone URL. A source install requires access to the private beta repository, which
stays private during the beta. Unless you are developing yothere itself and have been granted
access, pipx install yothere from public PyPI is the path: it is the primary, public, and
verifiable way to install. See Trust and provenance for how to verify the package.
If you do have repository access, add extras to an editable install with the bracket syntax, for
example pip install -e '.[mcp]'.
Next steps
- Quickstart: pair this machine, start the leaser, hail your first task.
- Onboarding: the same path with the cockpit’s checklist walking each step.
- Configuration: every
YOTHERE_*environment seam. - CLI reference: every command and flag.