The shared memory your AI agent fleet keeps forgetting it needs.
KYB — Know Your Business is a git-backed, searchable knowledge base for fleets of AI agents. Which servers exist, how services are wired, what broke and how it ended, what is still open — the operational truth that survives between sessions and across machines.
Agents forget everything between sessions. Multiple agents — Claude Code, Codex, Antigravity — on multiple machines rediscover the same infrastructure over and over, and every hard-won incident lesson evaporates the moment the context window closes.
Six ideas, one operational truth.
No database, no namespaces, no ceremony. Just git, a disposable index, and a search that actually finds things.
Git is the canon
One markdown file per entry, one commit per change. A commit sha is a version id. There is no database — history, diff and rollback come for free, and any text editor can read the canon.
Hybrid search
BM25 fused (reciprocal rank) with vector search over every entry — e5-small, int8 ONNX, ~5 ms on CPU. Describe a problem in your own words and the right entry surfaces; exact technical terms still rank first.
Incidents & tasks built in
Not just facts: operational events and work in flight are first-class entries with real lifecycles — and every closing demands an outcome in writing.
Upserts by key
Writes are keyed and deterministic — a no-op when content did not change, so no empty commits. Flat key space plus tags; predictable key patterns are the deduplication mechanism.
Local, private, no secrets
Binds to 127.0.0.1 by default. To serve a trusted LAN, opt into one exact private interface; there is no auth, so never publish port 9310 to the internet. Writes that look like a token, key or password are rejected: store pointers, never credentials.
Rust, all the way down
axum + tantivy 0.22 + git2 + ort (ONNX Runtime). One write mutex, lock-free reads. The index is a disposable cache — lose it and it rebuilds from git on the next start.
Git in, ranked answers out.
Git canon
Markdown + YAML frontmatter, one commit per change.
Tantivy index
Rebuilt from git on every start — covers head and all history.
Hybrid search
Reciprocal-rank fusion of lexical + vector, filtered by tag / kind / status.
Three kinds, one flat key space.
Only the closing states archive an entry — and every one of them requires an outcome in writing.
What is true now
A fact under a stable key: architecture, topology, deploys, decisions, gotchas.
What happened
An operational event: what broke, the impact, the runbook, the resolution.
What is in flight
Work and ideas: who holds it right now, what it waits on, what came of it.
A report is a control panel, not a story.
The server teaches structure instead of gating on it — a bare report is accepted, but the reply names every missing actionable part. Two hard rules: keys start with inc-, and closing requires a resolution.
inc-2026-08-06-orders-api-oom
orders_api OOM loop: the write buffer grows until the container restarts.
A board your agents can actually share.
A task is a short actionable note with a real lifecycle. Claim it before you start so two agents don't do the same work; block it with the reason it waits on; close it with what came of it. Every change is a git commit, so history replays who held what, in which status, at any point in time.
Partial transitions
kyb task-status sends the status and nothing else — title, body, tags, priority and links stay exactly as stored. A transition never has to fetch and resend the task.
Nothing is inferred
Unranked stays unranked, unclaimed stays unclaimed. A blocked_reason is only valid while blocked — moving off blocked clears it, so a task never advertises a block it is out of. parent_task hangs child work under the task it belongs to.
One command wires it into every agent on the machine.
A skill an agent never opens is a skill it never uses — so the installer drops a pointer into each agent's always-loaded global instructions. Marker-delimited and idempotent: re-running updates the section in place.
Claude Code
~/.claude/skills/kyb
+ CLAUDE.md
Codex
~/.codex/skills/kyb
+ AGENTS.md
Antigravity
~/.gemini/…/skills/kyb
+ GEMINI.md
What no database can enforce — governance
The loop is ask → assess → enrich: query before reasoning, write back what you learned before finishing.
Always query before adding. Found something close? Overwrite the same key — duplicates kill a shared base.
Entries are self-contained and hold verified facts only — never a guess dressed as knowledge.
Working a task means claiming it first, blocking it with a reason, closing it with an outcome.
Broke something? File an incident, close it with a real resolution, then fold the lesson back into knowledge.
Secrets never in bodies — pointers in refs, and the server rejects the rest.
Vectors earn their keep.
14 real questions against a real base, phrased the way an agent would ask rather than the way the entry was written. Top-1 / top-3 hit rate — lexical alone barely finds anything.
A small, honest surface.
Every request except /healthz is appended to a JSONL audit log — timestamp, ip, method, path, status, duration.
Up in two commands.
Two things to know before you expose it
There is no auth by design — keep port 9310 on a private network. And run the container as your host uid: otherwise the git canon ends up root-owned and unreadable by hand, and git-as-truth is the whole point.
One idempotent command, whole pipeline.
Refuses to run with uncommitted changes, waits for CI green, health-checks the server, then rolls the skill and CLI to every machine. Sleeping laptops don't abort the rollout — unreachable hosts are skipped and the run ends with a per-machine health table.
Machine-specific config lives outside the repo in a gitignored fleet.local.sh. Releases are byte-reproducible: fixed member order, pinned mtimes, zeroed uid/gid, verified against a layout contract before the tag build can ship.
Give your agents a memory.
One command to run it, one to wire every agent on every machine into the same operational truth.