Skip to main content
A fresh clone is empty. Seeding puts it into a known starting state so your agent run begins from the same place every time. Hone Environments have two ways to seed, and you can use both.

Fixtures — deterministic and reproducible

A fixture is a named pack of SQL applied directly to the clone’s database. Same fixture, same rows, every time. This is what you want for scored, repeatable evals.
Or seed on spin in one step:
Available fixtures come from the template’s seed.fixtures glob (./seeds/*.sql). acme-corp is the bundled Slack example. Every template supports fixtures.

AI seeding — realistic and varied

AI seeding asks an LLM for a dataset, then creates it through the clone’s REST API — not by injecting SQL. That means every record goes through real signup, real auth, and real validation, so the data is referentially sound the same way a human using the product would produce.
The generator produces a Slack-shaped workspace (workspaces, channels, messages) and drives the Slack API to create it — so AI seeding targets the Slack clone today. For the other templates, use fixtures. Set ANTHROPIC_API_KEY to enable it; without the key, --ai is skipped with a warning rather than failing. The model is claude-haiku-4-5. What it does, in order:
1

Generate

Claude returns a dataset: a workspace, users, channels, and messages.
2

Sign up + create

The first user signs up and creates the workspace; remaining users sign up and join.
3

Channels + messages

Channels are created and joined, then messages are posted as their authors.
4

Count

Written and rejected records are tallied. Rejections are best-effort — a few bad records don’t fail the whole seed; up to five warnings are shown.

Default volumes

The default brief is “a small, fast-moving software startup.” The generation volume sets the size — medium is the default:

Fixtures vs AI: which to use

You can combine them: load a fixture for the deterministic backbone, then layer AI data on top.

Reset replays the seed

hone env reset <id> drops the database, re-runs migrations, and re-applies the clone’s last seed. So once a clone is seeded, getting back to that exact starting state for the next trial is one command — no rebuild. To reset every clone in an environment at once, use hone env reset <name>.