Skip to content

Introduction

For sixty years, enterprise knowledge management has oscillated between two failing options. Option 1: hand-encode structure — taxonomies, ontologies, knowledge graphs built by experts. Expensive to build, impossible to maintain as reality changes. Option 2: skip structure entirely — wikis, file shares, and now RAG. Searchable, but unintelligent. You can ask “what do we know about the deployment pipeline?” but the system cannot tell you what it doesn’t know, cannot resolve that “Calvin” and “the CTO” are the same person across documents, and cannot answer “what did we believe about this on March 1st?”

Astrocyte is the third option. LLMs extract structure automatically — entities, relationships, facts — and a deterministic harness verifies, governs, and queries that structure. Structure emerges from content; it is not hand-encoded. The system gets smarter as more is retained, without any manual curation.

Four diagnostic tests separate systems that pass the third-option bar from systems that are sophisticated RAG with extra steps:

TestThe questionWhat it proves
Gap analysis”What don’t we know about X?”Reasons about absence — not just retrieval of what’s present
Entity resolution”Is ‘Calvin’ the same person as ‘the CTO’?”Structured evidence chains, not cosine similarity
Time travel”What did we believe about X on March 1st?”Immutable history with as-of queries
Sovereignty”Can this run fully on our own infrastructure?”Self-hosted, no data leaving the org

Astrocyte implements all four in the current 0.9.x line. The project will declare v1.0.0 GA after the eval gates validate those capabilities against the release bar.

Your agent ──→ Astrocyte ──→ Storage backend
(any framework) │ (pgvector + Apache AGE on PostgreSQL,
│ Qdrant, Neo4j, Elasticsearch, …)
Policy layer
(PII, access control, quotas,
dedup, rate limits, audit)
  • retain — ingest content, extract entities and facts, deduplicate, and store into a memory bank
  • recall — search one or more banks and return ranked hits (semantic + keyword + graph), with optional as_of for point-in-time queries
  • reflect — recall relevant memories and synthesize a natural-language answer
  • forget — remove or archive memories, with soft-delete and forgotten_at timestamp for compliance
  • history — run point-in-time recall with as_of
  • audit — ask “what don’t we know?” — scan a bank’s coverage and return gaps, absent topics, and a coverage score
  • compile — opt-in wiki compile that turns raw memories into durable topic pages for higher-quality recall

Astrocyte is not an LLM gateway and not an agent runtime. It does not define orchestration (graphs, tool loops, checkpoints). Your agent framework owns the loop; Astrocyte owns long-term memory, governed retrieval, and synthesis.

ModelBest forHow
LibraryPrototyping, single-process agents, notebookspip install astrocyte — memory runs in-process
Standalone gatewayMulti-agent deployments, microservices, shared memoryDocker Compose — REST API at /v1/retain, /v1/recall, /v1/reflect
Gateway pluginOrgs routing LLM traffic through Kong, APISIX, or Azure APIMThin Lua/XML shim intercepts /chat/completions — zero agent code changes
ConceptWhat it means
BankIsolated namespace for memories — provides tenant isolation, access control boundaries, and per-bank configuration
Policy layerPII scanning, rate limits, token budgets, deduplication, access control — applied to every operation
Provider SPIPluggable backends for storage (VectorStore, GraphStore, DocumentStore) and LLM (complete, embed)
MIPMemory Intent Protocol — declarative routing rules that determine which bank, tags, and policies apply
Time travelEvery memory carries retained_at and optional forgotten_at; recall(as_of=datetime) queries the bank as it stood at any point in time
Gap analysisbrain.audit(scope, bank_id) reasons about absence — what topics are missing, what’s thin, what contradicts — returns AuditResult(gaps, coverage_score)
Entity resolutionRetain-time pipeline stage: extract entities → look up graph candidates → LLM confirms with evidence quote → EntityLink(link_type="alias_of", evidence=quote)
Apache AGEPreferred graph store for the PostgreSQL reference stack (astrocyte-age) — runs inside the same PostgreSQL instance as pgvector, zero additional operational burden

v0.11.0 is the current minor release. It introduces schema-per-tenant isolation across PostgreSQL and AGE, mental models as a first-class SPI, observation scope and invalidation, intent-driven reflect routing, and the four-preset benchmark ablation matrix. The Postgres adapter has been renamed (astrocyte-pgvectorastrocyte-postgres); migration is a single pip uninstall astrocyte-pgvector && pip install astrocyte-postgres.

The v0.9.x line shipped the pre-GA feature surface (wiki compile, time travel, gap analysis, entity resolution, AGE graph adapter); v0.10.x added retrieval quality (HyDE, observation consolidation, multi-query gating, adversarial defense, agentic reflect, fact-level causal links, link expansion). v1.0.0 GA will be declared after the v0.11.x eval gates in benchmarks/gates-baseline.json and gates-hindsight-informed.json pass.

Release notes: CHANGELOG.md

PackageLanguageRole
astrocytePythonCore library (PyPI)
astrocyte-gateway-pyPythonOptional REST gateway
astrocyte-postgresPythonPostgreSQL + pgvector adapter (VectorStore)
astrocyte-agePythonApache AGE adapter (GraphStore) — shares PostgreSQL instance with pgvector
astrocyte-rsRustPlanned native crate; currently a contract stub

This docs/ folder is a Starlight package. From docs/, run pnpm install, then pnpm dev to preview or pnpm build to emit dist/. Source markdown lives in docs/_design/, docs/_plugins/, docs/_end-user/, and docs/_tutorials/docs/scripts/sync-docs.mjs mirrors them into docs/src/content/docs/ for the site. Deployment: .github/workflows/docs.yml.