Skip to main content

Agent soul transfer — export, absorb, and merge AI agent identities across machines

Project description

🚀 SoulPort — Agent Soul Transfer

.bm is 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
  • inspect before absorb, --dry-run before 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 hash
  • workspace/ — agent workspace files
  • config/ — 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

License

MIT

Your agent's soul deserves to travel. 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soulport-0.6.1.tar.gz (39.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

soulport-0.6.1-py3-none-any.whl (39.4 kB view details)

Uploaded Python 3

File details

Details for the file soulport-0.6.1.tar.gz.

File metadata

  • Download URL: soulport-0.6.1.tar.gz
  • Upload date:
  • Size: 39.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for soulport-0.6.1.tar.gz
Algorithm Hash digest
SHA256 f524db8ad4acab22b416725afc9eddbb474f0e3750dba86dc8afd8de540523b8
MD5 bdcff132c75c03dabdc03c4d43d8cfc8
BLAKE2b-256 6dfbeeae108094ee36f10cf2ba50e2fb144812d8d753253a67b8782aed2f8ce1

See more details on using hashes here.

File details

Details for the file soulport-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: soulport-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 39.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for soulport-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8bb9ef1de843d8795aef368a5865789886fe9cac9ae568b0ea779ac617a80f45
MD5 4dd4553e6e05c3fc8c94813d86484871
BLAKE2b-256 e01f9041f626290e491779202ac477db1f6e54d22f35f79e01520ae065c59c3a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page