V0.1 · LOCAL-FIRST · MCP + HTTP
locusd

A pointer index for agentic systems.

The daemon your agents query before they reach for grep, embeddings, or RAG. locusd returns precise structural pointers — never file content — so your context window stays clean and your tools stay fast.

$ cargo install --git https://github.com/locusd-ai/locus locus-cli locus-daemon
µs*
bitmap intersects
7×
fewer context tokens
16
crates · all Rust
[ DAEMON ] LOCUSD
[ CLI ] LOCUS
[ STATUS ] ● LOCAL
▢ BITMAP.INTERSECT● LIVE · 0 HITS
topic:databasetype:source_filelang:rust
∩ = 0 doc_ids returned · u32 · roaring
HOW IT WORKS

Bitmap pre-filter. Vectors only when it pays off.

Most retrieval systems throw every query at an embedding model and pray. Locus runs a roaring-bitmap intersection first — microseconds, no GPU — then sends a small ranked set through a local reranker. The agent gets pointers; the file system stays the source of truth.

01
watch

filesystem watcher debounces edits across your vault + repos

NOTIFY
02
parse

tree-sitter for code (Rust / TS / Python), markdown for prose — pure functions, no I/O

AST-LEVEL
03
enrich

builtin + YAML-defined taggers infer topic · type · complexity · conventions

CACHED
04
index

DuckDB registry · LMDB + Roaring bitmaps · usearch HNSW embeddings

ATOMIC
05
query

bitmap intersect → semantic rerank → return doc_ids + byte ranges

POINTERS
06
serve

locusd exposes MCP for agents and an HTTP API for everything else

AXUM
locus-coreshared types, traits — Box<dyn Trait> everywhere
locus-parsermarkdown — frontmatter, wikilinks, sections
locus-codetree-sitter — Rust / TypeScript / Python
locus-registryDuckDB-backed docs / chunks / bitmap catalog / graph
locus-bitmapLMDB + Roaring · namespaced keys, tombstone-aware
locus-enrichTagPipeline · builtin + YAML taggers · cached
locus-ingesthash → diff → parse → enrich → embed → write
locus-watchernotify + debounce → IngestionPipeline
locus-embedFastEmbed ONNX · usearch HNSW · reranker
locus-queryfilter resolve → bitmap intersect → vector rerank → graph
locus-cliclap CLI · the locus binary
locus-daemonaxum HTTP + MCP server · the locusd binary
+ confluence · jira · slack · bench cratessync coretokio at the boundaryu32 ids
MCP · THE TOOLKIT

Six tools. One install. Your agent already knows them.

locus mcp install ~/your-repo writes the MCP config and your agent's tool palette gains the full engine — typed schemas, structured pointers, zero glue code. Works with Claude Code and any MCP-aware client.

locus_search

Filter by topic, type, folder, convention — get labeled pointers back.

find anything
locus_graph

Neighbours, n-hop expansion, shortest path, PageRank centrality over links and imports.

structure
locus_inspect

Every bitmap a doc is in. Why did it match? What's it tagged?

explain a doc
locus_filters

The live filter vocabulary — what's queryable in this index right now.

discover
locus_status

Document, chunk and bitmap counts; tombstones pending compaction.

health
locus_remote_ingest

Pull Confluence, Jira and Slack into the same index, on demand.

remote sources
LIVE · SESSION

An agent's query, end-to-end.

Real output. The daemon never sends file bodies — only the structural pointers your agent needs to read precisely.

~/code — locus
$ locus search "topic:error-handling"
6 matches (33µs)

  crates/locus-registry/src/graph.rs (doc_id=28)
    chunk 394 (Function)  bytes 525..691     now
    chunk 396 (Method)    bytes 1050..1241   add_edge
  crates/locus-query/src/engine.rs (doc_id=41)
    chunk 512 (Function)  bytes 1840..2210   resolve_filter$ locus mcp install ~/code/myrepo
 Registered Locus MCP server in ~/code/myrepo/.mcp.json
BUILT FOR AGENTS, NOT HUMANS

The features that matter when an LLM is the user.

Pointers, not payload.

Every response is MatchPointer{ doc_id, path, chunks, reason }. Your agent reads only the ranges it picks. No truncation surprises, no leaked context.

core contract
Local-first. Always.

Embeddings run via FastEmbed ONNX on-device. State lives in ~/.locus/. No telemetry, no managed plane, no leaking your client's repo to a vendor.

offline · no api keys
MCP-native.

locusd speaks Model Context Protocol out of the box, plus an HTTP API. Drop it in your agent config and it shows up as tools.

mcp · http · stdio
Roaring bitmaps.

Every tag, folder, topic and convention is a namespaced bitmap of u32 doc IDs. AND / OR / NOT compose at memory bandwidth. Tombstones subtract lazily.

lmdb · roaring
Tree-sitter parsers.

Functions, classes, imports — indexed at the AST node, not the line. Query type:test_file or async:true and get exactly the spans.

rust · ts · python
YAML taggers.

Drop taggers/*.yaml in your vault to teach Locus your team's vocabulary. Re-indexed in milliseconds, cached.

enrichment
BENCHMARKS · REPRODUCIBLE

7× fewer tokens than grep-and-dump.

Eight "where is X?" questions over a Rust codebase: tokens entering the agent's context, per strategy. Run it yourself — scripts/token-bench.py, methodology in the repo.

StrategyTokens into context
grep + read matching files (agent default)568,502
grep -C20 (disciplined agent)587,629
locus pointer digest79,587 — 7.1× fewer

* Bitmap intersections measured in tens of microseconds on the dogfood corpus; full report. Queries like complexity:high or visibility:public have no grep equivalent at all.

LOCUSD FOR TEAMS

Index your monorepo. Keep it on your hardware.

For teams running multi-agent systems on private codebases: a shared daemon, remote-source connectors, and a human you can actually email.

  • Shared index serving every agent seat on your team
  • Confluence, Jira and Slack ingested next to the code
  • Air-gapped install — no telemetry, source-auditable
  • Custom YAML taggers tuned to your conventions
  • Priority fixes and a named engineering contact

Tell me about your stack — agents, repo size, sources. I read everything.

Start the conversation →