Al Newkirk
Research
Facts

Curated Knowledge for Humans and Agents

Updated August 17, 2026
8 min read
Project

Substrate for Managing Shared Knowledge

Summary

A zero-config CLI for shared knowledge that has to be decided on before it counts. Propose, revise, comment, accept, reject, find, pull, push. Humans, agents, and services participate as registered actors against the same ledger.

Substrate for Managing Shared Knowledge

Most knowledge and memory systems are concerned with storing information, and if you’re lucky, organizing it. Facts is concerned with deciding what information becomes knowledge, and when, and on whose authority. The CLI is a zero-config, fast, malleable substrate for managing trusted knowledge, and the basic unit is a proposition, a statement that can be evaluated as either true or false. Proposing one doesn’t make it a fact. It sits pending until an actor decides.

$ fact propose policy.md
$ fact pending

01a00-9ef94  pending, update pending  Policy v0  [accept or reject]

$ fact accept 01a00-9ef94

That small distinction is the whole system. A wiki can tell you somebody wrote this. A ledger can tell you somebody proposed this, these actors considered it, this revision was accepted, and this is the version currently treated as fact. What matters for humans matters more for agents, since an agent has no way to tell an opinion from a decision unless the record says which one it’s reading.

Version-Controlled Knowledge

Facts applies some of the useful properties of Git to knowledge. When someone learns that an accepted fact is incomplete, they revise it, and the old revision doesn’t disappear because somebody edited some text. fact show lists the accepted revision alongside its proposed replacement, and the replacement doesn’t become effective merely because it’s newer. It has to earn that status. fact history keeps the sequence intact: proposed, accepted, revised, commented, accepted, archived, restored. Knowledge changes over time, and the history explains how and why.

Information is Accumulated. Knowledge is Curated.

Consider a company wiki. Someone adds “Customers on the Enterprise plan receive 24-hour support” and it’s searchable immediately, which is useful if the statement is correct and expensive if the person misunderstood the policy. Import that same statement into a ledger and the system retains it without treating it as accepted knowledge. A reviewer looks into it and rejects it. The proposition stays in the history, it just never became a fact. “We considered this” isn’t the same thing as “We believe this is true,” and only one of the two should be feeding your agents.

Actor-agnostic Knowledge Management

Facts doesn’t care whether an actor is a human, an agent, a service, or an organization. fact as registers one with a public/private signing key pair and permissions to participate, so an agent can propose a runbook, a second agent can comment that it contradicts the one in production, a human can reject it, and any of them can invite specific reviewers to a specific proposition. The point isn’t human approval. It’s controlled knowledge formation. Humans can supervise agents, agents can supervise agents, and both can participate in the same decision.

Safer AI Agent Memory

The common agent memory loop looks roughly like this:

Agent observes something Write to memory Retrieve it later Treat it as context

The danger is obvious once you draw it. An agent makes one bad inference, “Customer X never wants email notifications,” commits it to memory, and a future agent retrieves it as context. A mistake gets committed as truth, and if that memory is shared, that’s a catastrophic failure. Facts puts a decision boundary in the middle:

observe propose review / deliberate accept recall as trusted knowledge

The agent stays free to learn, propose, and revise. What changes is that an agent querying accepted knowledge doesn’t see the inference until a human, another agent, or several participants have signed off on it. Consider this: put two agents on the same ledger and neither one can write to shared memory without the other reviewing it first. Every claim gets checked while the work is still in flight, which is what CI does for code, applied to knowledge.

Don’t Go Fishing

The prevailing enterprise AI architecture looks like this: Give the agent(s) access to repositories of context and wish it luck:

Slack Agent Drive Wiki Tickets Email Databases Files

Every task starts with the same questions. Which document is current, which statement was superseded, was this proposal ever approved, and which of these three policies is authoritative. Raw information can stay where it is. Curated knowledge lives in the ledger, and tags narrow the search further.

$ fact find "production database access" --tag network --tag policy

019f91-a2f91  Production database access requires VPN
019fa8-3cfa8  Production credentials rotate every 30 days
019fa9-92fa9  Production writes require an approved change

Three accepted facts instead of four thousand search results, and if the agent needs supporting material it can go fishing afterward. Facts first, raw information second, instead of searching everything and hoping retrieval found the right answer.

Simple Primitives, Lot of Shapes

Propose, revise, comment, accept, reject, find, pull, push. Those primitives compose into personal memory, team decisions, engineering conclusions that would otherwise die in chat, runbooks written the day after an incident, curated requirements an implementation agent can query, and overnight agent findings a human triages in the morning. The same handful of commands also arranges into very different systems depending on how many ledgers you keep and who holds which permission.

Facts as a Substrate: Ten Topologies

Human A Single Ledger Human B Agent A Agent B
Shared organizational ledger. Everybody pulls, proposes, and pushes against the same accepted knowledge.
Agents/Humans engineering product operations security
Domain ledgers. The same query returns different knowledge, and an agent is granted only the domains it needs.
Team project-atlas Next Team
Project memory. The ledger outlives the project, so the next team doesn't reconstruct it from chat history.
Laptop remote Workstation Teammate
Distributed organizational memory. Ledgers move between machines, so knowledge isn't trapped in one application.
Agent A shared ledger Agent B Human Worker Agent
Shared agent mailbox. A proposition is both the work request and the durable record of what came of it.
Human/Agents researcher ledger security ledger coding-agent ledger planner ledger
One mailbox per agent. Each agent sees only its own work, and an orchestrator switches context by switching ledgers.
Research Agent proposition Verification Agent Policy Agent Human Reviewer accepted
Reviewer agents. Invited reviewers decide whether an observation graduates into shared memory.
Proposal Agent A: accept Agent B: accept Agent C: reject
Multi-agent consensus. The ledger records every position, and policy decides what becomes effective.
accept reject Agent proposition Human durable memory history only
Human-controlled agent memory. The agent may propose and comment. Only the human accepts, rejects, or revises.
no yes Proposal Reviewer Agent A Reviewer Agent B disagreement? settle human
Agent-controlled memory with escalation. Routine facts settle between agents. Humans see the contested ones.

Two of those are worth spelling out. Consensus records every position and lets policy decide whether the proposition becomes effective, which is a different thing from “Agent A wrote something to memory, therefore it is memory,” and you can deliberately mix models, agents, and tools so that their failure modes are less correlated. Escalation turns fact conflicts and fact pending into the human’s inbox, so people spend their attention on the contested cases instead of reviewing every memory update.

Hot-Swappable Memories

If Agent A owns its memory, retiring it next year is a migration project. If the organization owns the ledger, the replacement starts with the same accepted knowledge on its first day.

Agent A Facts Agent B

Models change, frameworks change, vendors change, and agents come and go. The ledger remains. Facts doesn’t try to predict the application, it provides the substrate, and underneath every one of these shapes is the same distinction. “Someone said it” is information. “We accepted it” is a fact.

AIResearchRustSoftwareTools
Al Newkirk

Al Newkirk

Outcome-oriented technology leader. 30+ years in software engineering. Creator of the OOO and CBC frameworks. Driving people, projects, and performance.

Learn More