Air-gapped local documentation service for AI coding agents
Project description
Aegis Docs — core (MVP)
A service that returns Claude a pointer + snippet for the libraries in a project's
stack. Corpus traversal happens locally (0 Claude tokens). Ships as a pip package with
an aegis CLI.
Layers (degrade gracefully)
- BM25 (SQLite FTS5, built-in) — always on.
- Vector (fastembed) — install with
[semantic]; results ranked by cosine. - LLM judge (Ollama) — OFF by default; needs a 7b+ model. Small models grade unreliably; rely on cosine + the calling agent.
Install (macOS / Windows / Linux)
Docker — pull from the registry (any OS, recommended)
docker pull lebovskiis/aegis:latest # multi-arch: amd64 + arm64
docker run -p 127.0.0.1:8080:8080 lebovskiis/aegis:latest
The same image runs on Intel/AMD and Apple Silicon/ARM.
pip (any OS with Python 3.10+)
python3 -m venv .venv
. .venv/bin/activate # Windows: .venv\Scripts\activate
pip install '.[semantic]' # service + embeddings (recommended)
# pip install . # BM25-only
Run (CLI)
aegis ingest "fastapi==0.115" --vault ./vault # fetch + index docs
aegis serve --vault ./vault # start service (no LLM)
aegis locate "how do I stream a response" --lib fastapi # query it
aegis health
aegis libs
aegis add fastapi --version 0.115 # index a lib on demand (connected mode)
LLM judge toggle (--llm true|false, default false)
# enable later, pointing at a SEPARATE, capped LLM container:
aegis serve --llm true --llm-host http://localhost:11434 \
--llm-model qwen2.5:7b-instruct --threads 2
--threads caps model CPU; the model also unloads after each call (frees RAM).
HTTP API (what the agent calls)
GET /health GET /libs
POST /locate {query, lib?, version?} -> {found, results:[{anchor,file,lines,snippet,score,grade}]}
POST /add {lib, version?} (connected mode only)
Docker
docker compose up --build # capped (mem 1g, cpu 1), loopback only, no LLM
The image bakes docs + the embedding model so the container runs offline.
For the project's CLAUDE.md
See claude-snippet.md.
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 aegis_docs-0.2.0.tar.gz.
File metadata
- Download URL: aegis_docs-0.2.0.tar.gz
- Upload date:
- Size: 28.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
976fef00245c8afa3d7bf3f4855221f8c9a963b4e0481a1bedeb35137433cfa6
|
|
| MD5 |
34c75415b6517b808c916204883cb915
|
|
| BLAKE2b-256 |
b326160a0afcf2b5dec2598e6cbf1088ccf7dc6d9cd5df53e6db8e4a7322d400
|
File details
Details for the file aegis_docs-0.2.0-py3-none-any.whl.
File metadata
- Download URL: aegis_docs-0.2.0-py3-none-any.whl
- Upload date:
- Size: 30.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
773c2a1ff7e84d205e311b16385aef5511502cc575f29944a34a5df6d33088f5
|
|
| MD5 |
e5cc2cebd97ce136ea7735f71e644ae9
|
|
| BLAKE2b-256 |
73e145a837441b607314539374245336568599d252413ffb433cbbe135d70d94
|