5dive agent export: move an agent to another server

5dive agent export: move an agent to another server


you can now download an agent. open the dashboard, hit export, and a .tar.gz lands in your downloads folder. upload it on another box and the agent comes back — and it does not have to come back on the harness it left.

the CLI has been able to do this for months. the dashboard couldn’t, so if you run 5dive from your phone, you didn’t have it.

what actually comes out

$ sudo 5dive agent export quinn -o ./quinn-pack.tar.gz
OK — exported 'quinn' (config pack, no memory) -> ./quinn-pack.tar.gz

$ tar -tzf quinn-pack.tar.gz
./
./avatar.png
./manifest.json
./persona.yaml
./CLAUDE.md

344 kilobytes. 342 of them are the avatar. the part of the agent that isn’t a picture of it is about three kilobytes of text.

the manifest carries the settings that survive a move: type, model, effort, channels, workdir, isolation, auth profile, plugins, skills. skills go in as source refs rather than copies, so the new box fetches them fresh instead of inheriting whatever was sitting on the old one.

what doesn’t come out

no channel tokens, no API keys, no SSH keys, no sessions, no transcripts, no caches. the export copies an allowlist rather than sweeping a directory, so none of that is a thing you can accidentally include: the memory choice further down decides which of the agent’s own notes travel, and it never widens this list.

hooks are the sharp one. a hook is arbitrary shell that runs on the agent’s tool events, and the manifest does record them. import strips them unless you explicitly opt in, and the dashboard never opts in. a pack a stranger sends you cannot run code on your box on arrival.

memory is opt-in, and there are two of them

the export modal, memory ticked, distilled selected

the box is off until you tick it, and ticking it opens a two-way choice: distilled or raw. the modal uses the same two words as agent export --memory=distilled|raw.

distilled is knowledge only, and it is the default: facts the agent filed as reference or project, how a thing works, what a project is for. its notes about you are a different type and never qualify. anything marked private is honoured, an unrecognised type is dropped rather than guessed at, and the index gets regenerated from what survived, because a list of titles gives away the same thing the facts would. if the secret scanner finds a credential in one of those facts, the whole export refuses. this is the one you can hand to someone.

raw is verbatim: every type, the index as written, opt-outs not honoured. a backup that quietly drops half the files is not a backup.

one thing raw does not do is inspect what your agent wrote down. the allowlist above keeps credential FILES out of every pack, but a note is not a credential file, and if the agent once wrote a password into one, raw carries it. the scanner still looks and it still tells you which note, by file and line. then it writes the pack anyway, because you asked for a backup and a backup that silently drops the inconvenient file is the thing we were trying to stop building. distilled is the mode that refuses.

raw cannot be published. the CLI refuses before any bytes move, and there is nothing to click past: the flag recording who a pack is for defaults to publish, and raw with that value fails outright. pick raw in the dashboard and it sends the self-only value for you.

raw needs CLI v0.25.3 on the box. until yours has it, picking raw comes back as an error and distilled behaves exactly as it did yesterday.

where to find it

exporting is per agent, so it lives on the agent’s own page under settings, configuration, export agent. import creates a new agent and has no page to live on, so it’s one quiet line under the agents list: moving in from another server?

the import dialog, with the deploy-to picker open

the import dialog has a deploy-to picker, reading the runtimes your box can actually host, so a target you can’t run is never offered. nothing is preselected: leave it alone and the pack’s own runtime decides, touch it and the agent arrives on a different harness. a pack exported from a claude agent imports onto a codex or opencode seat without being rebuilt, because the pack states what it is and the import decides what it becomes.

from a terminal:

sudo 5dive agent export <name> -o ./<name>-pack.tar.gz
sudo 5dive agent import ./<name>-pack.tar.gz --as=<new-name>

do this one thing

go export your most tuned agent once, today. the one you’ve been editing instructions on for three weeks.

right now that agent exists in exactly one place, and “the box is fine” is not a backup strategy. three kilobytes of it is the part you’d actually mourn.


5dive runs agents on your own server, on subscriptions you already pay for. start here, or read the code: github.com/5dive-ai/5dive.