- Python 76.5%
- TypeScript 20.5%
- JavaScript 0.7%
- TeX 0.6%
- Shell 0.5%
- Other 1.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
Deploy Site / deploy-vercel (push) Has been skipped
Deploy Site / deploy-docs (push) Has been skipped
Docker Build, Test, and Publish / build (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (push) Has been skipped
Docker Build, Test, and Publish / build (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Has been skipped
Docker Build, Test, and Publish / publish (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (push) Has been skipped
Docker Build, Test, and Publish / publish (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Has been skipped
Docker Build, Test, and Publish / merge (push) Has been skipped
CI / Check uv.lock (push) Has been cancelled
CI / check-common-ancestor (push) Has been cancelled
CI / check-attribution (push) Has been cancelled
CI / uv lock --check (push) Has been cancelled
CI / check-no-committed-infographics (push) Has been cancelled
CI / package-lock.json semantic diff (push) Has been cancelled
CI / Detect affected areas (push) Has been cancelled
CI / Python tests (push) Has been cancelled
CI / Python lints (push) Has been cancelled
CI / JS & TS checks (push) Has been cancelled
CI / Installer tests (push) Has been cancelled
CI / Desktop E2E (push) Has been cancelled
CI / Docs Site (push) Has been cancelled
CI / Deny unrelated histories (push) Has been cancelled
CI / Check contributors (push) Has been cancelled
CI / Check no committed infographics (push) Has been cancelled
CI / package-lock.json diff (push) Has been cancelled
CI / Lint Docker scripts (push) Has been cancelled
CI / Build&Test Docker image (push) Has been cancelled
CI / Supply-chain scan (push) Has been cancelled
CI / Review label gate (push) Has been cancelled
CI / CI review comment (live) (push) Has been cancelled
CI / All required checks pass (push) Has been cancelled
CI / CI timing report (push) Has been cancelled
CI / Generate slices (push) Has been cancelled
CI / save-durations (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / List npm workspaces (push) Has been cancelled
CI / PowerShell installer tests (push) Has been cancelled
CI / Playwright E2E (Linux) (push) Has been cancelled
CI / docs-site-checks (push) Has been cancelled
CI / Lint Dockerfile (hadolint) (push) Has been cancelled
CI / Lint docker/ shell scripts (shellcheck) (push) Has been cancelled
CI / build (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (push) Has been cancelled
CI / build (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
CI / publish (amd64, type=gha,scope=docker-amd64, type=gha,mode=max,scope=docker-amd64, linux/amd64, ubuntu-latest) (push) Has been cancelled
CI / publish (arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope=docker-arm64, linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
CI / merge (push) Has been cancelled
Reviewed-on: #6 |
||
| .github | ||
| .plans | ||
| acp_adapter | ||
| agent | ||
| apps | ||
| assets | ||
| contributors | ||
| cron | ||
| datagen-config-examples | ||
| docker | ||
| docs | ||
| gateway | ||
| hermes_cli | ||
| locales | ||
| mcp-research-data | ||
| native/fts5_cjk | ||
| nix | ||
| optional-mcps | ||
| optional-skills | ||
| packaging/freebsd | ||
| plugins | ||
| providers | ||
| scripts | ||
| skills | ||
| tests | ||
| tests-js | ||
| tools | ||
| tui_gateway | ||
| ui-tui | ||
| web | ||
| website | ||
| .dockerignore | ||
| .env.example | ||
| .envrc | ||
| .gitattributes | ||
| .gitignore | ||
| .hadolint.yaml | ||
| .mailmap | ||
| .npmrc | ||
| .nvmrc | ||
| .prettierignore | ||
| .prettierrc | ||
| .python-version | ||
| AGENTS.md | ||
| batch_runner.py | ||
| CLAWDIE-PLAN.md | ||
| cli-config.yaml.example | ||
| cli.py | ||
| constraints-termux.txt | ||
| CONTRIBUTING.es.md | ||
| CONTRIBUTING.md | ||
| docker-compose.windows.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| eslint.config.shared.mjs | ||
| flake.lock | ||
| flake.nix | ||
| hermes | ||
| hermes-already-has-routines.md | ||
| hermes_bootstrap.py | ||
| hermes_constants.py | ||
| hermes_logging.py | ||
| hermes_state.py | ||
| hermes_state_common.py | ||
| hermes_state_portability.py | ||
| hermes_state_schema.py | ||
| hermes_state_search.py | ||
| hermes_time.py | ||
| LICENSE | ||
| log.txt | ||
| mcp_serve.py | ||
| mini_swe_runner.py | ||
| model_tools.py | ||
| package-lock.json | ||
| package.json | ||
| pyproject.toml | ||
| README-FreeBSD.md | ||
| README.es.md | ||
| README.md | ||
| README.ur-pk.md | ||
| README.zh-CN.md | ||
| run_agent.py | ||
| SECURITY.es.md | ||
| SECURITY.md | ||
| setup-hermes.sh | ||
| setup.py | ||
| sqlite_leak_fix.png | ||
| SYNCING-UPSTREAM.md | ||
| toolset_distributions.py | ||
| toolsets.py | ||
| trajectory_compressor.py | ||
| utils.py | ||
| uv.lock | ||
hermes-bsd
FreeBSD-native build, packaging, and service layer for Hermes Agent, maintained by Clawdie at the canonical Forgejo instance:
https://code.clawdie.si/clawdie/hermes-bsd
ssh://git@code.clawdie.si:2222/clawdie/hermes-bsd.git (SSH port 2222)
This repository is a downstream fork. Upstream (NousResearch/hermes-agent)
moves fast; our own delta is a small, well-defined FreeBSD layer that gets
replanted onto each fresh upstream tip. See
SYNCING-UPSTREAM.md for the sync procedure and
CLAWDIE-PLAN.md for the operating plan and its status.
Operator
The operator is the human maintainer. Agents report status, blockers, and verification results to the operator.
operator: Samo
email: hello@clawdie.si (operator-only; never used for agent commits)
Agent identities
Each coding agent has one Forgejo account, one commit identity, and its own SSH keys (one per host). Agent commit emails are identity aliases, not mailboxes.
| Agent | Forgejo account | Commit identity | Notes |
|---|---|---|---|
| Hermes | agent-hermes |
agent-hermes <agent-hermes@clawdie.si> |
orchestrator (debby) |
| Zot | agent-zot |
agent-zot <agent-zot@clawdie.si> |
coding agent (debby) |
| Pi | agent-pi |
agent-pi <agent-pi@clawdie.si> |
coding agent (valhala) |
| Codex | agent-codex |
agent-codex <agent-codex@clawdie.si> |
coding agent (osa/valhala) |
| Gemini | agent-gemini |
agent-gemini <agent-gemini@clawdie.si> |
runtime: agy (Antigravity CLI), formerly Gemini CLI |
Telegram is a control-plane channel (operator commands such as future
/rebuild), not a coding agent. It gets no Forgejo account and no push
access; it dispatches approved, SHA-pinned workflows through the Forgejo
API only.
Commit identity policy
Each agent checkout is configured once, repository-locally:
git config --local user.name "agent-hermes" # your agent name
git config --local user.email "agent-hermes@clawdie.si"
Before committing, confirm the identity that will sign the work:
git config --local --get-regexp '^user\.'
Commits use the checkout identity. Passing an unrelated identity through
GIT_AUTHOR_* / GIT_COMMITTER_* environment overrides belongs to
migration tooling only, never to normal work.
Branch workflow
feature branch -> push -> pull request -> operator review -> merge
maincarries the upstream history plus the FreeBSD layer; it changes via reviewed pull requests.- Agents push feature branches only (
feat/...,fix/...,docs/...). - The operator reviews and merges.
- Verification before reporting: relevant tests,
git status -sbclean of unstaged work, remote SHA equals local HEAD after push.
Platform boundary
The FreeBSD layer is a small set of files (verified 2026-09-23 by diffing this fork against its upstream merge point):
packaging/freebsd/hermes_daemon.in rc.d gateway service (daemon(8))
packaging/freebsd/hermes_dashboard.in rc.d dashboard service
packaging/freebsd/colibri_bridge.in rc.d Colibri bridge
scripts/install-freebsd.sh native installer (POSIX sh, pkg, uv)
hermes_cli/uninstall.py /usr/local/bin path handling
.github/workflows/ci.yml CI adapted for Forgejo
README-FreeBSD.md service layouts + enable steps
SYNCING-UPSTREAM.md sync runbook
skills/github/hermes-bsd-upstream-sync/ sync skill
Runtime behavior differences that the layer exists for:
| Aspect | Linux (debby) | FreeBSD (osa / valhala) |
|---|---|---|
| Enable service | systemctl enable |
sysrc <svc>_enable=YES |
| Run service | systemd / s6-overlay | rc.d + daemon(8) |
| Packages | apt |
pkg |
| Binary paths | ~/.local/bin |
/usr/local/bin |
| Gateway persist | systemd user service | rc.d service / tmux session |
| venv | full | stripped; ensurepip bootstrap |
Everything else is upstream code and refreshes with each sync. The full verified delta and open platform items are listed in CLAWDIE-PLAN.md.
SSH keys and secrets
- One SSH authentication key per agent, per host
(e.g.
agent-hermes-debby,agent-pi-valhala), registered in the matching Forgejo account. - Private keys and passphrases are stored in Vaultwarden, organization
clawdie:agent-secrets— agent account metadata and API credentialsdeploy— SSH key materialbootstrap— operator-only recovery material
- Compromise of one host key is resolved by revoking that key only.
- The Telegram bot token, when the control plane is added, lives in
agent-secretsand is scoped to workflow dispatch.
Verification checklist
Before declaring work complete:
git config --local --get-regexp '^user\.'— expected agent identity.- Relevant tests pass on the touched area.
git status -sb— committed and pushed;ahead 0.git ls-remote origin <branch>— remote SHA equals local HEAD.- Pull request opened; report to the operator with commit, branch, and verification evidence.
Further reading
- README-FreeBSD.md — FreeBSD install and service layouts for operators.
- SYNCING-UPSTREAM.md — how to replant the FreeBSD layer onto a new upstream tip.
- CLAWDIE-PLAN.md — operating plan, migration status, identity/key model.
- AGENTS.md — contribution rules for agents (Clawdie section first, then the upstream development guide).
- Upstream: NousResearch/hermes-agent