memcode docs
Agents

Hermes

Move your Hermes install into memcode with one command: channels, API keys, skills, and memory.

memcode hermes migrate moves your Hermes install into memcode. Run it with no arguments and it reads Hermes's own default location:

memcode hermes migrate

Point it elsewhere only if your Hermes state lives in a non-standard directory:

memcode hermes migrate /path/to/.hermes

There is a dedicated command per source (memcode claw migrate for OpenClaw) rather than one that guesses. If you moved between assistants the old install is still on disk, and auto-detecting between two would quietly import the stale one.

What transfers

From your Hermes installLands in
Channels, bot tokens and allow-listsgateway.yaml + the global .env
Provider API keys like OPENAI_API_KEYthe global .env, under the same names
Skills, any SKILL.md directory~/.memcode/skills
Memory, your long-term memory entriesglobal ~/.memcode/memory.md

Anything that cannot be carried automatically is reported as a note, never dropped silently.

Credentials

Hermes stores bot tokens under the same variable names memcode uses, so they carry over directly, and each platform's allowed_users becomes channels.<name>.allow_from (both authorize on stable ids, not handles). Channels whose credentials do not map the same way (WhatsApp, Signal) are reported so you can finish them with memcode gateway setup.

Your memory comes over

Hermes remembers things across every conversation, and so does memcode. The migration reads your Hermes memory (its ~/.hermes/memories store) and brings it into memcode's global memory, so the agent still knows what it knew before: your preferences, the people and projects you told it about, the facts you built up.

It all lands in ~/.memcode/memory.md, loaded into every session. Open that file any time to read it, edit it, or add to it. Running memcode hermes migrate again refreshes what it imported instead of duplicating it. See Memory for how memcode's global and per-project memory work.

Imported skills

Imported skills are third-party code. The migration copies them into ~/.memcode/skills and flags them so you can review them before trusting them, and it never overwrites a skill you already have. A name collision keeps yours and skips the import.

Open channels

If your Hermes config allows anyone (allow_from: ["*"]), the migration does not bring the wildcard over. It is reported as a note instead. An open channel hands an autonomous agent to anyone who can reach it, so memcode makes you opt into that deliberately rather than inheriting it.

Review the result with memcode gateway setup, then run memcode gateway.

Cron jobs migrate too

Your Hermes cron jobs come with you automatically: recurring jobs keep their cadence, paused jobs arrive paused, and pending one-shots keep their fire time. Jobs that ran a script payload are listed in the migration notes with the command to recreate them — nothing is silently dropped. Manage everything afterwards with memcode gateway schedule list (the cron alias works too).

MCP servers and your agent's soul come too

Your mcp_servers carry over into memcode's user-scope MCP config, available in every project. SOUL.md — your agent's identity — carries over as the same file, byte for byte: ~/.memcode/agents/hermes/SOUL.md. Bind a channel to it and you're talking to the assistant you migrated. A cron job that pinned a model is flagged in the notes: in memcode the model (and thinking effort) lives on the agent (agents.<name>.model, reasoning), so pin it there once and every run that agent answers uses it.

On this page