mcp server
patina
A persistent cognitive backend with belief graph and earned graduated autonomy
Set up
Runs on your computer. Pick your agent and operating system.
Before you start
- uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
{
"mcpServers": {
"sanctum-origo-systems-patina": {
"command": "uvx",
"args": [
"patina"
]
}
}
}same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12
Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs
README
synced Oct 25, 2026Patina
A cognitive framework that builds beliefs about a subject, tracks confidence over time, detects contradictions, and acts on what it notices — with governed autonomy and human gates.
Patina is an architecture for building systems that form, hold, decay, and act on beliefs about a subject. It maintains an epistemically honest model with quantified confidence, temporal decay, contradiction detection, and graduated autonomy earned through accuracy. The framework is subject-agnostic: demonstrated at personal scale (one person's Slack history), designed for team and organizational scale.
Quick Start
# Install
uv tool install patina
# Initialize
patina init
# Ingest from a Slack export (immediate value)
patina ingest --from-export ~/Downloads/slack-export.zip
# See what needs your attention
patina catch-up
# See everything ranked by priority quadrant
patina priorities
What It Does
# Priority + judgment
patina catch-up # unified view: needs action / new / waiting
patina priorities # grouped by quadrant (Q1-Q4)
patina dismiss <id> # dismiss noise, trains the model
patina objectives add "Ship v2" --keywords "release,deploy"
# Style + drafting
patina style build # build communication profiles from sent messages
patina style show <name> # view patterns for a person
patina draft --to <name> --context "follow up on the timeline"
# Belief graph
patina extract # extract beliefs from observations via LLM
patina extract --history 5 # last N runs: skips + alias collisions by source
patina beliefs --type person # entities with claim counts
patina stale # decayed beliefs below confidence threshold
patina contradictions # conflicting claims
patina relationships --top 20 # trust level + activity map
# Graduated autonomy (per-domain)
patina autonomy status # per-domain level, accuracy, anti-patterns
patina autonomy evaluate # evaluate one ladder step
patina autonomy anti-patterns # list stored anti-patterns
patina autonomy set-level <N> # manual override (0-6)
patina approve <id> # approve a proposed action
patina reject <id> # reject (freezes advancement, stores anti-pattern)
# Entity & data maintenance
patina entity list # list all entities
patina entity merge <drop> <keep> # merge entities, rewire references
patina entity dedup # deduplicate (hard identifiers only, --confirm to execute)
patina entity dedup --dry-run # preview proposed merges with match reasons
patina entity prune # prune non-person entities (protects senders)
patina entity prune-links # remove Slack link markup entities
patina owner merge # fold duplicate self-entities (--dry-run available)
patina doctor # includes dangling reference integrity check
# Live adapters
patina connect slack --token "xoxb-..."
patina ingest # fetch from configured adapters
# Heartbeat (background tasks)
patina heartbeat once # ingest + decay + escalation check
patina heartbeat start --interval 30
# Interactive conversation (Claude Agent SDK)
patina chat
# HTTP server for gateway integration
patina serve --port 8321
# Telegram gateway (talk to your agent from your phone)
patina gateway
How It Works
┌─────────────────────────────────────────────────┐
│ Tier 3: Frontier LLM (Claude, GPT-4o) │ Synthesis, drafts, contradictions
├─────────────────────────────────────────────────┤
│ Tier 2: Local LLM (Qwen 3.x, Ollama) │ Entity extraction, classification
├─────────────────────────────────────────────────┤
│ Tier 1: Deterministic (no LLM) │ Scoring, decay, graph queries
└─────────────────────────────────────────────────┘
↓ all tiers feed ↓
┌─────────────────────────────────────────────────┐
│ Belief Graph (SQLite) │
│ Entities → Relationships → Claims │
│ Confidence decay · Provenance · Contradictions │
└─────────────────────────────────────────────────┘
The system is fully functional at Tier 1 alone (zero LLM calls). Each tier adds capability but never load-bears. Local-first: all data stays in ~/.patina/store.db.
The Observer-Builder Loop
The core operational pattern is a two-agent loop with human gates at both ends: the observer watches the belief graph, notices drift, staleness, or contradictions, and drafts an issue. A human approves (or edits) the issue. The builder picks up the approved issue, ships the fix, and opens a PR. A human reviews and merges. Both agents act; neither ships without a gate.
The observer maintains two belief graphs: beliefs about the world it watches, and beliefs about its own operational reliability — enabling self-correction over time.
View live builder performance dashboard (EVAL.md) — first-attempt success rate, cost trends, and per-module breakdown. Updated daily.
View the decision-model shadow report (JEV.md) — how often Jev agrees with triage and auto-merge decisions, and whether it's ready to act. Updated daily.
What Makes This Different
- Cognitive framework, not an assistant — an architecture for systems that form, hold, and act on beliefs
- Persistent belief model with decay — not a message archive, a living world model
- Graduated autonomy earned by accuracy — per-domain, not configured, proven
- Cognitive layer, not standalone agent — plugs into any MCP host, provides memory and judgment
- Local-first, model-agnostic — runs offline, no vendor lock-in
- Deterministic core — the intelligence is math and graphs, not LLM calls
- Day-one value from export — no warm-up period
MCP Server — Cognitive Layer, Not Standalone Agent
Patina is not a standalone agent competing with autonomous agent projects. It is a cognitive layer — 40 MCP tools — that plugs into any host agent (Claude Code, Kiro, Cursor, or any MCP host). The host agent provides the interface; Patina provides the memory, epistemics, and judgment. Tools include store_search for full-text message search, hidden_allies for surfacing quiet supporters, session_checkpoint for graceful context handoff, and recent_messages for conversational continuity across stateless sessions.
{
"mcpServers": {
"patina-core": {
"command": "uv",
"args": ["run", "patina-mcp"],
"cwd": "/path/to/patina"
}
}
}
Configuration
All config lives in ~/.patina/config.yaml. Credentials never leave your machine.
owner:
user_ids: ["U0ABC123"]
name: "Your Name"
adapters:
chat:
- provider: slack
token: "xoxb-..."
heartbeat:
enabled: true
interval_minutes: 30
Development
git clone https://github.com/Sanctum-Origo-Systems/patina.git
cd patina
uv sync
# Generate demo data and start chatting
uv run python scripts/generate_demo_export.py --output demo-export.zip
uv run patina init
uv run patina ingest --from-export demo-export.zip
uv run patina extract --model sonnet # re-run if it times out — skips already-processed
uv run python scripts/seed_decisions.py # demo only — simulates user behavior for trust scoring
uv run patina style build # build communication style profiles from sent messages
uv run patina chat
# Try asking:
# "What needs my attention?"
# "Who do I trust most?"
# "What do we know about Jordan?"
# "Draft a message to Alexis about the Atlas timeline"
# "Any contradictions in my beliefs?"
# Run tests + evals
uv run pytest
uv run pytest eval/deterministic/
# Lint
uv run ruff check && uv run ruff format
Read More
- The $110/month self-improving pipeline — how the builder works
- The observer files the bug. The builder ships the fix. — how the observer and builder work together
Related
- autoloop — the autonomous builder pipeline that implements issues filed by the observer
License
Apache 2.0