# veracium

Keeps durable per-user memory for an agent: what the user said, past sessions, and what worked. Every fact carries its source, so something the agent merely read never turns into an assertion.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 10
- Author: veracium-ai
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/veracium-ai/Veracium
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/veracium

## What it does

The store of record is a typed graph plus dated episodes. Entity facts sit as relational edges with provenance attached; interaction history sits as episodes. A curated wiki view gets compiled from them and cached, but it is not the source of truth.

Single-valued facts such as employer, location or deadline keep one current value while the prior one stays in history, so older answers remain reachable. Facts that can hold several values at once accumulate instead. Third-party claims — a received email, an external doc — are quarantined structurally as `third_party_claim` edges with the claimant as subject. That is labelling, not enforcement: unless your harness has a dedicated path that consumes the labels, the trust classes stay advisory.

No keys or model choice are held by the server; it calls a `Complete` callable you provide, and a reference Anthropic provider ships with it. Default storage is one SQLite file with no external services, and the `Store` interface lets you swap in Neo4j or Postgres later. Python 3.14 or newer is required, and a store opens only on SQLite 3.45.1 as packaged by Ubuntu 24.04 — on any other build the server refuses both to create and to open a database, so moving to a different Python leaves earlier stores unopenable there.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `ANTHROPIC_API_KEY`, `VERACIUM_DB_PATH`, `VERACIUM_USER` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env ANTHROPIC_API_KEY=<ANTHROPIC_API_KEY> --env VERACIUM_DB_PATH=<VERACIUM_DB_PATH> --env VERACIUM_USER=<VERACIUM_USER> --transport stdio veracium -- uvx veracium
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from veracium <command>

### Codex

**Platform CLI**
```bash
codex mcp add veracium --env ANTHROPIC_API_KEY=<ANTHROPIC_API_KEY> --env VERACIUM_DB_PATH=<VERACIUM_DB_PATH> --env VERACIUM_USER=<VERACIUM_USER> -- uvx veracium
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from veracium <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "veracium": {
            "command": "uvx",
            "args": [
                "veracium"
            ],
            "env": {
                "ANTHROPIC_API_KEY": "<ANTHROPIC_API_KEY>",
                "VERACIUM_DB_PATH": "<VERACIUM_DB_PATH>",
                "VERACIUM_USER": "<VERACIUM_USER>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from veracium <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "veracium": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "veracium"
            ],
            "env": {
                "ANTHROPIC_API_KEY": "<ANTHROPIC_API_KEY>",
                "VERACIUM_DB_PATH": "<VERACIUM_DB_PATH>",
                "VERACIUM_USER": "<VERACIUM_USER>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from veracium <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e ANTHROPIC_API_KEY=<ANTHROPIC_API_KEY> -e VERACIUM_DB_PATH=<VERACIUM_DB_PATH> -e VERACIUM_USER=<VERACIUM_USER> veracium uvx veracium
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from veracium <command>

## When to use it
- carry agent memory across sessions
- stop a read email from becoming a user fact
- keep the previous value after a fact changes
- plug in your own model instead of a bundled one
- run memory without an external database

## Example prompts
- Remember that I'm vegetarian and my dog is named Ollie
- What do you remember about me before suggesting lunch?
- Clean up and rebuild memory for this user

## Similar
- [Mneme Memory](https://affpapa.org/en/nevibecode/mcp/mneme-memory.md) — MCP server · ★ 182
- [lean-memory](https://affpapa.org/en/nevibecode/mcp/lean-memory.md) — MCP server · ★ 43
- [engram-server](https://affpapa.org/en/nevibecode/mcp/engram-server.md) — MCP server · ★ 23
- [LLMSlim memory](https://affpapa.org/en/nevibecode/mcp/llmslim-memory.md) — MCP server · ★ 22
- [kairn](https://affpapa.org/en/nevibecode/mcp/kairn.md) — MCP server · ★ 13
- [memory-arbiter-mcp](https://affpapa.org/en/nevibecode/mcp/memory-arbiter-mcp.md) — MCP server · ★ 10

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
