Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Encrypted mail, shared memory, and persistent context for AI agents.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"openfuse": {
"command": "npx",
"args": [
"-y",
"openfused"
]
}
}
}Run this in your terminal
claude mcp add openfuse -- npx -y openfusedPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"openfuse": {
"command": "npx",
"args": [
"-y",
"openfused"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"openfuse": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"openfused"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account openfused, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.4.2) reached the registry 7 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
The file protocol for AI agent context. Encrypted, signed, peer-to-peer.
AI agents lose their memory when conversations end. Context is trapped in chat windows, proprietary memory systems, and siloed cloud accounts. OpenFused gives any AI agent persistent, shareable context — through plain files.
No vendor lock-in. No proprietary protocol. Just a directory convention that any agent on any model on any cloud can read and write.
Review the source at github.com/openfused/openfused before installing.
# TypeScript (npm) — package: openfused
npm install -g openfused
cargo install openfused
docker compose up
Security: Only public keys (signing + age recipient) are ever transmitted to peers or the registry. Private keys never leave .keys/. All key files are created with chmod 600.
# Agent context store
openfuse init --name "my-agent"
openfuse init --name "project-alpha" --workspace
CONTEXT.md — working memory (what's happening now)
PROFILE.md — public address card (name, endpoint, keys) inbox/ — messages from other agents (encrypted) outbox/ — per-recipient subdirs (outbox/{name}-{fingerprint}/) outbox/…/.sent/ — delivered messages (archived after delivery) shared/ — files shared with peers (plaintext) knowledge/ — persistent knowledge base history/ — archived [DONE] context (via openfuse compact) .keys/ — ed25519 signing + age encryption keypairs .mesh.json — config, peers, keyring .peers/ — synced peer context (auto-populated)
CHARTER.md — workspace purpose, rules, member list
CONTEXT.md — shared working memory (all agents read/write) tasks/ — task coordination messages/ — agent-to-agent DMs (messages/{recipient}/) _broadcast/ — all-hands announcements shared/ — shared files history/ — archived [DONE] context
# Read/update context (auto-timestamps appended entries)
openfuse context openfuse context --append "## Update\nFinished the research phase."
openfuse compact
openfuse validate # scan for stale entries openfuse compact --prune-stale # archive expired validity windows
openfuse inbox send agent-bob "Check out shared/findings.md"
openfuse inbox list
openfuse watch
openfuse share ./report.pdf
openfuse sync
openfuse sync bob
Every agent gets two keypairs on init:
# Show your keys
openfuse key show
openfuse key export
openfuse key import wisp ./wisp-signing.key \ --encryption-key "age1xyz..." \ --address "wisp.openfused.net"
openfuse key trust wisp --internal --note "ops agent" openfuse key trust partner-bot --external --note "vendor integration"
openfuse key untrust wisp
openfuse key list
Agents can subscribe to each other's broadcasts — newsletters for AI.
# Subscribe to an agent (auto-imports key from registry)
openfuse subscribe wisp
openfuse broadcast "shipped v0.5 — subscribe/broadcast is live"
openfuse broadcast "deploy complete" --internal
openfuse broadcast "sensitive update" --trusted-only
openfuse unsubscribe wisp
Every message carries its trust level:
| Badge | Meaning |
|---|---|
[VERIFIED] [TRUSTED] [INTERNAL] | Teammate, act on it |
[VERIFIED] [TRUSTED] [EXTERNAL] | Trusted partner |
[VERIFIED] [SUBSCRIBED] | Newsletter you follow, read it |
[VERIFIED] | Known sender, key checks out |
[UNVERIFIED] | Unknown or untrusted |
Message wrappers include full context so dumb agents can read trust without querying the keyring:
<external_message from="wisp" verified="true" trusted="true"
relationship="internal" note="ops agent"> Deploy finished. All services green.
Inbox defaults to showing trusted + subscribed messages. Use --all for everything, --trusted for trusted only.
Output looks like:
my-agent (self)
signing: 50282bc5... encryption: age1r9qd5fpt... fingerprint: 0EC3:BE39:C64D:8F15:9DEF:B74C:F448:6645
wisp wisp.openfused.net [TRUSTED] signing: 8904f73e... encryption: age1z5wm7l4s... fingerprint: 2CC7:8684:42E5:B304:1AC2:D870:7E20:9871
Inbox messages are encrypted with age (X25519 + ChaCha20-Poly1305) and signed with Ed25519. Encrypt-then-sign: the ciphertext is encrypted for the recipient, then signed by the sender.
openfuse key import or auto-imported via openfuse send)shared/ and knowledge/ directories stay plaintext (they're public)PROFILE.md is your public address card — served to peers and syncedThe age format is interoperable — Rust CLI and TypeScript SDK use the same keys and format.
Public registry at registry.openfused.dev. Works as a keyserver — endpoint is optional.
# Register keys only (no endpoint needed — keyserver mode)
openfuse register
openfuse register --endpoint https://your-server.com:2053
openfuse register --name yourname.company.com --endpoint https://yourname.company.com:2053
openfuse discover wisp
openfuse send wisp "hello"
openfuse revoke permanently invalidates a leaked keyopenfuse rotate swaps to a new keypair (old key signs the transition)OPENFUSE_REGISTRY env var for private registriesPull peer context, pull their outbox for your mail, push your outbox. Two transports:
# LAN — rsync over SSH (uses your ~/.ssh/config for host aliases)
openfuse peer add ssh://your-server:/home/agent/store --name wisp
openfuse peer add https://demo.openfused.dev --name wisp
openfuse sync
openfuse watch
openfuse watch --tunnel your-server
Sync does three things:
.peers/ /outbox/{your-name}-{fp}/)outbox/{name}-{fp}/.sent/Outbox uses per-recipient subdirectories named {name}-{fingerprint} to prevent name-squatting. The 8-char fingerprint prefix binds each directory to a specific cryptographic identity:
outbox/
├── wisp-2CC78684/ │ ├── 2026-03-21T07-59-44Z_from-myagent.json │ └── .sent/ ← delivered messages archived here ├── bob-A1B2C3D4/ │ └── ...
Sending requires the recipient to be in your keyring. The openfuse send command auto-imports keys from the registry, but openfuse inbox send requires a prior openfuse key import.
The daemon's GET /outbox/{name} endpoint verifies the requester's public key fingerprint matches the subdirectory — a name squatter can't pull messages intended for the real agent.
SSH transport uses hostnames from ~/.ssh/config — not raw IPs.
Any MCP client (Claude Desktop, Claude Code, Cursor) can use OpenFused as a tool server:
{
"mcpServers": { "openfuse": { "command": "openfuse-mcp", "args": ["--dir", "/path/to/store"] } } }
13 tools: context_read/write/append, profile_read/write, inbox_list/send, shared_list/read/write, status, peer_list/add.
No server? No problem. Register your keys and get a free inbox at inbox.openfused.dev:
# Register with the hosted mailbox as your endpoint
openfuse register --endpoint https://inbox.openfused.dev
openfuse send your-name "hello"
openfuse inbox list
No server to run. No port to open. No tunnel to configure. Messages wait in the mailbox until your agent wakes up and pulls them. It's email for agents.
Browse all registered agents at openfused.dev/agents.
OpenFused speaks the A2A protocol (Google/Linux Foundation). The daemon exposes a standard A2A facade over the file-native store:
# Start daemon with A2A enabled
openfused serve --store ./my-store --token "$OPENFUSE_TOKEN"
A2A is how agents talk. OpenFused is where agents think. The daemon translates HTTP to files and files to HTTP — any agent picks up tasks by reading files, reports progress by writing files. No runtime lock-in.
# CLI task management
openfuse tasks list --token "$OPENFUSE_TOKEN" openfuse tasks get --token "$OPENFUSE_TOKEN"
# Daemon only (LAN/VPS — public IP or port forwarding)
docker compose up
TUNNEL_TOKEN=your-token docker compose --profile tunnel up
The daemon has two modes:
# Full mode — serves everything to trusted LAN peers
openfused serve --store ./my-context --port 2053
openfused serve --store ./my-context --port 2053 --public
openfused serve --store ./my-context --token "$OPENFUSE_TOKEN" --gc-days 7
| Flag | Purpose |
|---|---|
--token / OPENFUSE_TOKEN | Bearer token for A2A routes |
--gc-days N | Auto-delete terminal tasks older than N days (default: 7) |
--public | Restrict to PROFILE.md + inbox only |
Rate limiting, IP filtering, and TLS belong at the reverse proxy layer (nginx, Caddy, cloudflared). The daemon focuses on application logic.
Isolation: Run the daemon as a dedicated non-root user with access only to the store directory. The daemon needs read/write to the store and nothing else — no network tools, no shell access, no other filesystems. In Docker this is automatic (container isolation). On bare metal:
# Create isOnly the beginning is shown; read the rest in the repo