Обзор
Технический вход в архитектуру. Та же история простым языком — Как это работает; эта страница называет сами решения и части, а дальше ведёт на страницы с деталями.
Одно решение определяет всё
Агент — это данные, а не процесс. Его конфиг, память, чаты и знания — строки и файлы в хранилище. Пока с ним никто не говорит, ничего не запущено и ничего не стоит.
Остальная архитектура — следствия этого одного решения:
- Мозг эфемерен. Никакого «сервера агента» нет.
apiзагружает данные агента, становится этим агентом на один турн — LLM-цикл крутится здесь — и отпускает. Тысячи агентов, ноль стоимости в простое. - Руки эфемерны. Когда турну нужен настоящий компьютер (bash, файлы, браузер), мозг поднимает
worker— изолированный k8s Job, который выполняет задачу и исчезает. Внутри нет LLM, памяти, секретов. - Всё состояние живёт вне compute. Postgres, Redis, object storage и LightRAG держат всё; любой запуск мозга или worker'а продолжает ровно с того места, где остановился предыдущий.
- Способности подключаются по MCP. Инструменты, знания и память присоединяются к мозгу через один стандартный разъём — мозг остаётся маленьким, а то, что агент умеет, — это конфигурация, а не код.
Картина целиком

Читайте снизу вверх: нижняя строка и есть агент; два блока над ней — одноразовый compute, который ненадолго его оживляет.
Один образ, две роли
api — одна кодовая база и один образ NestJS в двух ролях:
- Core — постоянно работающий control plane: HTTP API, auth, команды, биллинг, админка.
- Мозг — тот же образ, исполняющий турн агента («рантайм» в этих доках =
api, запущенный эфемерно, на турн).
Один образ — потому что турн трогает тот же домен, которым владеет Core: агенты, чаты, память, квоты, биллинг. Разделение означало бы дублировать этот домен в двух сервисах; вместо этого роль определяется способом вызова, и есть ровно одна вещь, которую собирают, версионируют и деплоят.
Что деплоится
| Часть | Роль | Жизненный цикл |
|---|---|---|
api | Core control plane + мозг агента (один образ) | всегда работает; работа мозга — на турн |
worker | руки — песочница (bash · fs · browser), эфемерный MCP-сервер | на задачу, останавливается по простою |
app / admin | кабинет клиента / админ-панель (Nuxt) | всегда работают |
| Postgres · Redis · object storage · LightRAG | всё состояние: агенты и чаты, очередь и события, артефакты, знания | всегда на месте |
Репозиторий
Один монорепо — github.com/Agentfy/agentfy — держит всю платформу:
agentfy/
├── api/ NestJS — Core + мозг (один образ); slices/ = 8 слоёв-групп
├── worker/ руки — образ-песочница (bash · fs · browser)
├── app/ Nuxt — кабинет клиента
├── admin/ Nuxt — админ-панель
├── k8s/ Helm-чарты + ArgoCD app-of-apps (GitOps)
├── terraform/ кластер и облачная инфра (IaC)
└── docs/ этот сайт документации (VitePress)Хребтовый инвариант
Внутри api код — это вертикальные слайсы CleanSlice в 8 строго упорядоченных группах — infra → setup → system → user → admin → runtime → agent → billing — и зависимости идут только вниз, без циклов. orchestrator (цикл мозга) сидит в группе agent и тянется вниз к механизмам; наверх не тянется никто. Это одно правило держит бэкенд распутанным по мере роста.
→ Глубже: Слои-слайсы (группы и правило) · Разбор слайсов (все подслайсы) · Модель рантайма (турн от и до).