Athena
A local-first memory, decision engine, and governance harness for AI agents — portable across IDEs.
Own the state. Rent the intelligence. Persistent memory, structured reasoning, and governed AI agents that work across any LLM — stored as plain Markdown and JSONL on your disk across Claude Code, Antigravity, Cursor, Gemini CLI, and VS Code.
Quickstart · How It Works · SDK & MCP Tools · Docs · Why Athena? · Safety
The Problem
You've spent months training ChatGPT to understand you. Then a model update resets the personality. You switch to Claude or Gemini — you start from zero. Worse, platform memory is designed to agree with you faster, not to stress-test your assumptions when stakes are high.
Athena moves the memory, problem-framing, and decision layer to your machine: plain Markdown and JSONL ledgers that you own, git-version, and mount into any IDE. The model is just whoever's on shift.
Quickstart
git clone https://github.com/winstonkoh87/Athena-Public.git && cd Athena-Public
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[local]" # lightweight — no cloud deps
athena init --ide claude # or: antigravity, cursor, gemini, vscode, kilocode, roocode
athena doctor # expect 0 failures
Then type /start in your IDE's AI chat panel. Work normally. Type /end to save.
Full install (cloud sync + cross-encoder reranking):
pip install -e ".[full]"See Getting Started for Windows, advanced config, and Supabase setup.
How It Works
┌───────────────────────────────────────────────────────────────────┐
│ Your IDE (Claude Code / Antigravity / Cursor / Gemini / VS Code) │
└───────────────────────────────┬───────────────────────────────────┘
│ MCP Server (18 tools) + Lifecycle Hooks
▼
┌───────────────────────────────────────────────────────────────────┐
│ Athena SDK (src/athena/) │
│ ├── 1. Memory & RAG: /start (~2K boot), hybrid search + reranker │
│ ├── 2. Problem Framing: VOI calculator, falsifier & R1-R13 gates │
│ ├── 3. Decision Engine: EEV, 1/3 Kelly, Ruin, MCDA, Monte Carlo │
│ └── 4. Governance: Lambda risk router, ruin blocker, secret scan │
└───────────────────────────────┬───────────────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────────┐
│ Your Disk (Plain Markdown + JSONL receipts/ledgers — git-native) │
│ └── Optional: Supabase pgvector (cloud sync) + DuckDB (analytics)│
└───────────────────────────────────────────────────────────────────┘
Three boot modes, one compounding loop:
| Mode | Boot | Token Cost | When |
|---|---|---|---|
| Lightweight | Just chat, then /end |
~500 | Quick questions (SNIPER, Lambda < 10) |
| Standard | /start → work → /end |
~2K–10K | Daily engineering & analysis (STANDARD, Lambda 10–30) |
| Deep | /ultrastart → work → /ultraend |
~20K | High-stakes strategy & architecture (ULTRA, Lambda > 30) |
What Ships in the SDK
Athena is not just a prompt pack — it ships executable Python engines and two Model Context Protocol (MCP) servers (athena.mcp_server and athena.duckdb_mcp_server):
| Subsystem | Module / MCP Tool | What It Computes / Enforces |
|---|---|---|
| Hybrid RAG & Context Gate | mcp_server.py (smart_search, context_gate) |
Document-level RRF fusion across BM25 FTS5 + pgvector + filename headers + ONNX cross-encoder rerank; Lambda risk-tier routing (SNIPER / STANDARD / ULTRA) |
| Problem Framing & VOI Ledger | intelligence/frame_ledger.py (frame_open, frame_validate, frame_resolve, frame_status) |
Value of Information (EVI) stop-rule, falsifiable hypothesis pre-registration, R1–R13 commitment gates (loop budget, surviving contingency branch, irreversible ruin check), LUCK outcome-band gate, and Brier calibration scoring |
| Quantitative Decision Engine | intelligence/gto_engine.py (decision_screen) |
Deterministic evaluators for Expected Economic Value (eev), One-Third Kelly (kelly), Absorbing-Barrier Ruin (ruin), MCDA with ruin vetoes (mcda), Decision Monte Carlo (decision-mc), Scenario Robustness (robustness), Barbell (barbell), and SHA-256 receipts (.athena/decision_receipts.jsonl) |
| Local Analytical SQL | duckdb_mcp_server.py (query, profile, list_tables, export_result) |
Zero-dependency DuckDB engine for profiling and querying large CSV, JSON, and Parquet datasets without exhausting LLM context windows |
| Runtime Governance & Safety | core/governance.py, core/permissions.py, .agent/scripts/hook_*.py |
Capability permission gates, Protocol 509 crisis safety screen, 14/16 destructive command blocker, secret egress scanner, and Doom-Loop circuit breaker |
What's enforced in code vs. by prompt
Most AI-agent READMEs state every claim in the same confident voice. This one doesn't.
| Claim | Status | Evidence |
|---|---|---|
| Storage & hybrid retrieval — memories stored and surfaced when relevant | ✅ Shipped (code-enforced) |
Hybrid RAG with document-level RRF + cross-encoder rerank, hardened through logged regressions |
| Portability — Markdown and JSONL on your disk, movable across models | ✅ Shipped (structural) |
Plain files on disk — inspect the repo |
| Quantitative decision screening — EEV, 1/3 Kelly, Ruin, MCDA, Monte Carlo | ✅ Shipped (code-available) |
gto_engine.py emits SHA-256 receipts (107 tests); Stop hook blocks unreceipted numeric engine claims |
Pre-registered problem framing — VOI stop-rule, R1–R13 commitment & falsifier gates |
✅ Shipped (code-available) |
frame_ledger.py validates falsifiers, loop budgets, and Brier calibration (57 tests) |
| Governed autonomy — hooks block destructive commands, ungrounded claims, and secrets | ✅ Shipped (partial) | Ruin check blocks 14/16 destructive commands; 2 shell bypasses are known and tracked |
| Compounding personalization — session 2,000 recalls session 5 | 🟡 N=1 evidence | 2,100+ sessions, 426 active protocols, and 587 case studies by the author; no multi-user study |
| Anti-sycophancy — personalization doesn't silently increase agreement | 🟡 Partial mitigation | Code-enforced meta-awareness gate (Claude Code hook); agent-discretion in hookless IDEs — see honest limits |
Why publish this table? Because the failure mode of this product category is self-mythologizing — describing aspirations in the present tense. Athena's own convention (Epistemic Status) requires labeling every mechanism as
code-enforced,code-available,agent-discretion, oraspirational. This table is that convention applied to the README.
Measured, Not Claimed
# Run the test suite (including frame_ledger and gto_engine red-team suites)
pytest tests/ -v --tb=short
# Screen a decision quantitatively (EEV / 1/3 Kelly / Ruin / MCDA / Monte Carlo)
python -m athena.intelligence.gto_engine --action mcda --help
# Validate a pre-registered problem frame against R1-R13 commitment gates
python -m athena.intelligence.frame_ledger calibrate
# Run the local KV cache & TTFT benchmark (Ollama / llama.cpp)
python scripts/benchmark_kv_cache.py --model qwen2.5-coder:14b
# Run the retrieval evaluator yourself (requires Supabase keys)
python examples/scripts/evaluator.py --gold-set .agent/eval/gold_set.json
| Metric | Value | Verification Command |
|---|---|---|
| Local TTFT Scaling (2K Boot) | ~35x–50x speedup vs 32K | python scripts/benchmark_kv_cache.py |
| Retrieval Hit@5 (Strict) | 0.569 (37 / 65) | python examples/scripts/evaluator.py |
| Retrieval MRR@5 (Strict) | 0.472 | python examples/scripts/evaluator.py |
| Retrieval Hit@5 (Lenient) | 0.892 (deprecated) | Partial substring match (inflated) |
| Unit & Red-Team Tests | 710+ passed (100%) | pytest tests/ |
| Secret Leaks (1,248+ commits) | 0 detected | Gitleaks + privacy_scan.py in CI |
| Code Quality & Lints | 0 ruff findings | ruff check src/ |
Anti-Goodhart Invariant: Why did our reported Hit@5 shift from 0.89 to 0.57? Lenient substring matchers count partial word overlaps as "hits," inflating benchmark scores by ~36% without improving retrieval. We killed the lenient matcher because vanity metrics mask regressions. See the full breakdown: Anti-Goodhart Benchmarking in RAG.
Agent Compatibility
| IDE | Config file | Tested |
|---|---|---|
| Claude Code | CLAUDE.md |
✅ |
| Antigravity | AGENTS.md |
✅ |
| Cursor | .cursor/rules.md |
✅ |
| Gemini CLI | .gemini/AGENTS.md |
✅ |
| VS Code + Copilot | .vscode/settings.json |
✅ |
| Kilo Code | .kilocode/rules/athena.md |
✅ |
| Roo Code | .roo/rules/athena.md |
✅ |
Documentation
| Doc | What it covers |
|---|---|
| Getting Started | Install, configure, first session |
| Your First Session | 20-minute guided tutorial |
| How It Works | 4-pillar architecture, search pipeline, and decision gates |
| Why Athena? | Philosophy, problem classification, use cases, cost analysis |
| Engineering Depth | Technical deep dives and honest limits |
| CLI Reference | All commands |
| FAQ | Common questions |
| Safety | Limitations and responsible use |
| Changelog | Release history |
Contributing
PRs welcome. Please read CONTRIBUTING.md first.
The codebase uses ruff for linting, pytest for tests, and CI must pass before merge.
MIT License · Contributing · Safety · Security · Code of Conduct
Built and battle-tested solo across 2,100+ sessions by Winston Koh.
Clone it. Boot it. Make it yours.
Metadata
Release files for athena-agent 10.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| athena_agent-10.0.6.tar.gz | 6.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| athena_agent-10.0.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.9 MB
Release files / athena_agent-10.0.6.tar.gz
| Download URL | athena_agent-10.0.6.tar.gz |
|---|---|
| Size | 6.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
926fb3351bf1ed4f9a150d0353108f50eb255b7f674d3195aab33d5642c74ab2
|
|
BLAKE2b-256 checksum How to use checksums |
54a064f1fef8b91536eee11fa73b69e4350f77fdfb3052ed7a58189953059f75
|
| 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 Oct 17, 2026.
Transparency logRelease files / athena_agent-10.0.6-py3-none-any.whl
| Download URL | athena_agent-10.0.6-py3-none-any.whl |
|---|---|
| Size | 321.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
987bcd9734786cdbceb0642d4507fc287f3e38918a51c60e9e141a60121a99e9
|
|
BLAKE2b-256 checksum How to use checksums |
cbe5c5eb9eef7b391042853a9ef86517d32a8ef1717821f3004a0f167aaa78a6
|
| 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 Oct 17, 2026.
Transparency log