01 / move
Move your AI agent between apps in one command.
Its instructions, persona, skills, routines and remembered facts, read from one app and written into another. Every move ends with a report: what moved, what was approximated, what was skipped.
- moveone app to another, in one step
- exportany app to a .jetpack file
- importa .jetpack file into any app
claude-code → openclaw · reviewer · 0 secrets found · source not modified
02 / how it works
Export. One file. Import.
move does both steps at once. Apart, they let an agent be sent, archived or checked before it lands.
- Export from any appThe agent is read where the app keeps it. The source is only read, never changed.
- One .jetpack fileA zip that unzips to a working agent folder, on the file names tools already share.
- Import into any appWritten where the target keeps its agents, with the report of what moved.
reviewer.jetpack · 18 KB · move-report.md next to it
03 / apps
Every app, the same door.
Every adapter reads and writes. None of them is the home of the format. An app can ship its own adapter without a change to the package.
- folderany directory with an AGENTS.md: Codex, Cursor, Gemini CLI, Cline and more
- OpenClawthe state directory and the openclaw CLI, routines as cron jobs
- Claude Codesubagents, the project's skills and its memory
- Hermes · Codexwrites profiles or custom agents directly, with skills and supported memory
- OpenBot · Grok Bot · Lettaprepares an import package or script; follow the reported steps to finish in the app
8 adapters · direct transfers and guided handoffs · OPENTELEPORT_EXTRA_ADAPTER for your own
the .jetpack file
A file that is already a folder.
A .jetpack is a zip archive. Unzipped, it is a working agent folder for any tool that reads AGENTS.md and Agent Skills. No new file names, nothing to leave behind.
The manifest, jetpack.json, has a published JSON Schema. Fields only one app understands go under x-<vendor> keys, which other apps ignore. A folder without a manifest is a valid source too.
reviewer.jetpack ├── jetpack.json manifest: id, name, models, capabilities ├── AGENTS.md how the agent works ├── SOUL.md who the agent is ├── skills/<name>/SKILL.md Agent Skills ├── MEMORY.md facts, one bullet each ├── memory/<name>.md notes, carried as they are ├── routines/<name>.json scheduled tasks, arrive disabled ├── files/ only with --include-files └── avatar.png
safety
Boring on purpose.
- Secrets block exports
- Before anything is written, the bundle is scanned for keys, tokens and private keys of known shapes. A finding stops the command and names the file and line, never the secret.
- Routines land disabled
- The same task never runs in two apps without you knowing. --enable-routines keeps them as they were.
- The source is never modified
- move reads a snapshot and writes a copy. Nothing is deleted from the app it came from.
- Nothing is overwritten by surprise
- Same agent, same id: updated in place. Another agent of the same name is written next to it, and --replace asks first.
install
Start with one command.
Node.js 24 or later is all it needs. No account, no configuration, and it never calls a language model or a remote service.
Run npx openteleport for the guided transfer wizard. Keep it on your PATH with npm install --global openteleport, or run it with npx.
github.com/Open-Teleport/openteleport
npmjs.com/package/openteleport
$ npx openteleport --help
move read an agent from one app, write it into another
export save an agent as a .jetpack file
import write a .jetpack file, or an agent folder, into an app
list the agents an app has
inspect what a .jetpack file or an agent folder holds
validate check a bundle against the format and scan it for secrets
adapters the supported apps, and whether each is installed here