Docs · Migration

Bring an existing agent to Qoren

If you already run Hermes, OpenClaw or Codex on a VPS, a Mac Mini or your own laptop, you do not start over. One script packs what the agent has become, its persona, memory, skills, scheduled jobs and MCP servers, into a single archive. One CLI command turns that archive into a running agent on Qoren, with the same files in the same places.

What moves and what does not

The export copies configuration, not the runtime. Qoren installs the runtime itself, at the version it supports, and then lays your files over it. That is what makes the result reproducible: the agent you get is the one Qoren knows how to run, wearing your agent's memory.

  • Persona: SOUL.md, IDENTITY.md and AGENTS.md become the template's persona and operating manual, so they are versioned with the template and editable from the Memory tab.
  • Memory and skills: Hermes memory/ and skills/, the OpenClaw workspace with its memory/ folder, Codex memories/, rules/ and skills/ are copied into the new agent's runtime home after deploy.
  • MCP servers: read from Hermes config.yaml, openclaw.json or Codex config.toml and re-created as the agent's MCP servers, with their tool filters.
  • Scheduled jobs: cron entries with a five-field schedule become Qoren scheduled tasks. Interval expressions such as every 5m are skipped and listed.
  • Environment variables: the export always carries the names, never the values. Add --with-secrets to carry values too, then --import-secrets on the import to put them in the vault and attach them.
  • Not carried: session history unless you pass --with-sessions, binary files, files over 1 MB, the old install's own agent identity, and model provider keys. Qoren meters models through its own key; bring your own from Settings if you prefer.

Step 1: export on the old machine

Run the script where the agent lives. It finds the runtime under your home directory (or HERMES_HOME, OPENCLAW_HOME, CODEX_HOME), scrubs anything that looks like a key from the config files, and writes one archive in the current directory. It needs only sh, tar and gzip.

  1. 1Read the summaryThe script prints the model it found, the environment variable names, and how many files were skipped as binary or too large. The archive's manifest.json lists every file it packed.
  2. 2Copy the archive somewhere with the CLIThe archive is a plain tar.gz. Move it with scp or any file transfer. If you exported with --with-secrets, treat it like a password file and delete it after the import.

On the VPS or laptop

curl -fsSL https://qoren.sh/migrate.sh | sh

# pick a runtime when more than one is installed, and carry secret values
curl -fsSL https://qoren.sh/migrate.sh | sh -s -- --runtime openclaw --with-secrets

Step 2: preview, then import

Two ways in, same result. In the console, open Agents, choose Import an agent, and pick the archive: it is read in your browser, what was found is shown for review, and Deploy runs the rest. From the terminal, install the CLI with npm i -g @qoren/cli and sign in. A dry run shows exactly what will be created without calling the API; the real run saves a template, deploys the agent, waits for the deploy, and copies the memory and skills into place.

  1. 1A template is savedNamed after the agent unless you pass --template. It carries the persona, operating manual, MCP servers, scheduled tasks and workspace seed files, and goes through the same spend and security review as any other template.
  2. 2Secrets go into the vaultOnly with --import-secrets, and only for names the agent actually uses. Values are stored encrypted and attached to the new agent by name; the CLI never prints them.
  3. 3The agent is deployedThe same twelve-step install as any deploy, followed step by step in the terminal. The model is the one the export used unless you pass --model; if Qoren does not offer that model, pass one it does.
  4. 4Runtime files are copiedMemory, skills and any sessions you included are staged into the agent's workspace and moved into its runtime home as the agent's own user. Pass --no-wait to skip this and copy them later with qoren agent exec.

On your machine

qoren login
qoren env ls

qoren agent import ./qoren-export-hermes-20260904-101500.tar.gz --dry-run
qoren agent import ./qoren-export-hermes-20260904-101500.tar.gz \
  --env env_abc123 --name "Ada" --import-secrets

After the import

Open the agent in the console and check three things before you switch the old install off.

  • Memory: the Memory tab shows the persona that was imported. If the export had no SOUL.md or IDENTITY.md, a placeholder was written for you to replace.
  • Secrets: keys whose values were not in the bundle are listed by the import. Add them in the vault and attach them from the agent's Secrets tab.
  • Messaging: a Telegram or Discord bot token is exported by name, but a channel is connected from the Messaging tab, where Qoren also runs the gateway for you.

Where each runtime's files come from and go to

RuntimeRead fromLands on Qoren as
Hermes~/.hermes: config.yaml, SOUL.md, AGENTS.md, memory/, skills/, cron/jobs.jsonTemplate persona and manual, MCP servers, scheduled tasks; memory/ and skills/ under the agent's HERMES_HOME
OpenClaw~/.openclaw: openclaw.json, workspace/ (SOUL, IDENTITY, AGENTS, USER, MEMORY, memory/), skills/, cron/jobs.jsonTemplate persona and manual; workspace files seeded into the agent's workspace; skills/ under OPENCLAW_HOME
Codex~/.codex: config.toml, AGENTS.md, memories/, rules/, skills/, prompts/; auth.json with --with-secretsAGENTS.md as the persona, MCP servers; memories/, rules/, skills/ and auth.json under CODEX_HOME

Frequently asked questions

No. The console's Import an agent page reads the archive in your browser and runs the same steps. The CLI is there for scripting and for a dry run that prints the plan as JSON.

Keep reading

See it with a real agent.

The fastest way to understand the flow is to deploy a template and watch its first run.

Start free trial