Skip to main content
Glama

cortex

Самостоятельный мозг для дома или команды: панель, где люди общаются друг с другом и с агентом, который прочитал их общие заметки — на вашей собственной модели, на вашей собственной машине.

Статус: альфа. API и конфигурация ещё устаканиваются; ожидайте ломающих изменений между минорными версиями. Форматы индекса и чекпоинтов — это одноразовые кэши: удаление .cortex/ теряет переписки, но не заметки.

pip install cortxai
cortex setup                 # wizard: brain dir, model endpoint, admin account
cortex serve --host 0.0.0.0  # dashboard on :8642

Или bash install.sh (автоопределение pipx/uv/venv), или docker compose up после одноразового cortex setup /brain, описанного в docker-compose.yml.

Чего он не делает: cortex не размещает модель — вы подключаете свою конечную точку: Ollama, vLLM, LM Studio, прокси LiteLLM, OpenRouter или API Anthropic. Векторный поиск — это точный косинус в процессе, подходящий для личных и командных мозгов, но не для миллионов фрагментов. Правки хранилища — это «последний пишущий побеждает» с обнаружением конфликтов (баннер 409), а не слияние уровня git. Календарный коннектор пока не раскрывает правила повторений.

Панель

  • Чаты — приватные переписки с агентом. Он ищет, прежде чем отвечать, стримит свои вызовы инструментов (⚙ search_brain … ✓ 33ms) и цитирует файлы по пути; клик по цитате открывает её в просмотре хранилища.

  • Каналы — общие переписки для людей. Упомяните @cortex — и агент ответит прямо в канале, читая только общее хранилище — никогда чьи-то личные.

  • Хранилище — общие и личные хранилища, редактируемые в браузере с рендерингом в стиле Obsidian: [[вики-ссылки]], ![[встраивания]], > [!note] коллауты, frontmatter, чекбоксы задач с записью обратно, #теги. Ctrl-S сохраняет; параллельная правка даёт баннер конфликта, а не тихую перезапись.

  • Импорт — перенесите существующее хранилище Obsidian через загрузку zip, git-URL или путь на сервере. .obsidian/, .git/ и не-заметочные типы файлов пропускаются.

  • Администрирование — учётные записи (admin / member), статистика индекса.

Учётные записи — это имя пользователя + пароль (scrypt), сессии — HttpOnly-куки. Каждый пользователь видит общее хранилище, своё личное и источники коннекторов — поиск, grep и агент ограничены в рамках запроса, фильтрация происходит внутри запроса, а не после него.

Related MCP server: claudecode-mcp

Стек агента

ReAct-агент LangGraph поверх чат-моделей LangChain, с состоянием переписки в чекпоинтах AsyncSqliteSaver на каждый поток:

providers:
  local:
    kind: openai                    # Ollama, vLLM, LM Studio — one wire
    base_url: "http://localhost:11434/v1"
    chat_model: qwen3
    embed_model: nomic-embed-text
  router:
    kind: openrouter                # cloud aggregator, OpenAI wire
    api_key_env: OPENROUTER_API_KEY
    chat_model: anthropic/claude-sonnet-5
  claude:
    kind: anthropic                 # direct Anthropic Messages API
    api_key_env: ANTHROPIC_API_KEY
    chat_model: claude-sonnet-5
roles:
  chat: router
  embed: local

Прокси LiteLLM — это kind: litellm с его base_url — маршрутизация и политика отказов остаются в прокси, поэтому cortex не несёт в себе SDK LiteLLM. Конечные точки классифицируются по сетевым фактам: приватные, loopback, CGNAT и адреса Tailscale считаются доверенными; всё публичное получает простое предупреждение, что ваши заметки покинут сеть.

Поиск гибридный: SQLite FTS5 и векторный косинус ранжируются раздельно, затем объединяются с помощью reciprocal rank fusion и подправляются свежестью — та же схема, что в базе знаний Cerebras. Индекс пересобирается с нуля, когда меняется схема фрагментов или модель эмбеддингов, потому что тихое смешивание векторных пространств — это порча. Нет конечной точки эмбеддингов — значит, полнотекстовый поиск, который так и говорит, а не фальшивые векторные баллы.

Четыре способа расширить его

Расширение

Контракт

Запуск

Плагин-инструмент

plugins/*.py, экспортирующий register(registry), или пакет с точкой входа cortex.tools

время агента

MCP-сервер

блок mcp_servers: (stdio или streamable HTTP), подключаемый через langchain-mcp-adapters

время агента

Навык

skills/<name>/SKILL.md (agentskills.io), загружаемый лениво через use_skill

по требованию

Коннектор

connectors/*.py, экспортирующий sync(out_dir, settings) — дистиллируй, не сваливай

cortex connectors run

Сломанное расширение сообщается и изолируется, но не фатально. Регистрация — это не авторизация: инструмент, который трогает чувствительное, сам несёт проверки внутри своего вызова.

Управляйте ими с панели. Панель Расширения (только для админа) перечисляет каждый плагин, навык, коннектор и MCP-сервер с тем, что он предоставляет, его ошибкой загрузки, если она есть, и переключателем включения, который никогда не правит ваш исходный файл. Вы можете написать плагин или коннектор прямо в браузере: он загружается до сохранения, поэтому код, который не импортируется, отклоняется с собственным сообщением загрузчика, а не тихо ломает следующий ход, и успешное сохранение пересобирает агента, так что новый инструмент работает без перезапуска. У коннекторов есть поле настроек и кнопка «Запустить сейчас»; у MCP-серверов есть форма. Серверы, определённые в cortex.yaml, отображаются только для чтения — файл остаётся источником истины для того, что он объявляет.

Сохранение плагина или коннектора запускает этот код на сервере под пользователем cortex. Это тот же уровень доверия, что и настройка stdio MCP-сервера, и именно поэтому панель доступна только админу. Из терминала cortex ext list, cortex ext disable plugin <name> и cortex ext delete делают то же управление без браузера.

Cortex также является MCP-сервером — claude mcp add home-brain -- cortex mcp --brain ~/brain даёт Claude Code, Cursor или Hermes тот же реестр инструментов, в масштабе владельца машины.

Структура мозга

~/brain/
├── cortex.yaml        # providers, roles, mcp servers, connectors
├── vaults/shared/     # everyone's notes
├── vaults/<user>/     # each user's private vault
├── sources/           # connector output
├── skills/ plugins/ connectors/
└── .cortex/           # index, checkpoints, usage.jsonl — disposable cache

Скопируйте папку — и всё. Домашний мозг, корпоративный мозг, клубный мозг: три папки, три процесса cortex serve.

Наблюдаемость

Каждый вызов модели и инструмента дописывает JSONL в .cortex/usage.jsonl с prompt_tokens/completion_tokens, когда конечная точка их сообщает — если их нет, они и остаются отсутствующими, а не превращаются в нули, чего и ждёт preflight для калибровки. Телеметрия никогда не роняет вызов.

Разработка

uv venv --python 3.12 && uv pip install -e '.[dev]'
.venv/bin/pytest                    # 102 tests
.venv/bin/ruff check src tests
cd web && npm install && npm run dev   # SPA dev server, proxies to :8642

Контракт фронтенда описан в docs/product-spec.md; релизный процесс — в RELEASING.md.

Документация: unchained-labs.github.io/cortex · Бренд: Unchained-Labs/branding · Лицензия: MIT

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    An MCP server that transforms Claude-style skills and resources into callable tools for any MCP-compatible agent or client. It automatically discovers, exposes, and executes scripts from skills organized in local directories or packaged archives.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Local MCP server that wraps the headless Claude Code CLI as MCP tools, providing stateless access to Claude's coding capabilities through prompt-based interactions. It enables users to execute Claude Code commands with various prompt formats and structured outputs directly from MCP clients.
    3
    MIT