@asymmetric-ai/cli
v0.2.0
Published
Spin up high-fidelity local SaaS clones for AI agents and evals.
Maintainers
Readme
@asymmetric-ai/cli
Spin up high-fidelity local SaaS clones for AI agents and evals.
asym runs production-grade clones of real SaaS apps (Slack today, more coming) on
your machine in one command — seeded with realistic data and exposing the real
HTTP API plus a queryable database. Point an agent at it, run your evals, reset to a
clean state, tear it down. No accounts, no rate limits, no flaky third-party
sandboxes.
Requirements
- Docker running locally (clones run as containers)
- Node.js ≥ 18
Install
# zero-install trial
npx @asymmetric-ai/cli quickstart
# or install globally
npm i -g @asymmetric-ai/cli
asym quickstartThe CLI installs two equivalent commands: asym (recommended) and asymmetric
(alias). Use whichever you like.
Quickstart
asym quickstartThis spins a seeded Slack clone and prints everything you need to use it: a
ready-to-run curl against its live API, the SQL to read its state, and the
commands to reset or tear it down.
# read the clone's state
asym query <id> "SELECT username FROM users" --json
# reset to the seeded baseline anytime
asym reset <id>
# tear it down
asym destroy <id>Common workflows
# see what you can spin
asym ls --templates
# create one or more clones from templates, seeded on create
asym spin slack --seed acme-corp
# list running clones
asym ls
# print a clone's bot + user API tokens (for programmatic access)
asym tokens <id>
# run SQL (read-only by default; --write to mutate)
asym query <id> "SELECT * FROM channels"
asym db <id> # print a psql shell command instead
# lifecycle
asym stop <id> # stop, keep data
asym start <id> # start it back up
asym reset <id> # drop + re-migrate + re-seed
asym destroy <id> # remove entirelyEnvironments
An environment is the top-level primitive: a composition of one or more clones managed as a unit.
asym env spin <environment.yaml>
asym env statusCommand reference
| Command | Description |
| --- | --- |
| quickstart | One command: spin a seeded Slack clone and show how to use it |
| spin <template...> | Create and start one or more clones from templates |
| env | Create and manage environments (compositions of clones) |
| status | ls | List running clones (or templates with --templates) |
| seed <id> | Seed data into a running clone (fixtures and/or AI-generated) |
| query <id> [sql] | Run SQL against a clone's database (read-only by default) |
| db <id> | Print the command to open a psql shell into a clone |
| tokens <id> | Show a clone's bot + user API tokens |
| reset <id> | Reset a clone to a clean seeded state |
| start <id> / stop <id> | Start / stop a clone without destroying data |
| destroy <id> | Tear a clone down and remove its registry entry |
| logs <id> | Stream container logs for a clone |
| verify <template> | Inspect a template's live API surface + fidelity score |
| doctor | Reconcile the local registry against Docker (--fix to repair) |
| upgrade [id] | Check for a newer clone image and repin clones to it |
| login | Connect to a control plane (cloud mode; local needs no login) |
| completion | Print a shell completion script |
Run asym <command> --help for the full options of any command.
Configuration
- State lives in
~/.asymmetric/(override the base dir withASYM_HOME). - Local mode needs no login or account.
Shell completion
asym completion >> ~/.bashrc # or ~/.zshrcCompletes the top-level subcommands for both asym and asymmetric.
Support
Docs, releases, and issue tracker: https://github.com/asymmetric-ai/cli — open an issue.
License
Proprietary. Copyright © Asymmetric. All rights reserved. See LICENSE.
