Verifiable State Plane for Autonomous Agents
Project description
Bilinc
Verifiable state plane for autonomous agents.
pip install bilinc
Most agent memory systems are a vector store with a wrapper. Bilinc is a state plane: every belief can be verified before it lands, logically revised when it conflicts, and audited so an agent can explain what changed and why.
Others store memories. Bilinc manages truth.
Why Bilinc
Long-running agents fail in predictable ways:
- They store contradictions they never catch.
- They overwrite useful context with noisy recency.
- They cannot roll back when memory or tool state goes bad.
Bilinc gives agents a state layer with verification, belief revision, provenance, and rollback built in.
Core capabilities
| Area | What Bilinc provides |
|---|---|
| Memory model | Working, episodic, procedural, semantic, and spatial memory with per-type decay curves |
| Recall | FTS5 BM25 + vector similarity + knowledge-graph spreading activation, fused with RRF |
| Belief revision | AGM-style EXPAND / CONTRACT / REVISE for conflict-aware updates |
| Verification | Z3 SMT checks at the commit gate |
| Auditability | Merkle-chain provenance, snapshots, diffs, and rollback |
| Agent integration | MCP server, LangGraph checkpoint adapter, Claude Code / Cursor / VS Code / OpenClaw translation |
| Storage | SQLite by default, PostgreSQL optional |
Quick start
from bilinc import StatePlane
from bilinc.storage.sqlite import SQLiteBackend
backend = SQLiteBackend("agent_state.db")
sp = StatePlane(backend=backend, enable_verification=True, enable_audit=True)
# Commit a belief: verification and audit happen before write.
sp.commit_sync(
"user_preference",
{"theme": "dark", "language": "python"},
memory_type="semantic",
importance=0.9,
)
# Recall across FTS5, vector, and graph signals.
results = sp.recall_all_sync("user preference", limit=5)
# Snapshot, mutate, rollback.
snapshot_id = sp.snapshot_sync()
sp.commit_sync("user_preference", {"theme": "light"})
sp.rollback_sync(snapshot_id)
CLI
bilinc --db ./agent.db commit --key USER_PREF --value '{"theme": "dark"}'
bilinc --db ./agent.db recall --key USER_PREF
bilinc --db ./agent.db forget --key USER_PREF
bilinc --db ./agent.db status
# Hermes integration
bilinc hermes bootstrap
bilinc hermes smoke
MCP integration
Bilinc ships as an MCP server for Claude Code, Cursor, and any MCP-compatible agent:
{
"mcpServers": {
"bilinc": {
"command": "python",
"args": ["-m", "bilinc.mcp_server.server_v2"],
"env": { "BILINC_DB_PATH": "~/bilinc.db" }
}
}
}
MCP tools include: commit_mem, recall, revise, forget, consolidate, contradictions, diff, snapshot, rollback, status, verify, query_graph, bilinc_recall_smart, bilinc_query_analysis, bilinc_event_segment, bilinc_summarize, bilinc_health, bilinc_benchmark, bilinc_export, and bilinc_import.
LangGraph checkpointing
Use Bilinc as a verified persistent checkpoint store for LangGraph agents:
from langgraph.graph import StateGraph
from bilinc import StatePlane
from bilinc.storage.sqlite import SQLiteBackend
from bilinc.integrations.langgraph import LangGraphCheckpointer
sp = StatePlane(backend=SQLiteBackend("checkpoints.db"), enable_verification=True)
checkpointer = LangGraphCheckpointer(sp)
graph = StateGraph(...).compile(checkpointer=checkpointer)
Every checkpoint can flow through Bilinc's revision and verification pipeline, making long-running LangGraph state inspectable and rollback-capable.
Architecture
StatePlane
├── WorkingMemory PFC-inspired active slots and eviction
├── AGM Engine EXPAND / CONTRACT / REVISE
├── Dual-Process Arbiter fast path + deliberate verification path
├── StateVerifier Z3 SMT contradiction gate
├── AuditTrail Merkle chain and provenance
├── KnowledgeGraph entities, relations, spreading activation
├── Hybrid Recall FTS5 → vector → KG → RRF fusion
├── ContextBudgetRL adaptive token allocation by memory type
├── Storage SQLite / PostgreSQL
└── MCP Server v2 stdio + authenticated HTTP
Benchmarks
| Benchmark | Score | Notes |
|---|---|---|
| LongMemEval | 98.0% | Fully local, no LLM |
| ConvoMem | 98.0% | 5 categories, real recall pipeline |
| LoCoMo | 90.3% | Temporal, causal, and multi-hop recall |
These are repository benchmark runs, not hosted-service claims. Reproduce them from the benchmark scripts and fixtures in this repo.
Comparison
| Feature | Bilinc | Mem0 | Zep | Letta |
|---|---|---|---|---|
| Z3 formal verification | ✅ | ❌ | ❌ | ❌ |
| AGM belief revision | ✅ | ❌ | ❌ | ❌ |
| Cryptographic audit trail | ✅ | ❌ | ❌ | ❌ |
| Snapshot / diff / rollback | ✅ | ❌ | ❌ | ❌ |
| Blind spot detection | ✅ | ❌ | ❌ | ❌ |
| Hybrid decay | ✅ | ❌ | ❌ | ❌ |
| FTS5 + vector hybrid recall | ✅ | ❌ | ✅ | ❌ |
| Knowledge graph | ✅ | ❌ | ✅ | ❌ |
| LangGraph checkpoint adapter | ✅ | ❌ | ✅ | ❌ |
| MCP server | ✅ | ❌ | ❌ | ✅ |
| Fully local mode | ✅ | ❌ | ❌ | ✅ |
Installation
# Core
pip install bilinc
# PostgreSQL backend
pip install "bilinc[postgres]"
# HTTP MCP server
pip install "bilinc[server]"
# Development
pip install -e ".[dev]"
pytest tests/ -v
License
BSL 1.1 — free for personal and research use. Commercial SaaS use is restricted until 2030, then Apache 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bilinc-1.2.3.tar.gz.
File metadata
- Download URL: bilinc-1.2.3.tar.gz
- Upload date:
- Size: 140.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b37a6e5040527182ba8e611d80463a30bbfcd80787a728cb551dd4ca71543c31
|
|
| MD5 |
f2f22f5ea14467a669b993205c6fd92d
|
|
| BLAKE2b-256 |
52271a8b08cb12767460a72bdcfc946a36d87af107cab7aacace16b7ba52520d
|
File details
Details for the file bilinc-1.2.3-py3-none-any.whl.
File metadata
- Download URL: bilinc-1.2.3-py3-none-any.whl
- Upload date:
- Size: 127.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae672f5a33c0121a766d60a83e84db19c7fef1cf33db3418e0c3a48e205be65f
|
|
| MD5 |
6ab570adec95220c071b2aa9759ecf92
|
|
| BLAKE2b-256 |
a3a5a34741d4f26395a0c5283dd42912163edc7070ff1203aaddc9705f374bbc
|