Export and restore your Hermes Agent configuration across machines — including across different operating systems.
hm-portable.sh packages your Hermes Agent config, skills, memory, cron jobs, and plugin configs into a portable directory or .tar.gz archive. Move it to another machine, run import, and your Hermes is ready — same config, same skills, same memory.
- Export — collect config.yaml, SOUL.md, skills (1300+ files), memories, cron, plugins into a portable package
- Import — restore everything on a new machine with automatic backup of existing config
- Cross-OS — auto-detects Linux, macOS, Windows; adjusts OS-specific settings (
auto_source_bashrc,persistent_shell) so you don't have to - Flexible — export as a directory for inspection, or as a
.tar.gzfor easy transfer (scp, Dropbox, USB) - Secure by default — auth tokens and
.envAPI keys require explicit opt-in. Full--no-secretsmode for CI/scripted use - Self-contained — the package includes
setup.shthat runs standalone. No tool dependency, justbash
# Install (one-line)
curl -fsSL https://raw.githubusercontent.com/zpage/hermes-portable/main/hm-portable.sh \
-o /usr/local/bin/hm-portable.sh && chmod +x /usr/local/bin/hm-portable.sh
# Export your Hermes config
hm-portable.sh export --tar --output ~/hermes-backup.tgz
# See what's in the package
hm-portable.sh list ~/hermes-backup.tgz
# Move it to another machine (scp, Dropbox, USB...)
# Then import:
hm-portable.sh import ~/hermes-backup.tgzHermes Agent stores all its configuration in ~/.hermes/ — skills (1300+ files), memories, cron jobs, auth tokens. Moving to a new machine means manually copying all of this and adjusting for OS differences. This tool automates it:
| Concern | Manual | With hm-portable |
|---|---|---|
| Copy skills/ | rsync across 1300 files |
Included |
Adjust auto_source_bashrc for macOS |
Edit config.yaml by hand | ⚡ Auto-detected |
Adjust persistent_shell for Windows |
Edit config.yaml by hand | ⚡ Auto-detected |
| Remember what to include | Usually forget auth.json | Opt-in, explicit |
| Verify integrity | Hope it works | SHA256 checksums in manifest |
| Disaster recovery | Hope you have a backup | Auto-backup before restore |
# Basic — directory mode
hm-portable.sh export
# Tar.gz mode (ready for transfer)
hm-portable.sh export --tar --output ~/hermes-$(date +%F).tgz
# Non-interactive (skip auth/.env prompts)
hm-portable.sh export --yes
# Skip secrets entirely (CI-safe)
hm-portable.sh export --no-secrets
# Include sync state and session history
hm-portable.sh export --include-sync --include-sessionshm-portable.sh list ~/hermes-backup.tgzOutput:
Exported: 2026-05-28T02:33:30Z
Source OS: Linux
Target OS: Linux
From: my-workstation
Version: Hermes Agent v0.14.0
Contents:
✓ config
✓ soul
✓ skills
✓ memories
✓ cron
✓ plugins
✗ sync (not included)
✗ sessions (not included)
✗ auth (not included)
✗ env (not included)
Skills: 1336 files
Memories: 2 files
Total: 121.6 MB
# From a directory
hm-portable.sh import /path/to/.hm-portable
# From a tarball
hm-portable.sh import ~/hermes-backup.tgzThe import script:
- Backs up your existing
~/.hermesto~/.hermes.bak.<timestamp> - Detects your OS (Linux / macOS / Windows)
- Restores config, skills, memories, cron, plugin configs
- Auto-adjusts OS-specific settings in config.yaml
- Restores auth/
.envif included in the package
| Item | Size | Included by default |
|---|---|---|
config.yaml |
~15 KB | ✅ |
SOUL.md |
~2 KB | ✅ |
skills/ |
~112 MB (1300+ files) | ✅ |
memories/ |
~12 KB | ✅ |
cron/ (job definitions) |
~36 KB | ✅ |
plugins/ (config only) |
~712 KB | ✅ |
auth.json |
~10 KB | ❌ (opt-in) |
.env (API keys) |
~21 KB | ❌ (opt-in) |
sync/ (hermes-sync state) |
~44 MB | ❌ (--include-sync) |
sessions/ |
~75 MB | ❌ (--include-sessions) |
state.db |
~69 MB | ❌ (--include-sessions) |
Not included (must install separately on target machine):
- Hermes Agent core (
pip install hermes-agent) - hermes-agent source code (~2.2 GB)
- Node.js runtime (~1.4 GB)
logs/,cache/— machine-specific, regenerated
The setup.sh bundled in every package detects the target OS and auto-adjusts config:
| Setting | Linux | macOS | Windows |
|---|---|---|---|
auto_source_bashrc |
kept as-is | → false |
→ false |
persistent_shell |
kept as-is | kept as-is (with a note) | → false |
sync remote_path |
kept as-is | checked for existence | checked for existence |
No manual editing required. The adjustments are printed during import so you know what changed.
hermes-portable/
├── hm-portable.sh # Main CLI tool (single file, ~30 KB)
├── README.md # This file
├── README.zh.md # Chinese documentation
└── LICENSE # MIT
- Bash 4+ (Linux, macOS, WSL)
- Python 3 (for manifest display in
listcommand) - Common POSIX tools:
curl,tar,sed,grep,find
Hermes Agent must be installed on the target machine before import.
MIT