Skip to content

shared-goals/hermes-git-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hermes-git-sync

A Hermes Agent skill that version-controls your skills, memories, and config in a personal git repository.

What it does

  • Mirrors your user-created and user-modified skills to ~/my-hermes/my-skills/
  • Mirrors your user-created and user-modified scripts from ~/.hermes/scripts/ to ~/my-hermes/scripts/
  • For modified bundled skills, writes a bundled.diff so you can see exactly what you changed vs upstream
  • Commits and pushes daily (integrates with morning-brief cron)
  • Handles deletions — files that revert to bundled state are removed from the mirror

This solves the problem described in NousResearch/hermes-agent#20352: ~/.hermes/skills/ is unversioned — no history, no rollback, no diff. Instead of making the hermes directory itself a git repo (which conflicts with hermes update), we sync only your changes to a separate repo.

Works well with

hermes-update-workflow — safe hermes update with patch re-application. The template Makefile from this skill includes make update, make check-update, and make patch targets that call into that skill's scripts.

Install

hermes skills tap add shared-goals/hermes-git-sync
hermes skills install hermes-git-sync

Setup

bash ~/.hermes/skills/devops/hermes-git-sync/scripts/setup-my-hermes.sh ~/my-hermes
cd ~/my-hermes
git remote add origin <your-repo-url>
git push -u origin main

Usage

The make targets work from anywhere because setup-my-hermes.sh creates a symlink ~/Makefile → ~/my-hermes/Makefile. Hermes Agent's terminal runs with ~ as the working directory, so make git-sync resolves correctly without cd.

make git-sync        # sync skills + scripts, commit, push
make sync            # sync snapshots only, no commit — inspect in IDE
make install-my-hermes  # re-bootstrap symlinks on a new machine
make dashboard       # start Hermes dashboard on port 9119

If you also have hermes-update-workflow installed:

make update          # safe hermes update with confirmation + patch re-apply
make check-update    # check for new releases and patch PR statuses (no changes)
make patch           # re-apply patches only

Set MY_HERMES_REPO env var if your repo lives somewhere other than ~/my-hermes.

If a skill was previously bundled (tracked in .bundled_manifest) but disappears from the bundled set after an update, make sync asks whether to:

  • keep it as custom (it is converted to user-created and mirrored)
  • remove it from ~/.hermes/skills

Example repo structure

my-hermes/
├── config.yaml         # symlinked from ~/.hermes/config.yaml
├── SOUL.md             # symlinked from ~/.hermes/SOUL.md
├── Makefile            # shortcuts (template from this skill)
├── memories/
│   ├── MEMORY.md       # symlinked from ~/.hermes/memories/MEMORY.md
│   └── USER.md         # symlinked from ~/.hermes/memories/USER.md
├── my-skills/          # mirror of your skills (category structure preserved)
│   └── devops/
│       └── hermes-git-sync/   # example: your own copy of this skill
│           └── bundled.diff   # what you changed vs upstream
├── scripts/            # mirror of ~/.hermes/scripts (modified/user-created only)
│   └── bundled.diff    # optional diff for modified bundled scripts
└── patches/            # *.patch + *.yaml pairs for upstream PRs

Author

shag · Shared Goals

About

Hermes Agent skill: version-control your skills, memories and config via git

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors