{"_id":"@backblaze-labs/hermes-b2-backup","_rev":"2-e5327b52e7b320e7e9b5bcc4181e13fc","name":"@backblaze-labs/hermes-b2-backup","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@backblaze-labs/hermes-b2-backup","version":"0.1.0","keywords":["hermes","hermes-agent","nous-research","backblaze","b2","backup"],"license":"MIT","_id":"@backblaze-labs/hermes-b2-backup@0.1.0","maintainers":[{"name":"goanpeca","email":"goanpeca@gmail.com"},{"name":"jdnyc","email":"jdeleon@jdeleon.com"}],"homepage":"https://github.com/backblaze-b2-samples/hermes-b2-backup#readme","bugs":{"url":"https://github.com/backblaze-b2-samples/hermes-b2-backup/issues"},"bin":{"hermes-b2-backup":"bin/hermes-b2-backup.mjs"},"dist":{"shasum":"867f7bcde2a0308cd6ccfd99474979c798773b63","tarball":"https://registry.npmjs.org/@backblaze-labs/hermes-b2-backup/-/hermes-b2-backup-0.1.0.tgz","fileCount":5,"integrity":"sha512-wS/5oQjelJwDNYXVcI9BaJeHRaNcU3nUeiDJ8gavSSEsIIyxwflaH4gL0otCvqq5A3U6lXfRlFVdToNSPynN5w==","signatures":[{"sig":"MEUCIQCGHy3LZUFBiiQNlEPlSyT819oCXNs3Wo7NhY5VinTVSAIgVb219o7GSrqs6WMlOj6UNNOkuE5NzjfH4iIKzL4hu7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8670},"main":"dist/index.mjs","type":"module","types":"dist/index.d.mts","engines":{"node":">=22.5.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"gitHead":"dfcfee25773ce5007b808a9bd37867861cb02bc0","scripts":{"test":"vitest run","build":"tsdown src/index.ts --format esm --dts --out-dir dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"jdnyc","email":"jdeleon@jdeleon.com"},"repository":{"url":"git+https://github.com/backblaze-b2-samples/hermes-b2-backup.git","type":"git"},"_npmVersion":"11.6.0","description":"Back up your Hermes Agent (NousResearch/hermes-agent) state — sessions, memory, skills, config, and secrets — to Backblaze B2: incremental, encrypted, WAL-safe.","directories":{},"_nodeVersion":"24.9.0","dependencies":{"@backblaze-labs/agent-backup-core":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.20.0","vitest":"^4.0.0","typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hermes-b2-backup_0.1.0_1782269859278_0.34881682717131657","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@backblaze-labs/hermes-b2-backup","version":"0.3.0","description":"Back up your Hermes Agent (NousResearch/hermes-agent) state — sessions, memory, skills, config, and secrets — to Backblaze B2: incremental, encrypted, WAL-safe.","type":"module","main":"dist/index.mjs","types":"dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"bin":{"hermes-b2-backup":"bin/hermes-b2-backup.mjs"},"scripts":{"build":"tsdown src/index.ts --format esm --dts --out-dir dist","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit"},"dependencies":{"@backblaze-labs/agent-backup-core":"^0.3.0"},"devDependencies":{"@types/node":"^22.0.0","tsdown":"^0.20.0","typescript":"^5.9.0","vitest":"^4.0.0"},"engines":{"node":">=22.5.0"},"publishConfig":{"access":"public"},"keywords":["hermes","hermes-agent","nous-research","backblaze","b2","backup"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/backblaze-labs/hermes-b2-backup.git"},"_id":"@backblaze-labs/hermes-b2-backup@0.3.0","gitHead":"dfcfee25773ce5007b808a9bd37867861cb02bc0","bugs":{"url":"https://github.com/backblaze-labs/hermes-b2-backup/issues"},"homepage":"https://github.com/backblaze-labs/hermes-b2-backup#readme","_nodeVersion":"24.9.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-z0N9ctYXU/EZpnArezC1d0jyi1kLnBK5SgQGP3LuLTJziRIGMKwXEpzSo0oeX8PA8+0NB+i+mQ+NF/AKpmoT6w==","shasum":"7c7d86efaf050aef30319f50732930edff17dcb6","tarball":"https://registry.npmjs.org/@backblaze-labs/hermes-b2-backup/-/hermes-b2-backup-0.3.0.tgz","fileCount":6,"unpackedSize":9732,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBTSSkEF/BTag4K0GpOSjrygN0Nn6ArQanR78Vu12geUAiBNUFkY7D+vxIk85VChGROVpP+RkQPuHx4s9oMWD/jppQ=="}]},"_npmUser":{"name":"jdnyc","email":"jdeleon@jdeleon.com"},"directories":{},"maintainers":[{"name":"goanpeca","email":"goanpeca@gmail.com"},{"name":"jdnyc","email":"jdeleon@jdeleon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hermes-b2-backup_0.3.0_1782273584863_0.4484035757440483"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-24T02:57:39.136Z","modified":"2026-06-24T03:59:45.181Z","0.1.0":"2026-06-24T02:57:39.446Z","0.3.0":"2026-06-24T03:59:44.998Z"},"bugs":{"url":"https://github.com/backblaze-labs/hermes-b2-backup/issues"},"license":"MIT","homepage":"https://github.com/backblaze-labs/hermes-b2-backup#readme","keywords":["hermes","hermes-agent","nous-research","backblaze","b2","backup"],"repository":{"type":"git","url":"git+https://github.com/backblaze-labs/hermes-b2-backup.git"},"description":"Back up your Hermes Agent (NousResearch/hermes-agent) state — sessions, memory, skills, config, and secrets — to Backblaze B2: incremental, encrypted, WAL-safe.","maintainers":[{"name":"goanpeca","email":"goanpeca@gmail.com"},{"name":"jdnyc","email":"jdeleon@jdeleon.com"}],"readme":"# hermes-b2-backup\n\nIncremental, **encrypted, offsite** backup of your [Hermes Agent](https://github.com/NousResearch/hermes-agent) state — sessions, memory, skills, config, and secrets — to [Backblaze B2](https://www.backblaze.com/cloud-storage).\n\nBuilt on [`@backblaze-labs/agent-backup-core`](https://github.com/backblaze-labs/agent-backup-core).\n\n## How this differs from `hermes backup`\n\nHermes ships a built-in `hermes backup` / `hermes import` that writes a **local** full zip. This tool is complementary: it adds what the built-in doesn't —\n\n- **Incremental** — only changed files upload (SHA-256 diffing), not a fresh full zip every run.\n- **Offsite** — your backups land in B2, not next to the data they protect.\n- **Encrypted at rest** — AES-256-GCM. Hermes' `.env`, `auth.json`, and `state.db` are plaintext on disk; this keeps them encrypted in the cloud.\n\nIt mirrors the live `~/.hermes` directly (WAL-safe SQLite snapshots) — it does not wrap `hermes backup`, so there's no dependency on the Hermes CLI and no full-zip overhead.\n\n## Install & configure\n\n```bash\nnpm install -g @backblaze-labs/hermes-b2-backup\nexport B2_KEY_ID=004... B2_APPLICATION_KEY=K004... B2_BUCKET=my-hermes-backups\nexport B2_ENCRYPTION_KEY=\"a long random passphrase\"   # see Security\n```\n\nOr put these in `~/.config/hermes-b2-backup/config.json`. Optional: `B2_REGION`, `B2_PREFIX`, `B2_SCHEDULE`, `B2_KEEP_SNAPSHOTS`, `B2_ENCRYPT=false`, `HERMES_HOME`.\n\n## Run\n\n```bash\nhermes-b2-backup            # daemon: auto-restore on first run, then scheduled backups\nhermes-b2-backup --once     # single backup then exit\nhermes-b2-backup --install  # install an OS service (launchd / systemd / Task Scheduler)\n```\n\n## What gets backed up\n\nMirrors `~/.hermes` (or `HERMES_HOME`; `%LOCALAPPDATA%\\hermes` on Windows), plus external memory-provider stores (`~/.honcho`, `~/.hindsight`) when present:\n\n- **Included:** `state.db` (WAL-safe snapshot — sessions + message history), `config.yaml`, `.env`, `auth.json`, `SOUL.md`, `memories/`, `skills/` (incl. `.archive/`), `plugins/`, `skins/`, `cron/jobs.json`, profiles, pairing data.\n- **Excluded:** the cloned `hermes-agent/` repo, `node/`/`node_modules`, virtualenvs, all caches, `logs/`, `backups/`/`state-snapshots/`/`checkpoints/`, SQLite `-wal`/`-shm` sidecars, and machine-local runtime files (`*.pid`, `gateway.lock`, `processes.json`, `gateway_state.json`) that would be harmful to restore onto another machine.\n\n## Security\n\n- **Set `B2_ENCRYPTION_KEY`** — separate from your B2 credentials. Hermes stores secrets (`.env`, `auth.json`) and full conversation history (`state.db`) in plaintext on disk; this tool **includes** them (you need them for a working restore) but encrypts the whole mirror at rest. Without `B2_ENCRYPTION_KEY` it falls back to the B2 key and warns.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}