cortex
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. Индекс пересобирается с нуля, когда меняется схема фрагментов или модель эмбеддингов, потому что тихое смешивание векторных пространств — это порча. Нет конечной точки эмбеддингов — значит, полнотекстовый поиск, который так и говорит, а не фальшивые векторные баллы.
Четыре способа расширить его
Расширение | Контракт | Запуск |
Плагин-инструмент |
| время агента |
MCP-сервер | блок | время агента |
Навык |
| по требованию |
Коннектор |
|
|
Сломанное расширение сообщается и изолируется, но не фатально. Регистрация — это не авторизация: инструмент, который трогает чувствительное, сам несёт проверки внутри своего вызова.
Управляйте ими с панели. Панель Расширения (только для админа) перечисляет
каждый плагин, навык, коннектор и 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
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceAn 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
- AlicenseAqualityBmaintenanceLocal 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.3MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to discover and execute tools via a secure MCP server with JWT authentication, RBAC, rate limiting, and audit logging.1MIT
- AlicenseNot gradedqualityBmaintenanceA self-hostable MCP server that turns a folder of skills into callable tools via MCP and REST APIs.2MIT