openteleport

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.

  1. Export from any appThe agent is read where the app keeps it. The source is only read, never changed.
  2. One .jetpack fileA zip that unzips to a working agent folder, on the file names tools already share.
  3. 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.

$ 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