Большинство современных веб-ассистентов страдают от фундаментального ограничения: их жизнь длится ровно столько, сколько остается открытой вкладка браузера. Стоит случайно закрыть страницу или свернуть мобильное приложение, как выполнение сложного многошагового сценария аварийно обрывается, а накопленный контекст теряется.
Команда CopilotKit выпустила проект OpenMuse — открытую систему персонального ИИ-агента под лицензией MIT, решающую эту проблему на уровне архитектуры. Агент отделен от пользовательского интерфейса и функционирует как самостоятельный фоновый сервис, управляющий собственным headless-браузером и изолированной консолью Linux.
Архитектура четырех компонентов: от интерфейса до песочницы
Чтобы обеспечить стабильную работу без привязки к сессии клиента, OpenMuse разделяет обязанности между четырьмя специализированными сервисами:
- Клиентский слой (
apps/mobile): кроссплатформенный интерфейс для Web, iOS и Android на базе React Native и протокола AG-UI (Agent–User Interaction), транслирующий ход рассуждений и элементы генеративного UI в реальном времени. - Сервер оркестрации (
apps/server): центральный узел управления задачами (Task Engine) с базой данных PG Lite или внешним PostgreSQL. Механизм SQL-лизинга гарантирует, что при перезапуске системы прерванная задача автоматически продолжится с последнего успешного шага. - Браузерный воркер (
apps/worker): изолированный сервис на базе Playwright и Chromium, выполняющий реальную навигацию по веб-страницам, заполнение веб-форм и сбор данных. - Консоль агента (
apps/computer): изолированный Docker-контейнер без root-привилегий с жестким тайм-аутом на команды в 30 секунд, где агент безопасно работает с файлами и утилитами.
Ключевой особенностью интерфейса стала функция интерактивного перехвата «Take control»: пользователь видит живую трансляцию экрана браузера агента и может в любой момент нажать кнопку, чтобы вручную решить капчу или ввести код двухфакторной аутентификации, после чего агент продолжит работу по плану.
Пошаговое развертывание персонального ассистента
Для локального запуска требуются Node.js версии 24 LTS, менеджер пакетов pnpm 11.19.0 и Docker.
Сначала клонируется репозиторий проекта и устанавливаются зависимости:
git clone https://github.com/CopilotKit/openmuse.git
cd openmuse
pnpm install --frozen-lockfile
Далее настраиваются переменные окружения в файле .env. Для персистентности тредов генерируется серверный ключ проекта через утилиту CopilotKit:
# Авторизация и генерация ключа CopilotKit Intelligence
npx copilotkit@latest login
npx copilotkit@latest project select
В файле конфигурации .env задаются параметры базы данных и сгенерированные ключи:
CPK_INTELLIGENCE_API_KEY=cpk_sec_live_example_key_value
COPILOTKIT_PUBLIC_KEY=cpk_pub_live_example_key_value
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/openmuse
PORT=3000
Для изоляции веб-навигации запускается фоновый воркер Playwright через Docker Compose:
# compose.worker.yaml
version: '3.8'
services:
browser-worker:
image: mcr.microsoft.com/playwright:v1.48.0-jammy
environment:
- PORT=3001
- WORKER_AUTH_TOKEN=secret_local_token_123
ports:
- "3001:3001"
command: ["node", "dist/worker.js"]
restart: unless-stopped
Контейнер воркера поднимается командой:
docker compose -f compose.worker.yaml up -d
После старта браузерного сервиса в отдельных терминалах запускаются API-сервер оркестрации (pnpm dev) и веб-клиент (pnpm dev:web), открывающийся по адресу http://localhost:8081.
Безопасность и границы применимости
Несмотря на широкие возможности автоматизации, OpenMuse требует аккуратности при настройке интеграций с почтой (Gmail) и календарем. Для предотвращения нежелательных действий в архитектуру заложен принцип human-in-the-loop: перед отправкой писем или удалением событий агент всегда запрашивает подтверждение.
Проект находится на стадии Alpha и не предназначен для прямого размещения в публичной сети без VPN или проксирующего шлюза. Однако для разработчиков, ищущих открытую альтернативу проприетарным облачным ассистентам, OpenMuse предлагает готовую масштабируемую базу для построения по-настоящему автономного помощника.
