HermesGate
HermesGate turns “run the checks again” into a bounded completion ceremony. It runs the repository's own commands, records exactly which content and tool versions were checked, and reuses a PASS only while those bytes still match.
It has no daemon and no runtime dependencies beyond Python 3.11+ and Git. Lifecycle hooks inspect receipts; they do not repair code, invoke a model, or authorize a push, pull request, or release.
Five-minute quickstart
From a local checkout of HermesGate:
python3 -m venv .venv
. .venv/bin/activate
python -m pip install .
cd /path/to/your/git-repository
hermes-gate init
hermes-gate fast
hermes-gate full
hermes-gate doctor
init detects repository-native Python or JavaScript commands and writes a
reviewable .hermes/gate.toml, a checksum-bound stdlib runner, and a CI
workflow. Existing integration files are not overwritten unless
hermes-gate init --force is explicit.
The copied runner also requires Python 3.11 or newer, even when the project it checks supports older Python versions. Run Gate under a supported interpreter; profile commands may select the project's own interpreter separately.
New default whitespace checks inspect selected working-tree, staged and untracked files using Git's whitespace rules. Existing profiles are preserved; adopting the new check in an existing repository requires a reviewed runner/profile update. The copied runner drains stdout and stderr concurrently while retaining at most 32 KiB of each stream; its truncation flag reports any discarded output.
Completion workflows
| Workflow | Use it for | Receipt boundary |
|---|---|---|
hermes-gate fast |
Short feedback over current changed paths | Exact content digest, selected paths, checks, elapsed time, and command versions |
hermes-gate review |
One bounded semantic review after fast passes | Exact digest, provider version, normalized findings, and suppression count |
hermes-gate full |
Complete repository-local test contract | Exact digest, full checks, elapsed time, and command versions |
A typical local ceremony is:
hermes-gate fast
hermes-gate review
hermes-gate full
hermes-gate boundary commit
The boundary command only verifies configured receipts. It never performs the Git operation or grants owner authorization.
CLI
hermes-gate init [--force]
hermes-gate fast
hermes-gate repair
hermes-gate review
hermes-gate full
hermes-gate boundary commit|push|pr-create|pr-ready
hermes-gate doctor
hermes-gate uninstall-repo
hermes-gate --version
Commands emit JSON with one terminal state: PASS, FAIL,
NOT_APPLICABLE, NOT_CONFIGURED, REVIEW_UNAVAILABLE, PARKED, or
ERROR.
Repository-native default
The generated profile uses argv arrays and the repository's existing Ruff,
pytest, npm, lint, typecheck, test, or build commands. It never installs these
tools. Runtime receipts, baselines, install manifests, and adapter artifacts live
under .git/hermes-gate/; generated tracked source contains no machine-specific
absolute paths.
[gate]
fast_budget_seconds = 8.0
full_required_local = false
[[fast]]
name = "ruff"
argv = ["ruff", "check", "{files}"]
timeout_seconds = 6.0
globs = ["**/*.py"]
{files} expands to separate argv entries. Shell strings are rejected.
Optional primitive adapters
HermesGate packages a standard-library loader and validator for the shared
gate-result/v1 schema. PyGate and QuickGate.js adapters are opt-in and
isolated; HermesGate never downloads or installs them.
PyGate 0.2.0 or newer:
[adapter]
enabled = true
name = "pygate"
argv = ["pygate"]
minimum_version = "0.2.0"
QuickGate.js 0.2.3 or newer:
[adapter]
enabled = true
name = "quick-gate"
argv = ["quick-gate"]
minimum_version = "0.2.3"
Adapter output is written below .git/hermes-gate/adapters/, validated against
the packaged contract, and then normalized into a HermesGate receipt. An absent,
old, or invalid primitive returns ERROR; it never falls through to an
unreviewed installation.
Review and hooks
review requires an exact fast PASS. CodeRabbit agent-mode JSONL is the initial
provider boundary. If it is unavailable, a clean committed diff may use an
installed hermes-pr-review fallback. Unparseable, unauthenticated, timed-out,
or unavailable review output is never relabeled PASS.
install-codex and uninstall-codex are intentionally hidden integration
commands. Codex integration preserves unrelated hook and instruction content.
Claude settings and instruction surfaces remain outside Codex's ownership.
What PASS means
A PASS proves only that the declared commands passed for the receipt-bound local content. It does not prove universal correctness, security, mergeability, public release, adoption, or permission to push, publish, or create a pull request.
See SECURITY.md, CONTRIBUTING.md, and CHANGELOG.md for project policy and release history.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hermes_gate-0.1.2.tar.gz.
File metadata
- Download URL: hermes_gate-0.1.2.tar.gz
- Upload date:
- Size: 50.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df1abe9fee49f4dc632d69a962e09cf66ba86459abd475aca95f597c6c687f6b
|
|
| MD5 |
452807f1b2ad57a1f59fbd8ae164408a
|
|
| BLAKE2b-256 |
412b7c9041a32a31da0ea83a3275df1dd1da5c3c8144fe546d7f37ff71a87b2a
|
Provenance
The following attestation bundles were made for hermes_gate-0.1.2.tar.gz:
Publisher:
publish.yml on hermes-labs-ai/hermes-gate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_gate-0.1.2.tar.gz -
Subject digest:
df1abe9fee49f4dc632d69a962e09cf66ba86459abd475aca95f597c6c687f6b - Sigstore transparency entry: 2734315646
- Sigstore integration time:
-
Permalink:
hermes-labs-ai/hermes-gate@fff2d7c82bc1734ae19175d7172d961117437bc1 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hermes-labs-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fff2d7c82bc1734ae19175d7172d961117437bc1 -
Trigger Event:
release
-
Statement type:
File details
Details for the file hermes_gate-0.1.2-py3-none-any.whl.
File metadata
- Download URL: hermes_gate-0.1.2-py3-none-any.whl
- Upload date:
- Size: 44.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bef0255b4617528bd1e5af3c40720666a1925febe7ae0753b044cac35c6ee8d5
|
|
| MD5 |
11b4099344dfa2861a8f648051e207b2
|
|
| BLAKE2b-256 |
a92672d33fac8ebab4e7cff70cb740e7dd70c4faa831bdbb03b67ace439d12a5
|
Provenance
The following attestation bundles were made for hermes_gate-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on hermes-labs-ai/hermes-gate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_gate-0.1.2-py3-none-any.whl -
Subject digest:
bef0255b4617528bd1e5af3c40720666a1925febe7ae0753b044cac35c6ee8d5 - Sigstore transparency entry: 2734315836
- Sigstore integration time:
-
Permalink:
hermes-labs-ai/hermes-gate@fff2d7c82bc1734ae19175d7172d961117437bc1 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/hermes-labs-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fff2d7c82bc1734ae19175d7172d961117437bc1 -
Trigger Event:
release
-
Statement type: