Sage
Persistent, consensus-validated institutional memory for AI agents. Runs locally.
- Transport
- Not stated
- Package
- —
- Registry id
- io.github.l33tdawg/sage
No install snippet on purpose. A working MCP config is a command, its arguments and an environment block — the last two are where API keys live, so this catalogue never stores them and cannot publish them. Follow the link above for the authors' own instructions.
Persistent, consensus-validated memory infrastructure for AI agents.
SAGE gives AI agents institutional memory that persists across conversations, goes through consensus validation, carries confidence scores, and decays naturally over time. On a multi-validator network that validation is a BFT quorum; on a personal install it is the node's own signed vote. Not a flat file. Not a vector DB bolted onto a chat app. Infrastructure — built on the same consensus primitives as distributed ledgers.
The architecture is described in Paper 1: Agent Memory Infrastructure.
Just want to install it? Download here — double-click, done. Works with any AI.
Quick Start · Architecture · Capabilities · Dashboard · Release history · Documentation
Quick Start
Desktop: Download the latest release, open SAGE, then use CEREBRUM to connect your AI. For a full walkthrough, see Getting Started.
From source (Go 1.26.8+):
git clone https://github.com/l33tdawg/sage.git && cd sage
go build -o sage-gui ./cmd/sage-gui/
./sage-gui setup # Pick your AI, get MCP config
./sage-gui serve # SAGE + Dashboard on :8080
Or grab a binary: macOS DMG (signed & notarized) | Windows EXE | Linux tar.gz
Docker and containerized MCP setup
Docker
docker pull ghcr.io/l33tdawg/sage:latest
docker run -d --name sage \
-p 8080:8080 \
-v ~/.sage:/root/.sage \
ghcr.io/l33tdawg/sage:latest
Pin a specific version with ghcr.io/l33tdawg/sage:11.22.1.
The SAGE server stays in that container. To give a local MCP client a stdio bridge, start a second process inside the same running container:
docker exec -i \
-e SAGE_PROVIDER=claude-code \
-e SAGE_PROJECT=my-project \
-e SAGE_IDENTITY_PATH=/root/.sage/agents/claude-code-my-project/agent.key \
sage /usr/local/bin/sage-gui mcp
For the shipped Compose stack, use the service name rather than a generated container name:
docker compose -f docker-compose.sage-gui.yml exec -T \
-e SAGE_PROVIDER=claude-code \
-e SAGE_PROJECT=my-project \
-e SAGE_IDENTITY_PATH=/root/.sage/agents/claude-code-my-project/agent.key \
sage /usr/local/bin/sage-gui mcp
If an MCP client launches this through a wrapper, point its stdio configuration
at the wrapper's absolute path. Pass SAGE_PROVIDER, SAGE_PROJECT, and
SAGE_IDENTITY_PATH through docker exec -e/docker compose exec -e; setting
them only on the host-side Docker command does not place them in the container.
Keep the whole SAGE data root mounted at /root/.sage, including agent keys and
the ledger. Do not start a separate docker run ... mcp container: its
localhost:8080 is isolated from the running SAGE server.
HTTP MCP is also available at /v1/mcp/sse and /v1/mcp/streamable, but both
require a bearer token or OAuth. Bare http://localhost:8080 is the REST base,
not an unauthenticated MCP endpoint.
Upgrading an existing node
Upgrading from an older version?
From the project's README.