Reusable self-learning engine for agent workflows
Project description
agent-learner
Reusable learning control plane for coding-agent workflows.
agent-learner helps you:
- capture learned rules from agent work
- keep repo-scoped and global learning assets in one canonical global store
- review candidates and promote useful rules
- use a dashboard UI for history, rules, and promotions
It is a learning system, not a unified wiki layer.
It is designed to layer onto existing agent environments rather than replace them.
Start here
If you want the shortest one-line setup, use one of these:
pipx install "agent-learner[web]" && agent-learner dashboard --project-root "$PWD" --open
npx @cafitac/agent-learner@latest dashboard --project-root "$PWD" --open
If you want a preflight check first, run doctor before dashboard.
The dashboard defaults to 127.0.0.1:8766 to avoid common local MCP/gateway
ports such as 8765.
doctor tells you whether the dashboard can run now, what is missing, and the next command to use.
Choose your path
1. Published Python package
pipx install "agent-learner[web]" && agent-learner dashboard --project-root "$PWD" --open
2. npm / npx wrapper
npx @cafitac/agent-learner@latest dashboard --project-root "$PWD" --open
3. Source checkout
./bin/dashboard.sh doctor
./bin/dashboard.sh --open
4. Optional Docker path
docker compose up --build
Docker is optional convenience only. It is not the primary OSS install path.
Typical workflow
- Install the adapter you want to use first
- Codex is the most established path
- Hermes is available as an explicit experimental opt-in
- Run
doctor - Open the dashboard
- Review rules, candidates, and history
- Promote reusable learning assets after review; repo scoping is tracked by metadata, not separate local stores
Core concepts
Global-first learning storage
- canonical durable learning lives under
AGENT_LEARNER_HOME(default~/.agent-learner/) - events, candidates, history, rules, and indexes are stored in that global home
- repo-specific behavior is selected by repo identity, learning scope, and provenance metadata rather than by a project-local storage root
- existing
<project>/.agent-learner/and.codex/references/learning/assets are treated as legacy migration sources, not normal fallback stores agent-learner storage-doctor --project-root "$PWD" --format jsonreports the canonical home, global artifact counts, legacy source state, migration markers, warnings, and source-specific suggested next commands such as Codex-only bootstrap for unmigrated.codex/references/learning/files- Codex, Claude, and Hermes can be installed at user scope while still resolving the active repo from
cwd - external wiki/KB systems remain separate and are not part of the canonical learning lifecycle
Indexed retrieval and pruning
- rules are indexed into machine-readable metadata under
$AGENT_LEARNER_HOME/index/rules.json - a human-readable summary is also written to
$AGENT_LEARNER_HOME/index/index.md - retrieval uses the index first, then loads only the top matching rules
approvedrules are injected by default;needs_reviewanddeprecatedstay out unless explicitly requested- use
agent-learner rebuild-index --project-root "$PWD"if you want to force a full reindex after manual edits
Main runtime
The primary UI/runtime path is:
- FastAPI backend
- built React dashboard frontend
Static dashboard generation and stdlib-only serving still exist, but they are secondary paths.
Key commands
agent-learner doctor --project-root /path/to/repo
agent-learner storage-doctor --project-root /path/to/repo --format json
agent-learner dashboard --project-root /path/to/repo --open
agent-learner bootstrap
agent-learner bootstrap --adapters hermes
agent-learner review-candidates --project-root /path/to/repo
agent-learner history --project-root /path/to/repo --latest-per-rule --last 10
agent-learner history-summary --project-root /path/to/repo --by adapter-decision
agent-learner overview --project-root /path/to/repo --format json
agent-learner rebuild-index --project-root /path/to/repo
agent-learner update
Bootstrap note:
agent-learner bootstrapis now the only install entrypoint- default
bootstrapinstallscodex,claude,hermes - use
agent-learner bootstrap --adapters hermesif you only want Hermes
Repository shape
src/agent_learner/— Python corefrontend/— React + Vite dashboard UIbin/— shell / wrapper entrypointstests/— CLI, lifecycle, wrapper, and dashboard testsdocs/— install, architecture, release, and smoke docs
Docs
-
Start here:
docs/install.md— install and run pathsdocs/quickstart.md— shortest command sequences
-
Release and publish:
docs/publish-smoke-checklist.md— post-publish smoke matrixdocs/release-process.md— tag order and release flowdocs/distribution.md— Python core vs npm wrapper strategy
-
Architecture:
docs/architecture.mddocs/adapter-convergence.mddocs/scope-learning-system.mddocs/storage-independence-and-provenance.md
-
docs/install.md -
docs/quickstart.md -
docs/architecture.md -
docs/adapter-convergence.md -
docs/scope-learning-system.md -
docs/storage-independence-and-provenance.md -
docs/distribution.md -
docs/publish-smoke-checklist.md -
docs/release-process.md -
docs/prerelease-checklist.md
Status
Current implemented areas:
- local/global learning split
- merged retrieval
- candidate/rule/history lifecycle
- dashboard UI
- global promotion and sync
- npm wrapper + source checkout helper
- Hermes experimental adapter with user-scope config.yaml-based hook wiring and runtime smoke coverage
Release note
If you are validating a release, use:
python scripts/release/publish_smoke_check.py --json
python scripts/release/published_runtime_smoke.py --project-root /path/to/repo --json --skip-commands
Or from a source checkout:
./bin/publish-smoke.sh --json
Then follow docs/publish-smoke-checklist.md.
Wrapper convenience
Common wrapper aliases now work directly:
agent-learner rebuild-index --project-root "$PWD"
agent-learner bootstrap
agent-learner bootstrap --adapters hermes
agent-learner update
agent-learner completion zsh
Shell completion
Zsh:
echo 'source <(agent-learner completion zsh)' >> ~/.zshrc
source ~/.zshrc
Bash:
echo 'source <(agent-learner completion bash)' >> ~/.bashrc
source ~/.bashrc
Project details
Release history Release notifications | RSS feed
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 agent_learner-0.3.29.tar.gz.
File metadata
- Download URL: agent_learner-0.3.29.tar.gz
- Upload date:
- Size: 171.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61bfcb958bd5c857f0e303fb25ccc4975272749c4b7e2b0c2bce72f6c335053e
|
|
| MD5 |
5d17926e8e028af587586c1af09a5368
|
|
| BLAKE2b-256 |
c31825ba307a0423749b9a2a45541bda0beda4b198e12c5f1bbd9d8b73dcee52
|
Provenance
The following attestation bundles were made for agent_learner-0.3.29.tar.gz:
Publisher:
pypi-publish.yml on cafitac/agent-learner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_learner-0.3.29.tar.gz -
Subject digest:
61bfcb958bd5c857f0e303fb25ccc4975272749c4b7e2b0c2bce72f6c335053e - Sigstore transparency entry: 1396941319
- Sigstore integration time:
-
Permalink:
cafitac/agent-learner@f92df986ac3326f8c9493942220973d89054d385 -
Branch / Tag:
refs/tags/py-v0.3.29 - Owner: https://github.com/cafitac
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@f92df986ac3326f8c9493942220973d89054d385 -
Trigger Event:
push
-
Statement type:
File details
Details for the file agent_learner-0.3.29-py3-none-any.whl.
File metadata
- Download URL: agent_learner-0.3.29-py3-none-any.whl
- Upload date:
- Size: 138.7 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 |
e34fcce733681653958d5cc09736b6f57749e3b2142464e7c2e1376e93646372
|
|
| MD5 |
f6b167bd0f10d1a64c26a9ead06468d0
|
|
| BLAKE2b-256 |
e5c908c7169a4ddc94e25b0fcb7303e9669280e7c405abfaf038e8d80f085c98
|
Provenance
The following attestation bundles were made for agent_learner-0.3.29-py3-none-any.whl:
Publisher:
pypi-publish.yml on cafitac/agent-learner
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_learner-0.3.29-py3-none-any.whl -
Subject digest:
e34fcce733681653958d5cc09736b6f57749e3b2142464e7c2e1376e93646372 - Sigstore transparency entry: 1396941327
- Sigstore integration time:
-
Permalink:
cafitac/agent-learner@f92df986ac3326f8c9493942220973d89054d385 -
Branch / Tag:
refs/tags/py-v0.3.29 - Owner: https://github.com/cafitac
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@f92df986ac3326f8c9493942220973d89054d385 -
Trigger Event:
push
-
Statement type: