Self-hosted guidance distribution for coding agents
Project description
AGH gives teams one place to publish, version, assign, and pull reusable agent instructions and skills into their repos.
Use it when agent guidance needs the same discipline as infrastructure: reproducible changes, clear ownership, and self-hosted runtime.
Why AGH
- Centralize guidance — publish shared
AGENTS.md,CLAUDE.md, and skill files once. - Version every change — packs are immutable SemVer releases assigned to projects.
- Keep repos deterministic — each workspace pulls a manifest, records
.agh/lock.toml, and applies only the chosen agent. - Run it yourself — host the server with Docker, SQLite, and persistent
/datastorage.
How it works
Pack author ── publish ──▶ AGH server ── assign ──▶ Project
│ │
│ ▼
SQLite + /data Repo workspace
│
├─ AGENTS.md + .opencode/skills/
└─ CLAUDE.md + .claude/skills/
Each developer chooses one agent for a workspace:
agh agent select opencode # or: agh agent select claude
AGH stores that choice in .agh-cache/preferences.toml; you do not commit it.
Demo source: docs/assets/agh-workspace-demo.tape.
Quick start
Run the server with the published Docker image:
docker compose up -d
curl http://127.0.0.1:8912/api/v1/health
Install the CLI:
curl -fsSL https://raw.githubusercontent.com/giulianotesta7/AgentGuidanceHub/main/scripts/install.sh | sh
Or use uv directly:
uv tool install --force agh
Log in with the first owner token:
agh login \
--url http://127.0.0.1:8912 \
--email owner@example.com \
--token "$(docker run --rm -v agh-data:/data busybox cat /data/secrets/initial_owner_token)"
Then work from a linked repo:
agh sync
agh agent select opencode # or: agh agent select claude
agh pull --dry-run
agh pull
agh agent
The default Compose image is:
ghcr.io/giulianotesta7/agent-guidance-hub:${AGH_IMAGE_TAG:-latest}
Pin production deployments with a release tag:
AGH_IMAGE_TAG=0.2.0 docker compose up -d
What gets committed
Commit the shared workspace state:
.agh/project.toml.agh/lock.toml- the generated target your team wants reviewed, such as
AGENTS.mdorCLAUDE.md
Do not commit local cache state:
.agh-cache/
AGH downloads packs to .agh-cache/packs/ and stores each developer's agent choice in .agh-cache/preferences.toml.
AGH generates skill targets under .claude/skills/ or .opencode/skills/ for the selected agent. Commit them only if your team wants agent skills reviewed in Git.
Docs
| Guide | Use it for |
|---|---|
| Quickstart | First Docker run, login, project link, and workspace apply flow. |
| Installation | CLI installer, checkout install, PATH troubleshooting, and uninstall. |
| Packs | Create, publish, and list instruction/skill packs. |
| Projects | Create projects and assign packs to repos. |
| Admin | Bootstrap owner, users, roles, tokens, and local config. |
| Workspace guide | Repo setup, workspace apply behavior, markers, skills, lockfile, and Git rules. |
| Operations | Docker runtime layout, /data, logs, healthcheck, backup, and upgrades. |
| Contributing | Issue-first workflow, PR rules, and validation commands. |
| Security | Vulnerability reporting and supported security scope. |
Status
AGH is an early self-hosted release for teams that want to own their agent guidance. It ships as a PyPI package and a GHCR server image.
Development
uv sync
uv run pytest
For local server builds and development, see Operations.
Project details
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 agh-0.2.1.tar.gz.
File metadata
- Download URL: agh-0.2.1.tar.gz
- Upload date:
- Size: 133.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
986a5356be65a57d984add56bce60671f73970737cfbc6ee776e1c7d608cac1a
|
|
| MD5 |
2041932e3408255beba38467c3504a68
|
|
| BLAKE2b-256 |
116c16dfae3a81a55d75e21f890ea66047a3f062a34cfc7a8f627f12d556945b
|
Provenance
The following attestation bundles were made for agh-0.2.1.tar.gz:
Publisher:
release.yml on giulianotesta7/AgentGuidanceHub
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agh-0.2.1.tar.gz -
Subject digest:
986a5356be65a57d984add56bce60671f73970737cfbc6ee776e1c7d608cac1a - Sigstore transparency entry: 1715104618
- Sigstore integration time:
-
Permalink:
giulianotesta7/AgentGuidanceHub@16bb01bde64e16c2b0b45fcb94ee88dc66df3d5f -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/giulianotesta7
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@16bb01bde64e16c2b0b45fcb94ee88dc66df3d5f -
Trigger Event:
push
-
Statement type:
File details
Details for the file agh-0.2.1-py3-none-any.whl.
File metadata
- Download URL: agh-0.2.1-py3-none-any.whl
- Upload date:
- Size: 57.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a77cd72f9abb2f468c7c8e0ac7ce3916ab8ebedc72966dc7bcae4f691a6cd813
|
|
| MD5 |
62c118f04af3cffda56d3d4f1be4a8bb
|
|
| BLAKE2b-256 |
829852183f96d542347879b09ae109126cbcddc127a58d9da2fcb3409027fa64
|
Provenance
The following attestation bundles were made for agh-0.2.1-py3-none-any.whl:
Publisher:
release.yml on giulianotesta7/AgentGuidanceHub
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agh-0.2.1-py3-none-any.whl -
Subject digest:
a77cd72f9abb2f468c7c8e0ac7ce3916ab8ebedc72966dc7bcae4f691a6cd813 - Sigstore transparency entry: 1715104653
- Sigstore integration time:
-
Permalink:
giulianotesta7/AgentGuidanceHub@16bb01bde64e16c2b0b45fcb94ee88dc66df3d5f -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/giulianotesta7
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@16bb01bde64e16c2b0b45fcb94ee88dc66df3d5f -
Trigger Event:
push
-
Statement type: