Hermes config backup
Skill john-data-chen/hermes-agent-backup/skills/devops/hermes-config-backup
Backup Hermes config, skills, memories, and cron jobs. Exclude secrets. Check for info leakage before compressing.From its SKILL.md
npx -y skills add john-data-chen/hermes-agent-backup --skill hermes-config-backupAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 8 commands, including `BACKUP_DIR="/tmp/hermes-backup-$(date +%Y%m%d_%H%M%S)"` and 7 more.
SKILL.md
2.5 KB, 779 tokens by cl100k_base, as published. Nobody here has run it
Hermes Config Backup
Backup essential Hermes files. Exclude secrets and sensitive data.
What to Backup
| Include | Exclude |
|---|---|
config.yaml | .env (API keys) |
memories/MEMORY.md | auth.json (OAuth tokens) |
memories/USER.md | state.db (session store) |
skills/ (all) | sessions/ (transcripts) |
cron/jobs.json | *.lock (0-byte) |
hermes-agent/ (source) | |
logs/, cache/, audio_cache/, image_cache/ | |
.DS_Store |
Workflow
1. Prepare temp directory
BACKUP_DIR="/tmp/hermes-backup-$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
cd ~/.hermes
2. Copy files
cp config.yaml "$BACKUP_DIR/"
mkdir -p "$BACKUP_DIR/memories"
cp memories/MEMORY.md memories/USER.md "$BACKUP_DIR/memories/"
mkdir -p "$BACKUP_DIR/skills"
rsync -a --exclude='*.lock' --exclude='.DS_Store' --exclude='node_modules' skills/ "$BACKUP_DIR/skills/"
mkdir -p "$BACKUP_DIR/cron"
cp cron/jobs.json "$BACKUP_DIR/cron/"
3. Check for info leakage
Before compressing, scan for sensitive data:
# API keys (non-empty)
grep -rE 'api_key:\s*[^'\'']' "$BACKUP_DIR/" | grep -v node_modules
# Tokens
grep -rE 'ghp_|gho_|github_pat_|sk-[a-zA-Z0-9]{20,}' "$BACKUP_DIR/" | grep -v node_modules | grep -v 'example\|sample\|xxx'
# Phone numbers (exclude numeric config values)
grep -rE '\+?[0-9]{1,4}[-.\s]?\(?\d{1,4}\)?[-.\s]?\d{1,4}[-.\s]?\d{1,4}[-.\s]?\d{1,9}' "$BACKUP_DIR/" | grep -v 'timeout\|limit\|max\|min\|bytes\|chars\|sample_rate\|bit_rate'
# Email addresses
grep -rE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' "$BACKUP_DIR/"
If real secrets found → redact before compressing.
4. Compress as zip
ZIP_FILE="$HOME/backups/hermes/hermes-backup-$(date +%Y%m%d_%H%M%S).zip"
mkdir -p "$(dirname "$ZIP_FILE")"
cd "$BACKUP_DIR" && zip -r "$ZIP_FILE" . -x '*.DS_Store'
5. Cleanup
rm -rf "$BACKUP_DIR"
Pitfalls
Never include .env or auth.json. These contain API keys and OAuth tokens.
Always check for info leakage. Even config.yaml may contain API URLs or voice IDs. Mask if needed.
*Exclude .lock files. They are 0-byte and not needed.
Use zip format. Not tar.gz.
Backup path:
~/backups/hermes/hermes-backup-YYYYMMDD_HHMMSS.zip
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.