Tensile Docs
CLI reference

lifecycle — start, stop, reset, destroy

Move a clone through its lifecycle without rebuilding it.

Four verbs control a clone after it's been spun. All take a clone id and fail with CLONE_NOT_FOUND if it doesn't exist.

reset

hone env reset <id>

Returns a clone to a clean, seeded state without a rebuild — the fastest way to start the next trial from identical input.

It drops the database (terminating live connections), recreates it, re-runs all migrations, restarts the backend to rebind its connection pool, waits for health (90s), and re-applies the clone's last seed if it had one.

  ✓ reset slack-a1b2 (dropped, re-migrated, re-seeded)
ErrorCause
CLONE_NOT_FOUNDNo clone with that id.
HEALTH_TIMEOUTThe backend didn't come back healthy in 90s.
CLONE_START_FAILEDA drop/recreate/migrate/restart step failed.

start

hone env start <id>

Starts a previously stopped clone. Runs docker compose up -d with the clone's saved ports and marks it running. Silent on success.

ErrorCause
CLONE_NOT_FOUNDNo clone with that id.
CLONE_START_FAILEDcompose up failed.

stop

hone env stop <id>

Stops a running clone without destroying its data. Runs docker compose stop (volumes preserved) and marks it stopped. Silent on success. Bring it back with start.

ErrorCause
CLONE_NOT_FOUNDNo clone with that id.
CLONE_START_FAILEDcompose stop failed.

destroy

hone env destroy <id>

Tears a clone down completely: docker compose down -v (containers + volumes), drops the database, frees its ports, and removes it from the registry.

  ✓ destroyed slack-a1b2
ErrorCause
CLONE_NOT_FOUNDNo clone with that id.

How they relate

  spin ──▶ [running] ──stop──▶ [stopped] ──start──▶ [running]
              │                                          │
              │◀───────────────── reset ─────────────────┤  (clean + re-seed)
              │                                          │
              └──────────────── destroy ────────────────┘  (gone)

On this page