OpenAugi
Your augmented knowledge base for Agentic work.
Human Context for Agents
You've become the bottleneck.
Your notes are scattered. Your AI can't reach them. Every conversation starts from zero.
Claude and ChatGPT memory keep you stuck in a weird bubble.
You've built years of thinking in Obsidian, Google, ChatGPT — ideas, decisions, threads you've followed and dropped. But when you talk to your agent, none of that context exists. You repeat yourself. You lose threads. The AI that's supposed to help you think doesn't know what you've been thinking about.
OpenAugi fixes this. It turns your personal data vault turned into a knowledge graph that agents can search, traverse, and understand — semantically, by keyword, by tag, by time. One SQLite file. One MCP server. Everything stays on your machine.
Status: Alpha.
pip install openaugiand go. Evolving — expect rough edges. Apache-2.0 licensed.
Quick Start
pip install openaugi
# Configure and run
openaugi init # one-time: vault path, embedding model, API key
openaugi up # sync vault + start MCP server + watch for changes
Then register with Claude and start asking questions about your notes.
What It Actually Does
Obsidian Vault --> split --> extract --> embed --> SQLite --> MCP Server --> Claude
^ |
└------- derived views written back to your vault <-----┘
Ingest: Splits your vault by headings, extracts tags and links, builds a graph of blocks and links in SQLite. Embeds everything for semantic search. Watches for changes and re-ingests automatically.
Query: Claude gets MCP tools to search (semantic + keyword), traverse your knowledge graph, fetch full context, and understand how your ideas connect. Writes are scoped to an OpenAugi/ folder in your vault — your own notes are never touched.
One command:
openaugi up ← ingest + file watcher + zzz dispatch + task agent + MCP server
ZZZ dispatch: Write zzz: <instruction> anywhere in your notes — any capitalization works (zzz, ZZZ, Zzz). The file watcher detects changes, ingests the block, and writes a task file to OpenAugi/Tasks/. The task watcher picks it up and launches a Claude Code agent in a named tmux session. Attach any time with tmux attach -t <task_id>. The agent's behavior is governed by a skill file you edit in Obsidian. See Getting Started.
Review pass (write-back): The loop that keeps the knowledge base maintained. On trigger ("run the review pass"), an agent routes new blocks to your area/project notes as graph links, regenerates derived view notes under OpenAugi/Views/ — a where-did-I-leave-off head per area/project plus a Dashboard — and nominates structure changes (new tags, new notes) for your approval. Agents never edit your notes; views are regenerable caches. See Review Pass.
Capture grammar — three tokens: qqq on its own line splits blocks · zzz: dispatches a task immediately (file watcher acts at ingest) · aaa: is a filing instruction that stays inert in the block until the next review pass reads it. Nothing else to learn.
Why This Exists
Most "AI + notes" tools are cloud services that want your data. Or they're RAG demos that chunk your files and call it a day.
OpenAugi is different:
- Your data stays yours. One SQLite file on your machine. No cloud. No account.
- Graph, not chunks. Tags, links, and documents are first-class nodes. Claude can follow connections, not just match keywords.
- Time-aware. Your notes have history. OpenAugi preserves it — recently created, hub velocity, threads you dropped.
- Composable. MCP tools that Claude calls directly. No middle layer, no wrapper app.
This started as a personal tool to make Claude useful with a large Obsidian vault. It works well enough that it might be useful to others.
Values
- Privacy as foundation — your data stays on your machine
- Open by default — Apache-2.0 licensed, all code public
- Augment, stay human — amplify your thinking, don't replace it
- Composable ecosystem — building blocks that work together
Data Model: Give Agents a Map
Most agent systems do brute-force retrieval — semantic search that stuffs the context window with raw documents. That's a magnifying glass in a warehouse. Agents need a map.
OpenAugi's data model is two tables — blocks and links:
- Blocks — raw content (documents, entries, tags) with deterministic identity and optional
augi_tagsfrom agent classification (same taxonomy as your own tags, stored DB-side only) - Links — typed edges (contains, groups, links_to, routed_to) that let agents traverse connections they wouldn't find through search alone
Classification is tags; membership is links. Tags say what kind of thing a block is (one closed taxonomy, whether you or the agent applied it). routed_to links say which area/project threads a block belongs to — a block can belong to many, or none.
Five retrieval modes — semantic, keyword, graph traversal, time-based, direct lookup — all operating on the same graph.
Read the full data model | Based on Context Engineering is Index Design
Read the guide to agentic knowledge bases
Clustering & Cluster Weather
Where this sits in the pipeline: ingest and embedding happen automatically (openaugi up / the file watcher embed every block as it lands). Clustering is offline and on-demand — it never runs during ingest, so a fresh database has no clusters until you run it:
openaugi cluster --dry-run # tune params, no writes
openaugi cluster # write context_block:cluster nodes + a run snapshot to DB
openaugi cluster-weather # growth/death report vs the previous snapshot (--json for agents)
Configured as named passes in ~/.openaugi/config.toml. Both shipped passes are document-level k-means (each document mean-pooled to one vector — long transcripts get one vote, not 150): a coarse pass (dims=96, k=10) surfaces life areas, and a concepts pass (dims=1536, k=8 within each area) surfaces the recurring ideas inside them. Block-level HDBSCAN was tested and retired — long documents dominate density and everything else becomes noise (see clustering-findings).
Every committed run also records a snapshot (cluster membership per pass), and openaugi cluster-weather diffs the latest snapshot against one a window ago — which clusters grew, shrank, were born, or died, plus recent writing activity per cluster. This feeds the cluster-weather lens: say "apply lens cluster-weather" and the agent turns the report into Dashboard nominations ("AI distillation service grew +8 notes in 14d — distill it into a note?").
Cluster assignments land in each data_block's metadata (cluster_assignments.{pass_id}), making them queryable and renderable without joins. See Clustering for config, the weather data model, SQL queries, and param tuning.
Documentation
- User Guide — day-to-day manual: entry points, the capture-to-view loop, trust rules, triggering a pass, the lens system in brief
- Getting Started — full install guide, CLI reference, MCP tools, Claude registration
- Architecture — data model, processing layers, module map, design decisions
- Data Model — philosophy, block kinds, navigation pattern, four-layer architecture
- Clustering — clustering + cluster weather: config format, data model, snapshots & diffs, SQL queries, param tuning
- MCP Server — tool reference and tuning
- Review Pass — the write-back loop: routing, capture grammar (
qqq/zzz:/aaa:), derived views, Dashboard nominations - Task Dispatch — optional Obsidian → tmux dispatch: write a task, watcher launches a Claude Code agent in a named session
- Remote Access — Cloudflare Tunnel setup for Claude mobile
Development
.venv/bin/pip install -e ".[dev]"
./scripts/check.sh # lint + types + tests
See ARCHITECTURE.md for the full system map.
Contract fixtures
Three text/file contracts couple this repo to OpenAugi Mobile and are
enforced only by lenient parsers: the Dashboard nomination grammar, the
context-pack.json shape, and mobile's capture daily-note anchors. The
golden fixtures live in tests/fixtures/contracts/
and are the shared source of truth — the mobile repo vendors copies of them.
tests/test_contract_fixtures.py pins openaugi's side.
When a contract changes: regenerate the context-pack sample with
.venv/bin/python scripts/gen_contract_fixtures.py (it runs the real builder
over tests/contract_corpus.py; the two Markdown fixtures are hand-edited),
run pytest, then in the mobile repo run scripts/sync-contract-fixtures.sh
and its npm test. Both suites must pass before either repo ships — a
green fixture on one side and a stale copy on the other is the drift these
tests exist to catch.
License
Apache-2.0
Release files for openaugi 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openaugi-0.2.1.tar.gz | 596.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openaugi-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 783.5 kB
Release files / openaugi-0.2.1.tar.gz
| Download URL | openaugi-0.2.1.tar.gz |
|---|---|
| Size | 596.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6505585eb3cf457a8280ad8a47f5c6d6bd5c0f9035b4540dac39c38b06d3d24e
|
|
BLAKE2b-256 checksum How to use checksums |
d018f7f1366fc5bd2d777018468c9f7d3a6eb174a74fe0520365fd7decdf33e8
|
| 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 Aug 23, 2026.
Transparency logRelease files / openaugi-0.2.1-py3-none-any.whl
| Download URL | openaugi-0.2.1-py3-none-any.whl |
|---|---|
| Size | 186.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e65f4b57320201822a7e2fb83abecf7d2dc43854578563e917d1a34664d315fe
|
|
BLAKE2b-256 checksum How to use checksums |
383ccf9588739d798463de0cdf7452477a02a2cb9dada3342ee35b8b360d5b0a
|
| 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 Aug 23, 2026.
Transparency log