Skip to main content

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)

  1. BM25 (SQLite FTS5, built-in) — always on.
  2. Vector (fastembed) — install with [semantic]; results ranked by cosine.
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aegis_docs-0.2.0.tar.gz (28.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aegis_docs-0.2.0-py3-none-any.whl (30.7 kB view details)

Uploaded Python 3

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

Hashes for aegis_docs-0.2.0.tar.gz
Algorithm Hash digest
SHA256 976fef00245c8afa3d7bf3f4855221f8c9a963b4e0481a1bedeb35137433cfa6
MD5 34c75415b6517b808c916204883cb915
BLAKE2b-256 b326160a0afcf2b5dec2598e6cbf1088ccf7dc6d9cd5df53e6db8e4a7322d400

See more details on using hashes here.

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

Hashes for aegis_docs-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 773c2a1ff7e84d205e311b16385aef5511502cc575f29944a34a5df6d33088f5
MD5 e5cc2cebd97ce136ea7735f71e644ae9
BLAKE2b-256 73e145a837441b607314539374245336568599d252413ffb433cbbe135d70d94

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page