Skip to main content

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

Install the published package, then enter the repository you want to gate:

python3 -m venv .venv
. .venv/bin/activate
python -m pip install hermes-gate
cd /path/to/your/git-repository
hermes-gate init
hermes-gate fast
hermes-gate full
hermes-gate doctor

For HermesGate development, run python -m pip install . from a local checkout instead. Release builds verify the tag, package and runner versions, tracked runner, distribution metadata, and packaged source bytes before upload; they also reject versions superseded on PyPI after environment approval.

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.

Metadata

Release files for hermes-gate 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hermes-gate 0.1.4
File Size Uploaded
hermes_gate-0.1.4.tar.gz 61.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hermes-gate 0.1.4
File Interpreter ABI Platform
hermes_gate-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 110.2 kB

Release files / hermes_gate-0.1.4.tar.gz

Download URL hermes_gate-0.1.4.tar.gz
Size 61.3 kB
Tags Source
SHA-256 checksum
How to use checksums
3e39dbae3a5835c9f68598d39b41f38f2e89ab9c2b85a6b4f331bc5e6a635468
BLAKE2b-256 checksum
How to use checksums
23a785ff380ab73b45d6befe46723e7f4b0a1ec73f1515a8ff98bbe21a5fab2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / hermes_gate-0.1.4-py3-none-any.whl

Download URL hermes_gate-0.1.4-py3-none-any.whl
Size 49.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7f9c1393c2d13d92029a2f48c6a047f1f5014c632fd8ffdddcfbc608db9498da
BLAKE2b-256 checksum
How to use checksums
c4e54f70942a209ffa2f16a95d3a4515e4c3cf840ab29920740e8dc001f37878
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page