> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getasym.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Spin a Slack clone, seed it, point an agent at it, and tear it down.

This walks you from nothing to a running, seeded clone you can point an agent at.
It takes about five minutes, most of which is Docker pulling the image on the first
spin.

By the end you'll have done the whole loop by hand:

1. **Spin** a real Slack clone and confirm it's healthy.
2. **Seed** it to a known starting state.
3. **Inspect** its database to score what happened.
4. **Reset** it for the next trial, then **destroy** it.

Each is one command. The [one-command path](#the-one-command-path) does all of it
for you; the rest of the page is the same thing, step by step, so you understand
each piece.

## Prerequisites

<Check>Docker installed and **running** (`docker ps` should work).</Check>
<Check>Node.js `>= 18`.</Check>
<Check>The CLI available — `npx @asymmetric-ai/cli` or `npm i -g @asymmetric-ai/cli` (see [Installation](/installation)).</Check>
<Check>Optional: `ANTHROPIC_API_KEY` in your environment, for AI seeding.</Check>

<Info>
  The CLI is free to install from npm; clone images are pulled for free on first
  spin. The rest of this page uses the global `asym` command — prefix any of these
  with `npx @asymmetric-ai/cli` instead if you'd rather not install.
</Info>

## The one-command path

If you just want the magic, run:

```bash theme={null}
asym quickstart
```

It preflights Docker, spins a Slack clone, seeds the `acme-corp` fixture, and
prints a ready-to-run `curl` plus the `asym query` to read the clone's state:

```
  ✓ slack-a1b2 ready in 38.2s
    API: http://127.0.0.1:3001/api   ·   seeded: acme-corp
```

The steps below do the same thing by hand so you understand each piece. (Slack is
the default; pass `--template <name>` to quickstart a different one — see
[all templates](#more-templates).)

## 1. Spin a clone

```bash theme={null}
asym spin slack
```

The first spin pulls the image and starts shared Postgres + Redis, so give it a
minute. When it's healthy you get a card with the clone id, its endpoint, and the
programmatic-access tokens it auto-provisions:

```
  ✓ slack-a1b2  (api)  http://127.0.0.1:3001/api  ready in 38.2s
    db clone_slack_a1b2 · env -
    bot token   xoxb-…
    user token  xoxp-…
```

`slack-a1b2` is the **clone id** — you'll pass it to every other command. The
short suffix is random, so yours will differ. The **bot/user tokens** are the
fastest way to point an agent at the clone; reprint them later with
`asym tokens slack-a1b2`. See [Connect your agent](/guides/connect-agent).

## 2. Confirm it's running

```bash theme={null}
asym ls
```

```
slack-a1b2	slack	api	running	-
```

## 3. Seed a known starting state

For a **reproducible** run, load a deterministic fixture:

```bash theme={null}
asym seed slack-a1b2 --fixture acme-corp
```

For **realistic, varied** data, generate it with an LLM (needs
`ANTHROPIC_API_KEY`):

```bash theme={null}
asym seed slack-a1b2 --ai
```

AI seeding asks Claude for a dataset, then creates it *through the clone's own
HTTP API* — real signups, workspace/channel creation, and message posts (the
clone's REST control-plane routes), each performed as the right user so auth and
referential integrity stay intact:

```
  ✓ seeded slack-a1b2  (ai: 20 (0 rejected))
```

## 4. Point your agent at it

Your agent talks to the clone exactly like real Slack, over the endpoint from
step 1. A quick liveness check:

```bash theme={null}
curl http://127.0.0.1:3001/api/health
```

Use that base URL (or the clone's MCP server) as your agent's target, with a bot
or user token as the bearer — everything it does lands in the clone's own
database. The full wiring, with auth and a worked example, is in
[**Connect your agent**](/guides/connect-agent).

## 5. Inspect what happened

Read the database directly to score the run. Queries are read-only by default, so
you can't corrupt the clone:

```bash theme={null}
asym query slack-a1b2 "select count(*) from messages"
```

Get JSON for programmatic scoring:

```bash theme={null}
asym query slack-a1b2 "select id, name from channels" --json
```

Need an interactive shell? `db` prints the exact `psql` command to run:

```bash theme={null}
asym db slack-a1b2
```

Watch the backend live while your agent runs:

```bash theme={null}
asym logs slack-a1b2 -f
```

## 6. Reset for the next trial

`reset` drops the database, re-runs migrations, and re-applies the last seed —
back to an identical starting state, no rebuild:

```bash theme={null}
asym reset slack-a1b2
```

```
  ✓ reset slack-a1b2 (dropped, re-migrated, re-seeded)
```

## 7. Tear it down

```bash theme={null}
asym destroy slack-a1b2
```

```
  ✓ destroyed slack-a1b2
```

This removes the containers, drops the database, frees the ports, and deletes the
clone from your registry.

## More templates

Slack is one of **six** templates that ship today. List them all:

```bash theme={null}
asym ls --templates
```

| Template  | What it clones                                       |
| --------- | ---------------------------------------------------- |
| `slack`   | Slack — RPC Web API, the `{ok}` envelope, MCP server |
| `stripe`  | Stripe — payments, customers, invoices               |
| `notion`  | Notion — pages, blocks, databases                    |
| `hubspot` | HubSpot — CRM contacts, deals, companies             |
| `github`  | GitHub — repos, issues, pull requests                |
| `linear`  | Linear — issues, projects, cycles                    |

`asym spin <template>` works the same for every one. Browse the
[Templates](/templates/slack) section for each one's API shape and fidelity.

## Where to go next

<CardGroup cols={2}>
  <Card title="Connect your agent" icon="plug" href="/guides/connect-agent">
    Wire your agent to the clone over its HTTP API or MCP, with a worked example.
  </Card>

  <Card title="Seeding" icon="seedling" href="/concepts/seeding">
    Fixtures vs AI seeding, and when to use each.
  </Card>

  <Card title="How it works" icon="diagram-project" href="/concepts/how-it-works">
    What spin actually does under the hood.
  </Card>

  <Card title="Environments" icon="layer-group" href="/concepts/environments">
    Compose several clones into one named environment.
  </Card>
</CardGroup>
