Clones
A clone is one running instance of a template. It has:
A clone does not store which environment it belongs to. Membership lives on the
environment (
Environment.members) as the single source
of truth; status derives a clone’s environment by reverse lookup.
Modes
A template declares modes — named sets of services. The first declared mode is the default. Every template ships anapi mode (backend only — the lightest
clone, enough for an agent that talks to the API or MCP server). The Slack
template additionally ships a full mode that adds the frontend UI; the
API-only templates (Stripe, Notion, HubSpot, GitHub, Linear) have api alone.
Pick one with --mode:
Tokens
When a clone’s template has a provision surface (Slack today),spin calls its
bootstrap endpoint once the backend is healthy and mints a default app with a
bot token and a user token. They’re shown once at spin time and stored in
the registry (the clone DB keeps only hashes). Reprint or rotate them with
hone env tokens <id>. Templates without a provision surface
simply have no tokens.
States
A clone moves through a small state machine:hone env doctor flags clones in non-terminal states that need a live check.
Environments
Clones compose into environments — the top-level primitive you point an agent at and score. An environment has a name, a member list (the source of truth for membership), and a rolled-up state (running / partial / stopped / failed). Spin clones straight into one:
environment.yaml and hone env spin it. See
Environments for the full story.
The registry
Everything above is persisted to~/.asymmetric/registry.json — a versioned JSON
file holding clones and environments, rewritten on every
create / destroy / reset / seed / start / stop. It’s plain JSON and
safe to read (tokens are redacted from status/ls):
groups to environments and rebuilt environments from
any legacy per-clone group tags, so no membership is lost on upgrade).
Because the registry is the source of truth, status, doctor, and db work
without touching Docker at all — they just read it. If it ever gets corrupted,
hone env doctor is the recovery path.
Override the registry location with
ASYM_HOME. Point CI at a throwaway
directory so its clones never collide with your local ones.