Skip to main content
Environments are how Hone reproduces and verifies agent failures. Hone mines what’s breaking from your production traffic; an environment is where you reproduce that failure with one command, fix it, prove the fix against a real backend, and prevent it from regressing. Hone Environments began life as the standalone product asymmetric — that product is retired, and its clone engine now ships as this capability of Hone. AI agents act on real systems. They send Slack messages, close issues, refund payments, and update records. That makes them hard to test: a live workspace is risky and non-deterministic, and a pile of mocks is never faithful enough to trust the result. Hone Environments give you the middle ground. The CLI spins up real, running clones of SaaS products on your machine in seconds — each a full backend with a Postgres database, the product’s real HTTP API, real auth, and an MCP server. Close enough to the real product that an agent can’t tell the difference. Disposable enough that you throw it away and spin a fresh one for the next run. Six templates ship today — Slack, Stripe, Notion, HubSpot, GitHub, and Linear — each cloned to match the real product’s API and MCP surface. If you build or evaluate agents, Hone Environments are the safe, reproducible place to point them.

Spin your first clone

Nothing to a running, seeded clone in five minutes.

See how it works

The architecture behind a clone, in one diagram.

Connect your agent

Point your agent at a clone over its HTTP API or MCP.

Browse the CLI

Every command and flag, with real output.

The mental model

Hone Environments have two nouns, at two altitudes.

Clone

One running instance of a SaaS product — a real backend, its own database, real auth. The unit you build and compose.

Environment

A named composition of clones on shared infrastructure. The unit you point an agent at and score.
A clone is faithful enough that your agent operates it like the real thing. An environment is the thing your eval runs against — today one clone, soon several products sharing one identity graph.

The loop

Every environment session is the same five beats. Each is one command.
1

Spin

hone env spin slack creates a clone, allocates ports, runs migrations, and waits until it’s healthy. You get a live API endpoint back.
2

Seed

Load a deterministic fixture for repeatable evals, or generate realistic data with an LLM. Either leaves the clone in a known starting state.
3

Run

Point your agent at the clone’s HTTP API or MCP server. It reads, writes, and acts against a real backend — every action lands in the clone’s own database.
4

Inspect

Read the database directly with query to score exactly what the agent did. Stream logs to debug.
5

Reset or destroy

reset drops and re-seeds to the same starting state for the next trial. destroy tears it down and frees the ports.

Why a clone, not a mock

High fidelity, not stubs

Clones are real NestJS backends on real Postgres with real JWT auth — stateful, referentially consistent, returning authentic errors. Not canned responses.

Reproducible to the row

Every clone has a stable id, its own database, and a recorded seed. reset rebuilds it to byte-for-byte the same starting state.

Scorable

The agent’s work is just rows in a database you own. Read them with query to grade a run objectively, not by scraping output.

Local-first

Everything runs through Docker on your machine. No cloud account, no external dependencies. A connected control-plane mode is planned.

Concepts at a glance

What’s in the box

Next steps

Quickstart

Spin, seed, and point an agent at your first clone.

How it works

CLI, contract, providers, shared infra, and templates.

Connect your agent

HTTP API and MCP, with working examples.

Available templates

The clones you can spin today.