CLI Reference
Every command and flag, with import alongside the rest.
If you are coming from Hermes or OpenClaw, you do not have to start empty. atomic-agent import reads the other agentβs state directory and copies your conversation history and scheduled jobs into Atomic Agentβs own stores.
It is a one-shot migration, not a sync. Run it once when you switch, or again later to pick up what you left behind.
Always. --dry-run runs the full reconciliation β reading the source, matching against your existing sessions, detecting conflicts β and then writes nothing. You get the exact report the real run would produce, with none of the consequences.
atomic-agent import hermes --dry-runPreview. Run with --dry-run and read the report: how many sessions, how many cron jobs, and how many conflicts.
Resolve conflicts. If items are flagged as conflicting, decide whether you want --overwrite or would rather leave your existing data alone.
Import. Re-run without --dry-run. You get an interactive confirmation unless you pass --yes.
atomic-agent import hermes [--source DIR] [--preset default|full] [--include a,b] [--exclude a,b] [--migrate-secrets] [--limit N] [--overwrite] [--dry-run] [--yes]| Flag | Default | Description |
|---|---|---|
--source DIR | ~/.hermes, or HERMES_STATE_DIR | Hermes state directory to read. |
--preset default|full | default | What to import. default is sessions + cron. |
--include a,b | β | Add options on top of the preset (sessions, cron). |
--exclude a,b | β | Remove options from the preset. |
--migrate-secrets | off | Also copy allowlisted provider keys into <stateDir>/.env. See below. |
--limit N | no limit | Cap the number of sessions imported. Must be a non-negative integer. |
--overwrite | off | Overwrite destinations that differ instead of flagging them as conflicts. |
--dry-run | off | Preview only; never write. |
--yes | off | Skip the interactive confirmation. |
atomic-agent import hermes --dry-runatomic-agent import hermes --yesatomic-agent import hermes --migrate-secrets --overwriteIf your include/exclude combination leaves nothing selected, the command exits 1 with nothing selected to import rather than doing a silent no-op.
atomic-agent import openclaw [--source DIR] [--agent NAME] [--include a,b] [--exclude a,b] [--limit N] [--overwrite] [--dry-run] [--yes]| Flag | Default | Description |
|---|---|---|
--source DIR | ~/.openclaw, or OPENCLAW_STATE_DIR | OpenClaw state directory to read. |
--agent NAME | main | Which OpenClaw agentβs sessions to import. |
--include a,b | β | Add options (sessions, cron). |
--exclude a,b | β | Remove options. |
--limit N | no limit | Cap the number of sessions imported. |
--overwrite | off | Overwrite differing destinations. |
--dry-run | off | Preview only. |
--yes | off | Skip confirmation. |
atomic-agent import openclaw --dry-runatomic-agent import openclaw --agent main --yesimport on its own is not a command. Running it with no source prints the help text and exits 1:
atomic-agent import # prints help, exits 1atomic-agent import --help # prints help, exits 0An unrecognised source (atomic-agent import claude) also exits 1.
Sessions arrive with a namespace prefix β hermes: or openclaw: β so an imported conversation can never overwrite a native Atomic Agent session that happens to share an id.
Conflicts are detected structurally, on the full transcript rather than just the identifier. Two consequences worth knowing:
--overwrite replaces your side with the sourceβs; without it, your existing data wins and the difference is reported.Hermes stores provider API keys in its own .env. --migrate-secrets copies them into <stateDir>/.env β but only two, and only these two:
| Key |
|---|
OPENROUTER_API_KEY |
AIMLAPI_API_KEY |
The allowlist is hard-coded. Any other variable in the source .env is ignored, as are allowlisted keys with empty values. Both names are identical across the two projects, so the copy is verbatim.
You do not have to use the command line. The TUI has an Import tab with the same two paths, reachable with the /import slash command:
atomic-agent tui# β /importThe panel offers a preview (the same reconciliation as --dry-run) and an execute action that writes sessions, tasks, and β when you ask for it β secrets.
CLI Reference
Every command and flag, with import alongside the rest.
Why local-first
Where imported sessions, tasks, and secrets land in the state directory.
Scheduling
What imported cron jobs become once they are in the task queue.
Configuration
config.json, .env, and the state directory layout.