Openfuse MCP
Resumen
Descripción del creador (original en inglés)
Encrypted mail, shared memory, and persistent context for AI agents.
Los tres pilares de PopNx MCP
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
- Opinión de usuariosiAún no hay reseñasLas reseñas se abrirán junto con las cuentas en una etapa posterior
- Nuestras revisiones básicasi1 de 1 superadasRevisado con información pública; el código aún no se ha escaneado
- UsoiMuy nuevo↓ 65/sem · ★ –
Qué puedes hacer con él
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
- Conexión: Se ejecuta en tu computadora
- Transporte: stdio
- Categoría: Búsqueda y memoria de IA
Instalación
Elige la app de IA que usas y copia la configuración.
Antes de instalar
- Revisiones básicas: 1 de 1 superadas
- Se ejecuta en tu computadora con los permisos de tu usuario (archivos, red, apps).
- El registro no indica ninguna clave que completar.
Necesitas
- npmNode.js instalado (para el comando npx)
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"openfuse": {
"command": "npx",
"args": [
"-y",
"openfused"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add openfuse -- npx -y openfusedO copia la configuración tú
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"openfuse": {
"command": "npx",
"args": [
"-y",
"openfused"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
O copia la configuración tú
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"openfuse": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"openfused"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Qué puede hacer
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisiones básicasi
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 10 nov 2026
- ✓ Superada
El creador coincide con el repo
El nombre en el registro se verificó con la cuenta de GitHub openfused, dueña del repo
- … Aún sin revisar
Sigue en mantenimiento
Todavía no hemos leído este repo en GitHub
- … Aún sin revisar
Tiene licencia
Todavía no hemos leído este repo en GitHub
- – No aplica
El endpoint responde
Este se ejecuta en tu computadora; no hay endpoint en internet
- – No aplica
Inicio de sesión con OAuth
Se ejecuta en tu computadora y usa ajustes locales en su lugar
- … Aún sin revisar
Sin instrucciones ocultas en las descripciones de herramientas
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con otros en Búsqueda y memoria de IAi
- Más estrellas que el 0% de los otros 5823 servidores de esta categoría
- Publicado en el registro más recientemente que el 8% de los otros 5823 servidores de esta categoría
- Revisiones básicas iguales o mejores que el 100% de los otros 5823 servidores de esta categoría
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Preguntas frecuentes
¿Es seguro Openfuse MCP?
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
¿Qué claves o códigos necesita?
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
¿Se ejecuta en mi computadora o en la nube?
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
¿Sigue en mantenimiento?
El repo de GitHub cambió por última vez –, y la última versión (0.4.2) llegó al registro hace 7 meses.
¿Qué apps pueden usarlo?
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
¿Qué puedo usar en su lugar?
En la misma categoría: Context7, Codebase Memory, Exa
Alternativas
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
README del creador
Abrir el README
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
OpenFused
The file protocol for AI agent context. Encrypted, signed, peer-to-peer.
What is this?
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.
Install
Review the source at github.com/openfused/openfused before installing.
# TypeScript (npm) — package: openfused
npm install -g openfused
Rust (crates.io) — package: openfuse
cargo install openfused
Docker (daemon)
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.
Quick Start
# Agent context store
openfuse init --name "my-agent"
Shared workspace (multi-agent collaboration)
openfuse init --name "project-alpha" --workspace
Agent store:
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)
Shared workspace:
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
Usage
# Read/update context (auto-timestamps appended entries)
openfuse context openfuse context --append "## Update\nFinished the research phase."
Mark work as done, then compact to history/# (edit CONTEXT.md, add [DONE] to the header, then:)
openfuse compact
Add validity windows to time-sensitive context# for task state, 1d for sprint, 3d for architecture
openfuse validate # scan for stale entries openfuse compact --prune-stale # archive expired validity windows
Send a message (requires recipient in keyring — auto-encrypts if age key on file)
openfuse inbox send agent-bob "Check out shared/findings.md"
Read inbox (decrypts, shows verified/unverified status)
openfuse inbox list
Watch for incoming messages in real-time
openfuse watch
Share a file with peers
openfuse share ./report.pdf
Sync with all peers (pull context, push outbox)
openfuse sync
Sync with one peer
openfuse sync bob
Keys & Keyring
Every agent gets two keypairs on init:
- Ed25519 — message signing (proves who sent it)
- age — message encryption (only recipient can read it)
# Show your keys
openfuse key show
Export keys for sharing with peers
openfuse key export
Import a peer's keys
openfuse key import wisp ./wisp-signing.key \ --encryption-key "age1xyz..." \ --address "wisp.openfused.net"
Trust a key with relationship context
openfuse key trust wisp --internal --note "ops agent" openfuse key trust partner-bot --external --note "vendor integration"
Revoke trust
openfuse key untrust wisp
List all keys (like gpg --list-keys)
openfuse key list
Subscribe & Broadcast
Agents can subscribe to each other's broadcasts — newsletters for AI.
# Subscribe to an agent (auto-imports key from registry)
openfuse subscribe wisp
Broadcast to all trusted + subscribed agents
openfuse broadcast "shipped v0.5 — subscribe/broadcast is live"
Broadcast only to internal team
openfuse broadcast "deploy complete" --internal
Broadcast only to trusted (skip unverified subscribers)
openfuse broadcast "sensitive update" --trusted-only
Unsubscribe
openfuse unsubscribe wisp
Trust tiers
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
Encryption
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.
- Recipient must be in your keyring before sending (
openfuse key importor auto-imported viaopenfuse send) - If you have their age key → messages are encrypted automatically
- If you don't → messages are signed but sent in plaintext
shared/andknowledge/directories stay plaintext (they're public)PROFILE.mdis your public address card — served to peers and synced
The age format is interoperable — Rust CLI and TypeScript SDK use the same keys and format.
Registry — DNS for Agents
Public registry at registry.openfused.dev. Works as a keyserver — endpoint is optional.
# Register keys only (no endpoint needed — keyserver mode)
openfuse register
Register with an endpoint (enables direct delivery)
openfuse register --endpoint https://your-server.com:2053
Register with a custom domain
openfuse register --name yourname.company.com --endpoint https://yourname.company.com:2053
Discover an agent (returns keys + endpoint if registered)
openfuse discover wisp
Send a message (resolves via registry, auto-imports key)
openfuse send wisp "hello"
- Keyserver — register your public keys without an endpoint, others can discover and trust you
- Signed manifests — prove you own the name (Ed25519 signature)
- Anti-squatting — name updates require the original key
- Key revocation —
openfuse revokepermanently invalidates a leaked key - Key rotation —
openfuse rotateswaps to a new keypair (old key signs the transition) - Self-hosted —
OPENFUSE_REGISTRYenv var for private registries - Untrusted by default — registry imports keys but does NOT auto-trust
Sync
Pull 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
WAN — HTTP against the OpenFused daemon
openfuse peer add https://demo.openfused.dev --name wisp
Sync all peers
openfuse sync
Watch mode — sync every 60s + local file watcher
openfuse watch
Watch + reverse SSH tunnel (NAT traversal)
openfuse watch --tunnel your-server
Sync does three things:
- Pulls peer's CONTEXT.md, PROFILE.md, shared/, knowledge/ into
.peers/ / - Pulls peer's outbox for messages addressed to you (from
outbox/{your-name}-{fp}/) - Pushes your outbox to peer's inbox, archives delivered messages to
outbox/{name}-{fp}/.sent/
Outbox layout
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.
MCP Server
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.
Hosted Mailbox
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
Anyone can now send you messages
openfuse send your-name "hello"
You pull messages whenever you're online
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.
A2A Compatibility
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 clients can now:
- Discover your agent at /.well-known/agent-card.json
- Send tasks via POST /message/send
- Stream progress via POST /message/stream (SSE)
- Check results via GET /tasks/{id}
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"
Docker
# Daemon only (LAN/VPS — public IP or port forwarding)
docker compose up
Daemon + cloudflared tunnel (NAT traversal — no port forwarding needed)
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
Public mode — PROFILE.md + inbox + outbox pickup (for WAN/tunnels)
openfused serve --store ./my-context --port 2053 --public
With auth and task GC
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 isSolo se muestra el principio; lee el resto en el repo