Agent soul transfer — export, absorb, and merge AI agent identities across machines
Project description
🚀 SoulPort — Agent Soul Transfer
.bmis the standard format for AI agent souls. The CLI is just the first consumer.
SoulPort defines a cross-framework standard for AI agent identities — memories, personality, skills, configuration. Export from one machine, absorb into another, watch for changes, rollback when needed.
Migration is the first use case. Evaluation (SoulArena), fusion, version control, and cross-framework interop are next.
Previously known as "BeiMingKungFu" (北冥神功). Renamed to SoulPort in v0.2.0.
Install
pip install soulport
Commands
# Core — transfer
soulport export # Export soul → .bm file
soulport absorb ./agent.bm # Restore soul on a new machine
soulport merge a.bm b.bm -o out.bm # Merge multiple agent souls
soulport inspect ./agent.bm # Preview package contents
# Diagnose
soulport doctor # Five-layer health check + score
soulport diff ./agent.bm # Compare .bm vs current workspace
# Version control
soulport watch # Auto-backup daemon (6h default)
soulport watch --once # Single snapshot for cron/scripts
soulport changelog # Show changes between snapshots
soulport rollback <hash> # Restore to a previous snapshot
Soul Layers
| Layer | Files | What it captures |
|---|---|---|
| 🧠 Memory | MEMORY.md, memory/*.md |
Long-term + daily memories |
| 👤 Identity | SOUL.md, IDENTITY.md, USER.md |
Personality, name, human context |
| ⚙️ Config | AGENTS.md, TOOLS.md, HEARTBEAT.md |
Behavior rules, tool notes, routines |
| 🛠️ Skills | skills/*/SKILL.md |
User-created workspace skills |
| 🔧 System | openclaw.json (sanitized) |
MCP servers, model config |
Soul Lineage
Every snapshot records its parent's hash, forming a lineage chain:
snapshot-1: hash=d7fcf876..., parent=(root)
snapshot-2: hash=5a0ca89d..., parent=d7fcf876...
snapshot-3: hash=1be975f7..., parent=5a0ca89d...
Use soulport changelog to trace changes. Use soulport rollback <hash> to go back.
Security
- API keys/tokens auto-redacted on export (
__SOULPORT_REDACTED__) - Path traversal protection on absorb (
resolve().relative_to()) - tarfile
filter='data'on merge/extract inspectbefore absorb,--dry-runbefore rollback- Pre-rollback auto-backup (opt out with
--no-backup)
File Format
.bm files are compressed archives (tar.gz) containing:
manifest.json— metadata, version, content hash, parent hashworkspace/— agent workspace filesconfig/— sanitized system configuration
Why
.bm? Named after 北冥 (BěiMíng) — the mythical Northern Sea from Zhuangzi's "Wandering Beyond", where a fish transforms into a bird. A soul's form is free.
Supported Frameworks
- ✅ OpenClaw (first-class support)
- 🔜 Claude Desktop, Cursor, Windsurf via adapters
Links
- PyPI: pypi.org/project/soulport
- Soul Arena: soul.polly.wang — upload your
.bm, get a soul portrait - Blog: polly.wang — development stories
License
MIT
Your agent's soul deserves to travel. 🚀
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file soulport-0.4.0.tar.gz.
File metadata
- Download URL: soulport-0.4.0.tar.gz
- Upload date:
- Size: 30.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e17d307243bbd7b205903c96b525ccbdaf1d48731ebec7ee283142fae67e8f5a
|
|
| MD5 |
9e124bdcdb4fbffe7cf9ff0c5a675679
|
|
| BLAKE2b-256 |
758eecd0c3cb16dc7ac4146e7ce32aaa38bfbf8de85b26387a634a28f43a8169
|
File details
Details for the file soulport-0.4.0-py3-none-any.whl.
File metadata
- Download URL: soulport-0.4.0-py3-none-any.whl
- Upload date:
- Size: 31.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63c461d3b0d09cc6283fbaac6b71c178da42bf725fd8426925e7401b5e284015
|
|
| MD5 |
950f8a0daadc392a6cc715abfeb85810
|
|
| BLAKE2b-256 |
44942fff33be5078a3087d00ec4f01d5068f8314ba08899237c05490b4a9c3b9
|