Case study · Knowledge · The_Borg_DB
A memory that lives on your own machine.
A local-first knowledge intelligence system for organisations whose data cannot go to the cloud.
- Source-available (BUSL-1.1)
- Version 0.7
- Python
- Commercial product, Aliud Inquisito
The problem
Most AI memory tools retrieve what was stored and nothing more. They keep text as chunks, and they need the cloud to work. Healthcare, finance, defence and legal are where private AI earns its keep, and they are also where cloud AI cannot go.
I wanted a system that keeps every byte on the device, stores facts as well as text, and gets smarter about what it holds while nobody is asking it anything.
How it works
- 01Ingest10 formats, inbox watcher, HTTP API
- 02ExtractNamed entities, regex and fact triples
- 03Dual storeSQLite facts plus LanceDB vectors
- 04QueryFour modes, fused and synthesised
- 05Farm18 stages while the machine is idle
Across devices, the Hive pulls distilled summaries from each machine's outbox and looks for patterns between them. Raw content is never transmitted.
What I built
- Ingests 10 file formats: email, meetings, tickets and documents
- Extracts entities and fact triples into SQLite (or Postgres on a server)
- Stores vectors in LanceDB beside the structured facts
- Four query modes: parallel, vector to SQL, SQL to vector and deep
- An 18 stage farming pipeline that mines what it has collected for patterns
- Six configurable LLM roles and a versioned prompt assembler
- The Hive: devices share distilled summaries, never raw content
- A web dashboard, an inbox watcher, an ingest API and an OpenAI-compatible endpoint
By the numbers
866real support tickets and emails processed in about two hours, no failures
12 to 18%junk entities removed by the self-correcting data quality layer
0 bytesleft the premises, on a single NVIDIA DGX Spark running local Gemma models
Decisions worth a look
The LLM is an enhancer, never a source of truth.Every model call has a deterministic fallback, so the system still works with no LLM at all.
Hardware from a Raspberry Pi to a GPU server.The same design runs on a 4 GB Pi without a local model and scales up to a multi GPU machine.
Prompts that refuse to guess.Each prompt tells the model not to invent facts and gives it an INSUFFICIENT answer to use instead.
An audit in the open.I audited my own mining pipeline, found a real design flaw and logged it publicly in the repository.
Stack and my role
- Python 3.10+
- SQLite
- LanceDB
- spaCy
- ONNX Runtime
- Gemma (local)
- NVIDIA DGX Spark
- OpenAI compatible API
- Open WebUI
I designed it and own it as architect and product owner, directing AI coding agents through the build.