Rakazo — платформа для постоянно работающих AI-компаньонов

· 2 мин чтения
ai-agents self-hosted open-source typescript docker
📂 Исходный код на GitHub

Open-source платформа для постоянно работающих AI-компаньонов: веб, десктоп и мобильное приложение, собственная модель и собственный компьютер для каждого бота.

Rakazo — платформа для постоянно работающих AI-компаньонов

Rakazo — это открытая платформа, на которой постоянно живут AI-компаньоны. Это не разовый запрос к модели и не окно чата. У каждого компаньона свои разговоры, своя память, свои рутины и своя история. Он получает компьютер, в котором может открыть браузер, терминал и файлы. Есть веб-версия, приложение для компьютера на Electron и мобильное приложение на Expo. Модель и провайдера компьютеров вы выбираете сами. Лицензия — Apache 2.0. Проект сейчас в статусе beta.

Что умеют компаньоны

Постоянная память. У компаньона есть собственная память, свои рутины и своя история диалогов. Он не начинает каждый раз с нуля.

Голос. Компаньон умеет говорить, слушать и звонить. Ключ от сервиса распознавания и синтеза речи вы приносите свой: ElevenLabs, OpenAI, Cartesia или Fish Audio.

Доступ к компьютеру. У компаньона есть браузер, терминал, файлы и графический рабочий стол. Провайдер песочницы выбирается из списка: Docker, E2B, Daytona, CreateOS, Box, а также доверенный локальный компьютер.

Общие и личные компьютеры. У ботов команды есть общий компьютер. Можно также включить режим, где у каждого бота свой личный компьютер. Папки bots/<bot-id>/ и shared/ в общем компьютере только разделяют работу, но не дают изоляции. Если задачи не должны видеть друг друга, нужны отдельные компьютеры.

Делегирование. Бот может передать часть работы другому боту или короткоживущему подагенту.

Свои инструменты. Rakazo умеет подключать приложения через Composio и Pipedream Connect. Пользователь может сам добавить удалённый MCP-сервер, endpoint Treg или JSON-документ OpenAPI. Секреты интеграций шифруются на сервере и никогда не отдаются через API.

Как устроен компьютер бота

Авторы разделяют два слоя. Слой агента — это работа модели и её инструментов. Слой компьютера — это операционная система, браузер и файлы. Между ними стоит SandboxProvider. Это провайдер, который умеет создавать и останавливать машину, показывать экран, выполнять команды и работать с файлами.

Агентная часть работает в процессе API и воркера. Внутри песочницы агент не установлен. Встроенные инструменты — обычные инструменты Pi, поэтому их может вызывать любая модель, доступная через Pi. Для работы с экраном нужна модель, которая умеет понимать изображения.

Каждый активный бот в общем компьютере получает свой X-дисплей и свой процесс Chrome с постоянным профилем. Профиль привязан к боту, поэтому авторизации, cookies и история браузера у разных ботов не смешиваются. Терминал работает от имени обычного пользователя и никогда от root. Граница безопасности — контейнер компьютера, а не папка.

Быстрый старт без клонирования

Нужны Docker Engine, плагин Compose, curl и OpenSSL. Node.js и копирование репозитория не нужны.

mkdir -p rakazo && cd rakazo &&
curl -fsSLO https://raw.githubusercontent.com/elie222/rakazo/main/infra/compose/install-images.sh &&
bash install-images.sh

Скрипт скачивает Compose-файлы, создаёт .env со случайными секретами и запускает Rakazo. Если .env уже есть, скрипт его не трогает.

Дальше откройте http://127.0.0.1:5173, заведите аккаунт и подключите модель. Локальные Docker-компьютеры включены сразу. Удалённые провайдеры (e2b, daytona, createos, box) подключаются добавлением нужного API-ключа.

По умолчанию ставится образ с тегом edge. Он собирается из main и поддерживает linux/amd64 и linux/arm64. Подробности про образы и про сети с ограничениями — в гайде по self-hosting.

Установка на свой сервер

Когда бэкенд стоит на сервере, компаньоны не останавливаются, пока вы закрываете вкладку в браузере. Тот же установочный скрипт запускают на VPS, а подключаются потом из десктопного приложения, с телефона или из браузера.

bash install-images.sh --prepare-only
# edit .env: SANDBOX_PROVIDER=box (or e2b / daytona / createos) with its API key, RAKAZO_HOST=your.domain
bash install-images.sh

Порт 5173 нужно закрыть HTTPS. Настройку Caddy и усиление защиты хоста описывает гайд по self-hosting. В десктопном приложении выбираете Existing instance и вводите адрес с https://.

Локальная разработка

Нужен Node.js 22.22.2 или новее в ветке 22.x, либо 24.x, либо 26+. Нужен pnpm 9 и Docker. Ветки 23.x и 25.x не поддерживаются.

git clone https://github.com/elie222/rakazo.git
cd rakazo
cp .env.example .env

Дальше задайте секреты. Нужен POSTGRES_PASSWORD (например, openssl rand -hex 16) и то же значение в DATABASE_URL. Отдельно задаются BETTER_AUTH_SECRET, ENCRYPTION_KEY и SCREEN_PROXY_SECRET. Для Docker-песочниц нужен ещё свой SANDBOX_SUPERVISOR_TOKEN. Ключ OPENROUTER_API_KEY необязателен: модель можно подключить при первом входе.

docker compose --env-file .env \
  -f infra/compose/docker-compose.yml \
  -f infra/compose/docker-compose.postgres-host.yml \
  up postgres -d
pnpm install
pnpm db:generate
pnpm db:migrate
pnpm sandbox:build
pnpm dev

После этого откройте http://127.0.0.1:5173, заведите аккаунт, подключите модель и создайте первого компаньона.

Секреты и учёт

Postgres по умолчанию не публикуется наружу: он доступен только внутри Compose-сети. Оверлей postgres-host.yml открывает 127.0.0.1:5433, чтобы к базе можно было подключиться с самого хоста. В пароле не должно быть символов, которые ломают URI, — помогает openssl rand -hex 16. Том pgdata сохраняет пользователя, пароль и базу с первого запуска, поэтому держите эти значения в .env. Команда docker compose down -v удаляет всё состояние Postgres, и делать это стоит только после бэкапа.

Подробный список переменных и секретов — в self-host secrets.

Treg тарифицируется по объёму использования. Для self-hosting нужен свой токен Treg. Если вы встраиваете Treg в продукт для других людей, сначала прочитайте условия интеграции Treg.

Приложения для компьютера и телефона

Electron- и Expo-приложения — клиенты того же API, что и веб-версия.

При первом запуске десктопное приложение спрашивает, где запускать Rakazo: на этом компьютере или на уже готовом сервере. Вариант «этот компьютер» ставит и запускает опубликованные образы через Docker Compose в папке данных приложения, поэтому Docker Desktop, OrbStack или Docker Engine должен быть установлен. Готовые сборки привязываются к тегу своей версии, а dev-сборки тянут edge. Стек продолжает работать после закрытия приложения, а пункт Stop Local Stack в меню его останавливает.

Публичные серверы должны работать по HTTPS. HTTP принимается только для loopback и адресов локальной сети. Перед тем как сохранить адрес, приложение проверяет, отвечает ли Rakazo на проверочный запрос.

Стек и структура репозитория

Слой Технологии
Язык и интерфейс TypeScript, React 19, Vite, Tailwind CSS
Приложения Electron, Expo
Серверная часть Hono, oRPC, Graphile Worker
Данные и доступ PostgreSQL, Prisma, Better Auth
Агентная часть Pi
Песочницы Docker, E2B, Daytona, CreateOS, Box
Интеграции Composio, Pipedream Connect, MCP, OpenAPI

Структура репозитория разделена на четыре части:

apps/       web, api, worker, desktop, mobile, and public website
packages/   domain, contracts, persistence, adapters, UI, and test tooling
infra/      local services and computer images
docs/       architecture, operations, and release guides

Проверки перед коммитом: pnpm lint, pnpm check, pnpm test, pnpm test:integration, pnpm test:e2e. Подробности о разработке — в CONTRIBUTING.md.

Состояние проекта

Проект в статусе beta. На момент написания у репозитория около 3100 звёзд. Лицензия — Apache 2.0, текст лежит в LICENSE. Вопросы и обсуждения идут в Discord-сообщество Rakazo. Остальная документация лежит в папке docs: computer runtime, выпуски десктопной версии, выпуски мобильной версии и тесты производительности.

Источник: https://github.com/elie222/rakazo