Skip to main content
Glama

Fermi

Un plano de control de IA portátil construido como un único servidor MCP en Cloudflare Workers. Conéctalo a Claude.ai, Claude Desktop, Claude Code, Cursor o ChatGPT y todos comparten la misma memoria, el mismo modelo de permisos y las mismas habilidades. Para canales no supervisados (Telegram, Slack) ejecuta su propio bucle de inferencia contra la API de Anthropic.

Un servidor, una memoria, una columna vertebral de permisos: el host cambia, el agente no.

Arquitectura en profundidad: docs/ARCHITECTURE.md. Configuración y uso diario: docs/USAGE.md.

Qué hace

  • Memoria entre hosts — hechos, preferencias y eventos en D1, recuperados desde cualquier host conectado. Un trabajo nocturno resume sesiones, deduplica recuerdos casi idénticos mediante similitud de embeddings y degrada los obsoletos.

  • Habilidades — procedimientos almacenados como documentos SKILL.md versionados en R2 con metadatos en D1. Puedes crearlos directamente o promoverlos desde un recuerdo; un trabajo semanal propone borradores de habilidades a partir de resúmenes de sesiones recientes para que los refines.

  • Columna vertebral de permisos — cada herramienta declara un alcance y un nivel de riesgo. Las herramientas de alto riesgo requieren un token de aprobación en dos fases. Las herramientas mutantes se bloquean en modo plan. El código de shell se examina contra una lista negra. Cada llamada se audita en D1.

  • Hooks — puertas de denegación declarativas, coincidentes por glob, que se ejecutan antes de una herramienta, evaluadas con precedencia deny > ask > allow (hoy deny es la decisión aplicada).

  • Búsqueda unificada — Fusión de Rango Recíproco (k=60) sobre capacidades, habilidades, recuerdos e historial de mensajes, combinando carriles semánticos de palabras clave, FTS5 y Vectorize.

  • Modo código — la herramienta execute ejecuta JavaScript en un sandbox de Worker aislado donde las capacidades son accesibles como codemode.<name>(...). El HTTP saliente pasa por una puerta de enlace que inyecta secretos y aplica listas de permitidos por secreto y por host.

  • Navegador de doble carril — un carril en la nube sin cabeza (Cloudflare Browser Rendering) para scraping y un carril local con cabeza (un puente macOS sobre Cloudflare Tunnel) para sitios que necesitan una huella de hardware real y estado autenticado.

  • Canales y subagentes — webhooks de Telegram y Slack con su propio bucle de inferencia; team_spawn ejecuta subagentes con roles indicados.

  • Live Canvas — interfaz dirigida por el agente sobre un Durable Object + WebSocket, persistente entre turnos y hosts.

Related MCP server: Memclaw

Arquitectura de un vistazo

 MCP Hosts ─┐
 Channels ──┼──► Cloudflare Worker ──► D1 · R2 · KV · Workers AI · Vectorize
 Cron ──────┘     (FermiMCP + 3 DOs)
  • Worker (src/index.ts) enruta MCP (/mcp, /sse), canales, OAuth, el host /apps/*, el WebSocket del canvas y el despacho de cron. Cuando FERMI_AUTH_ENABLED es true, un proveedor OAuth protege los transportes MCP; de lo contrario, están abiertos.

  • Durable Objects: FermiMCP (el agente, respaldado por SQLite), LiveCanvasDO, SandboxStorageDO, BrowserSessionDO.

  • Almacenamiento: D1 (memoria, sesiones/mensajes + FTS5, auditoría, hooks, metadatos de habilidades, metadatos de secretos, oauth), R2 (habilidades, archivos, apps), KV (configuración, tokens de aprobación), Workers AI (embeddings + resúmenes), Vectorize (índice semántico).

Consulta docs/ARCHITECTURE.md para el diagrama completo y el flujo de datos.

Dos superficies de herramientas

Fermi expone herramientas en dos capas, y deliberadamente no son idénticas:

Superficie

Llamador

Recuento

Herramientas MCP

hosts y canales conectados

~60 por defecto, ~85 con el puente macOS habilitado

Capacidades del sandbox

código pasado a execute, como codemode.<name>(...)

39 (meta_list_capabilities)

Herramientas MCP por grupo (orientadas al host):

Grupo

Herramientas

Memoria

memory_recall, memory_write, memory_update, memory_delete, memory_list_recent

Habilidades

skill_search, skill_load, skill_set, skill_delete

Búsqueda

search (RRF unificado), session_search

Modo código

execute

Sistema de archivos

fs_read, fs_write, fs_list (R2, con verificación de alcance)

Navegador (nube)

browser_navigate, browser_screenshot, browser_extract, browser_action

Sesiones de navegador

browser_session_launch, browser_session_action, browser_session_close, browser_session_list, browser_session_request_human, browser_session_resume

Canvas

open_generated_ui, canvas_update

Modo plan

session_set_mode, plan_draft, plan_approve

Equipo

team_spawn

Hooks

hooks_register, hooks_list, hooks_test

Secretos

secret_set, secret_list, secret_delete, secret_resolve, secret_approve_host

Meta

meta_list_capabilities, usage_stats

Conectores

connector_set, connector_get, connector_list, connector_delete

Paquetes

package_set, package_get, package_list, package_delete

Recuperadores

retriever_set, retriever_run, retriever_get, retriever_list, retriever_delete

OAuth

oauth_register_client, oauth_get_client, oauth_list_clients, oauth_delete_client, oauth_authorize_url, totp_setup

Puente macOS (opcional)

25 herramientas mac_*, registradas solo cuando MACOS_MCP_URL está configurado

Inicio rápido

git clone <repo-url> fermi && cd fermi
bun install
wrangler login

chmod +x bootstrap.sh
./bootstrap.sh my-instance-name        # provisions D1, R2, KV, Vectorize; writes wrangler.jsonc

cd packages/worker
wrangler secret put FERMI_SECRETS_KEY   # required: encrypts stored secrets
wrangler secret put FERMI_OWNER_SECRET  # owner password for the OAuth consent screen
wrangler secret put FERMI_BEARER_TOKEN  # gates the admin HTTP endpoints
bun run migrate:remote
wrangler deploy --var FERMI_AUTH_ENABLED:true

⚠️ Despliega con FERMI_AUTH_ENABLED:true (o configúralo en wrangler.jsonc vars). Sin él, los transportes MCP están completamente sin autenticación en una URL pública de workers.dev: cualquiera que la encuentre puede leer tus recuerdos, resolver tus secretos almacenados y ejecutar código. El modo abierto es solo para wrangler dev.

Luego siembra las habilidades incluidas y confirma el registro de capacidades:

curl -X POST https://<worker>/admin/seed-skills -H "Authorization: Bearer $FERMI_BEARER_TOKEN"
curl https://<worker>/capabilities             -H "Authorization: Bearer $FERMI_BEARER_TOKEN"

Instrucciones completas, incluidos los modos de autenticación y la configuración de canales, están en docs/USAGE.md.

Requisitos previos

  • Bun

  • Wrangler (bun add -g wrangler)

  • Una cuenta de Cloudflare en el plan de pago de Workers ($5/mes) — requerido para Durable Objects, Browser Rendering y Vectorize

Desarrollo

bun run dev            # wrangler dev --local
bun run check          # Biome lint + format check
bun run format         # auto-format
bun run migrate:local  # apply D1 migrations locally
bun run test           # vitest (worker package)

Configuración

Los secretos se configuran con wrangler secret put (los valores se ingresan interactivamente):

Secreto

Requerido

Propósito

FERMI_SECRETS_KEY

Clave de cifrado para el almacén de secretos

FERMI_OWNER_SECRET

cuando FERMI_AUTH_ENABLED=true

Contraseña del propietario para la pantalla de consentimiento OAuth y el inicio de sesión de /apps/*

FERMI_BEARER_TOKEN

para endpoints HTTP de administración

Protege /capabilities, /cron/capability-reindex, /admin/seed-skills

ANTHROPIC_API_KEY

para canales / team_spawn

Bucle de inferencia para uso no supervisado

TELEGRAM_BOT_TOKEN

opcional

Canal de Telegram

SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET

opcional

Canal de Slack

MACOS_MCP_URL, MACOS_MCP_TOKEN

opcional

Puente macOS local (habilita las herramientas mac_*)

El modo de autenticación se controla con la variable FERMI_AUTH_ENABLED. Configúrala en true para poner los transportes MCP detrás de OAuth — recomendado para cada instancia desplegada. Dejarla sin configurar sirve /mcp y /sse sin autenticación, lo cual solo es apropiado para wrangler dev local.

En modo OAuth, los hosts conectados se auto-registran y llegan a la pantalla de consentimiento de Fermi, que valida tu secreto de propietario y (una vez inscrito mediante totp_setup) un código TOTP:

Pantalla de consentimiento OAuth de Fermi

Conectar un host

Claude.ai (web)

Configuración → Conectores → agregar un conector personalizado, URL https://<worker>/sse.

Claude Desktop / Cursor / VS Code

{ "mcpServers": { "fermi": { "url": "https://<worker>/mcp" } } }

Claude Code

claude mcp add fermi --transport http https://<worker>/mcp

Costo

Para un solo usuario, espera ~$8–20/mes: el plan de pago de Workers ($5) más el uso variable de Browser Rendering y la API de Anthropic. D1/R2/KV/Vectorize se mantienen cerca del nivel gratuito a este volumen. Los hosts MCP pagan su propia inferencia; Fermi solo gasta en llamadas de modelo en canales no supervisados y team_spawn.

Licencia

MIT

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Governed shared memory platform for AI agents and agent fleets. Provides persistent memory, cross-agent knowledge sharing, permissions, audit trails, and multi-tenant isolation through a Model Context Protocol (MCP) server.
    4
    470
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that provides AI agents with persistent memory, cross-agent sharing, and context management, enabling them to remember conversations, track complex tasks, and evolve skills across tools.
    2
    MIT

View all related MCP servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/abel30567/fermi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server