Skip to main content
Glama

Fermi

Портативный ИИ-контроллер, реализованный как единый MCP сервер на Cloudflare Workers. Подключите его к Claude.ai, Claude Desktop, Claude Code, Cursor или ChatGPT — и они будут использовать общую память, общую модель разрешений и общие навыки. Для неавтоматизированных каналов (Telegram, Slack) он запускает собственный цикл вывода через Anthropic API.

Один сервер, одна память, один каркас разрешений — хост меняется, агент остаётся.

Подробная архитектура: docs/ARCHITECTURE.md. Настройка и повседневное использование: docs/USAGE.md.

Что он делает

  • Кросс-хостовая память — факты, предпочтения и события в D1, доступные с любого подключённого хоста. Ночное задание обобщает сессии, дедуплицирует почти идентичные воспоминания по схожести эмбеддингов и удаляет устаревшие.

  • Навыки — процедуры, хранящиеся как версионированные документы SKILL.md в R2 с метаданными в D1. Вы можете создавать их напрямую или продвигать из памяти; еженедельное задание предлагает черновики навыков из недавних сводок сессий для доработки.

  • Каркас разрешений — каждый инструмент объявляет область действия и уровень риска. Инструменты с высоким риском требуют двухфазный токен одобрения. Изменяющие инструменты блокируются в режиме планирования. Код оболочки проверяется по блок-листу. Каждый вызов аудируется в D1.

  • Хуки — декларативные deny-гейты с glob-сопоставлением, выполняемые перед инструментом, с приоритетом deny > ask > allow (сейчас применяется только deny).

  • Единый поиск — Reciprocal Rank Fusion (k=60) по возможностям, навыкам, воспоминаниям и истории сообщений, объединяющий ключевые слова, FTS5 и семантические каналы Vectorize.

  • Режим кода — инструмент execute запускает JavaScript в изолированной песочнице Worker, где возможности доступны как codemode.<name>(...). Исходящий HTTP проходит через шлюз, который внедряет секреты и применяет списки разрешённых хостов для каждого секрета.

  • Двухполосный браузер — безголовое облачное направление (Cloudflare Browser Rendering) для скрейпинга и видимое локальное направление (macOS-мост через Cloudflare Tunnel) для сайтов, требующих реального аппаратного отпечатка и аутентифицированного состояния.

  • Каналы и субагенты — вебхуки Telegram и Slack с собственным циклом вывода; team_spawn запускает субагентов с ролевыми промптами.

  • Живой Canvas — управляемый агентом интерфейс на Durable Object + WebSocket, сохраняющийся между ходами и хостами.

Related MCP server: Memclaw

Архитектура вкратце

 MCP Hosts ─┐
 Channels ──┼──► Cloudflare Worker ──► D1 · R2 · KV · Workers AI · Vectorize
 Cron ──────┘     (FermiMCP + 3 DOs)
  • Worker (src/index.ts) маршрутизирует MCP (/mcp, /sse), каналы, OAuth, хост /apps/*, WebSocket канваса и cron-диспетчеризацию. Когда FERMI_AUTH_ENABLED равно true, OAuth-провайдер ограничивает MCP-транспорты; в противном случае они открыты.

  • Durable Objects: FermiMCP (агент, на SQLite), LiveCanvasDO, SandboxStorageDO, BrowserSessionDO.

  • Хранилище: D1 (память, сессии/сообщения + FTS5, аудит, хуки, метаданные навыков, метаданные секретов, oauth), R2 (навыки, файлы, приложения), KV (конфигурация, токены одобрения), Workers AI (эмбеддинги + сводки), Vectorize (семантический индекс).

Полная диаграмма и потоки данных — в docs/ARCHITECTURE.md.

Два уровня инструментов

Fermi предоставляет инструменты на двух уровнях, и они намеренно не идентичны:

Уровень

Вызывающий

Количество

MCP-инструменты

подключённые хосты и каналы

~60 по умолчанию, ~85 с включённым macOS-мостом

Возможности песочницы

код, передаваемый в execute, как codemode.<name>(...)

39 (meta_list_capabilities)

MCP-инструменты по группам (для хостов):

Группа

Инструменты

Память

memory_recall, memory_write, memory_update, memory_delete, memory_list_recent

Навыки

skill_search, skill_load, skill_set, skill_delete

Поиск

search (unified RRF), session_search

Режим кода

execute

Файловая система

fs_read, fs_write, fs_list (R2, scope-checked)

Браузер (облако)

browser_navigate, browser_screenshot, browser_extract, browser_action

Сессии браузера

browser_session_launch, browser_session_action, browser_session_close, browser_session_list, browser_session_request_human, browser_session_resume

Канвас

open_generated_ui, canvas_update

Режим планирования

session_set_mode, plan_draft, plan_approve

Команда

team_spawn

Хуки

hooks_register, hooks_list, hooks_test

Секреты

secret_set, secret_list, secret_delete, secret_resolve, secret_approve_host

Мета

meta_list_capabilities, usage_stats

Коннекторы

connector_set, connector_get, connector_list, connector_delete

Пакеты

package_set, package_get, package_list, package_delete

Ретриверы

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

macOS-мост (опционально)

25 mac_* инструментов, регистрируются только при установленном MACOS_MCP_URL

Быстрый старт

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

⚠️ Разворачивайте с FERMI_AUTH_ENABLED:true (или установите его в vars в wrangler.jsonc). Без него MCP-транспорты полностью не аутентифицированы на публичном URL workers.dev — любой, кто его найдёт, сможет читать ваши воспоминания, получать сохранённые секреты и выполнять код. Открытый режим предназначен только для wrangler dev.

Затем загрузите встроенные навыки и проверьте реестр возможностей:

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

Полные инструкции, включая режимы аутентификации и настройку каналов, — в docs/USAGE.md.

Предварительные требования

  • Bun

  • Wrangler (bun add -g wrangler)

  • Аккаунт Cloudflare на платном тарифе Workers ($5/мес) — требуется для Durable Objects, Browser Rendering и Vectorize

Разработка

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)

Конфигурация

Секреты задаются командой wrangler secret put (значения вводятся интерактивно):

Секрет

Обязателен

Назначение

FERMI_SECRETS_KEY

да

Ключ шифрования для хранилища секретов

FERMI_OWNER_SECRET

когда FERMI_AUTH_ENABLED=true

Пароль владельца для экрана согласия OAuth и входа в /apps/*

FERMI_BEARER_TOKEN

для административных HTTP-эндпоинтов

Ограничивает /capabilities, /cron/capability-reindex, /admin/seed-skills

ANTHROPIC_API_KEY

для каналов / team_spawn

Цикл вывода для неавтоматизированного использования

TELEGRAM_BOT_TOKEN

необязательно

Канал Telegram

SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET

необязательно

Канал Slack

MACOS_MCP_URL, MACOS_MCP_TOKEN

необязательно

Локальный macOS-мост (включает инструменты mac_*)

Режим аутентификации управляется переменной FERMI_AUTH_ENABLED. Установите её в true, чтобы поместить MCP-транспорты за OAuth — рекомендуется для каждого развёрнутого экземпляра. Если она не задана, /mcp и /sse работают без аутентификации, что допустимо только для локального wrangler dev.

В режиме OAuth подключающиеся хосты саморегистрируются и попадают на экран согласия Fermi, который проверяет ваш секрет владельца и (после включения через totp_setup) код TOTP:

Fermi OAuth consent screen

Подключение хоста

Claude.ai (веб)

Настройки → Connectors → добавьте пользовательский коннектор, 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

Стоимость

Для одного пользователя ожидайте ~$8–20 в месяц: платный тариф Workers ($5) плюс переменные расходы на Browser Rendering и использование Anthropic API. D1/R2/KV/Vectorize при таком объёме остаются вблизи бесплатного уровня. MCP-хосты оплачивают собственный вывод; Fermi тратит средства только на вызовы моделей в неавтоматизированных каналах и team_spawn.

Лицензия

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