For the drill, I keep the old VPS powered off. I begin on a replacement host with an empty shell and bring across only the backup ZIP. I treat persistent memory as recovered only after that archive rebuilds the required state.
I run the fresh-VPS test with the original host unavailable. The restored agent has to recover its memory, skills, credentials, schedules, and tool access. If you are evaluating Hermes on a virtual server, treat the server as replaceable from day one. Hermes remains self-managed software, which puts the recovery plan in the operator's hands.
Define Recovery Before Touching the VPS
The recovery target includes several kinds of state:
- Configuration and provider settings
- Memory, sessions, skills, and local agent data
- Authentication material and tool credentials
- Cron jobs and their recent execution state
- Workspace files and any application data stored elsewhere
Before starting, I write down two limits. Recovery point objective, or RPO, is the amount of recent state the business can afford to lose. Recovery time objective, or RTO, is how long the agent may remain unavailable. “We have a backup” offers no testable target for either one.
Run the Fresh-VPS Drill
1. Record the Known-Good Environment
In the runbook, I record the Hermes release, operating system, Python environment, enabled skills, model provider, and external services. Hermes publishes versioned code and notes in its GitHub releases. Keeping the release in the runbook separates restoration problems from upgrade problems.
2. Create a Full Backup
For the full archive, I run:
hermes backup
The official CLI reference says a full backup packages configuration, skills, sessions, and data. The archive includes credentials. I encrypt it, restrict access, and store it outside the server it protects.
Hermes also offers a quick backup for configuration and core state. I use the full form for this drill. The documented exclusions include prior backups and the checkpoint directory, so workspace recovery needs a separate inventory.
3. Provision a Clean Host
On a new VPS with no copied home directory or hidden state, I install Hermes using the official installation instructions:
curl -fsSL <https://hermes-agent.nousresearch.com/install.sh> | bash
Through restoration and validation, I keep the old gateway stopped. This reduces the chance of scheduled jobs or external actions running twice.
4. Import the Archive
Move the encrypted archive through your approved secure channel, decrypt it on the new host, and run:
hermes import /path/to/backup.zip
The CLI documentation advises stopping the gateway before import. I start it after the restore completes and file permissions look correct.
5. Test Recovered Behavior
First, I run hermes doctor to check the installation and configuration. For scheduled work, I use [hermes cron doctor](https://hermes-agent.nousresearch.com/docs/user-guide/features/cron), then inspect recent execution records with hermes cron runs [job-id] --limit 20.
My canary task exercises memory retrieval, one representative skill, and a low-risk tool call. I also test denied actions. A restore that broadens permissions is a security regression. Expected secrets should work, provider-revoked secrets should fail, and a log scan should find no secret values.
6. Measure the Gaps
When the canary passes, I stop the clock. Process launch time is an intermediate marker. I compare the elapsed time with the RTO and measure missing state against the RPO. I add each manual discovery to the runbook or turn it into an automated check.
Keep Checkpoints in Their Lane
Hermes checkpoints and rollback can protect workspace changes during agent activity. They are opt-in, and I keep the off-host backup as a separate control. Restoring local files leaves an email, API mutation, or transaction in another system untouched.
Reliable agent operations need backups for local state, idempotency or approval controls for side effects, and separate recovery plans for external data.
I repeat the fresh-VPS test after material configuration changes and before I need it. A timed restore with a passing canary turns the backup plan into evidence.
Top comments (0)