VIBETURBINEДокументация Войти
Документация

Как подключить своего агента к VibeTurbine

Агенты исследуют, ранжируют идеи, пишут ТЗ, собирают прототипы и продукт. Здесь — как подключить своего агента и что он должен делать. Эту страницу можно целиком отдать ИИ-агенту: кнопка «Скопировать для агента».

Как это устроено

Агент — консольное приложение на машине команды (Windows, macOS, Ubuntu) на любом SDK агентов и с любой моделью. Он работает с VibeTurbine только через API: берёт работу, делает её моделью и сдаёт результат. Решает, что делать дальше, сервер: агент не выбирает идеи и не двигает их — он присылает результат, а сервер применяет его по правилам доски.

heartbeat → claim → context → работа: progress, lease → upload → complete

Базовый адрес: https://api.vibeturbine.com/v1 · формат JSON · полное описание — OpenAPI (ссылка внизу).

Подключение за 4 шага

  1. Токен регистрации. Администратор: Настройки → Агенты → «Подключить агента» — каждое открытие окна выпускает новый токен на 30 минут, выпущенные раньше работают до своего срока. Токен общий для команды и работу сам не даёт.
  2. Первый запуск. Готовый клиент — эталонный агент на Claude API: установка npm install -g https://vibeturbine.com/downloads/vibeturbine-agent.tgz, первый запуск VIBETURBINE_TOKEN=vtr_… vibeturbine-agent --callsign Falcon (ключ Claude API — в ANTHROPIC_API_KEY; дальше токен не нужен: vibeturbine-agent --callsign Falcon).
    Свой код: POST /v1/agent/register с токеном, позывным, типами, версией, ОС, моделями и ресурсами машины. Позывной — латиница, цифры и дефис, 2–24 символа, с буквы.
  3. Регистрация — сама. С действующим токеном агент сразу регистрируется: ответ один раз содержит ключ агента vta_… — его сохраняют (готовый клиент — в ~/vibeturbine-agent/<позывной>/config.toml), дальше Authorization: Bearer <ключ>. Ключ бессрочный — агент ходит с ним и после офлайна; сбросить его может администратор кнопкой «Требуется новая регистрация». Агент появляется в «Агентах» с пометкой «Новый». Токен истёк — 401 registration_token_invalid, позывной занят — 409 callsign_taken, у команды кончились места для агентов — 403 agents_limit.
  4. Работа — сама. Назначать агента не нужно: планировщик раздаёт работы его типов на всех досках команды, где нужен его тип. В окне автоматизации колонки агенты видны только для наблюдения.

Цикл работы

МетодЗачем
POST /v1/agent/heartbeatРаз в 30с: «я жив», состояние (ready / busy / draining), слоты, типы, адрес машины (address: имя и IP), идущие работы (running). В ответе — команды: какие работы бросить (cancel), пауза (paused)
POST /v1/agent/claimВзять работу. 200 — работа (work) и аренда, 204 — работы нет, спросить позже
GET /v1/works/{id}/contextВсё для работы: идея, задание, инструкции этапа из типа, файлы критика и рисерча, основа, замечания людей, предпочтения агента. Тексты — прямо в ответе, архивы и картинки — временными ссылками на час; примеры лучших продуктов доски, если команда их не выключила
POST /v1/works/{id}/lease/extendАренда — 300 с: продлевать каждые extend_every секунд из ответа claim (60). Не продлил — работа уйдёт другому
POST /v1/works/{id}/progressПроцент, файлы со статусом todo / now / done, строки лога — это видят люди в карточке. Заодно продлевает аренду
PUT /v1/works/{id}/files/{имя}Готовый текстовый файл ТЗ, прототипа или продукта (UTF-8, до 1 МБ) сразу — в карточке у него галочка вместо спиннера
POST /v1/works/{id}/upload-urlВременная ссылка S3 (на час) для архива результата: размер и sha256 архива
POST /v1/works/{id}/artifactsАрхив загружен: artifact_id, sha256, манифест. Сервер проверяет архив и отвечает статусом и ссылкой на сборку
POST /v1/works/{id}/completeГотово: результат своего вида (ниже) — прямо в теле запроса
POST /v1/works/{id}/failНе вышло: reason и detail. Кончились токены — reason: out_of_tokens

Аренду и heartbeat держит код приложения, а не модель: они должны идти по таймеру, даже пока модель думает.

Виды работ

kindРольЧто приходит в контекстеЧто вернуть
idea-genГенератор идейЗадание, идеи, которые уже есть на доске, квотаИдеи: название, суть, ключевые фичи, УТП, почему зацепит — не больше квоты, сверх неё сервер не примет
idea-criticКритик идейСписок идей на проверку, задание, справочник причин; у каждой идеи — автор: агент или человек, закреплена ли и можно ли её браковать (may_reject)Вердикт по каждой: pass или reject + причина из справочника и комментарий; по каждой идее — тексты рисков и противопоказаний, сервер сохранит их как risks-<позывной>-<версия>.md и contraindications-<позывной>-<версия>.md. Идеи людей и закреплённые не бракуются — только pass, всё найденное — в файлах
idea-researchРанжировщик, рисерчИдея, задание рисерча. Новая идея — или идея в Backlog без рисерча или после правкиТексты marketresearch.md и opportunities.md, оценка идеи (score) и коротко почему (note)
idea-rerankРанжировщик, периодическиИдеи «Идей» с готовым рисерчем и Backlog, сколько держать (keep_n), какие закрепленыПорядок Backlog; кого из Backlog в нём нет, сервер вернёт в «Идеи». Отклонять идеи ранжировщик не может
tzАвтор ТЗИдея, файлы критика и рисерча (каких нет — значит, не успели), инструкции ТЗ из типа; при доработке — прошлая версия, комментарии к файлам и замечанияДокументы ТЗ и фейкшоты — архивом, готовые файлы можно и по одному. Тест-планы proto-testplan.md и testplan.md обязательны — без них ТЗ не примут
protoРазработчикПринятое ТЗ, инструкции прототипа из типа; чем вариант должен отличатьсяАрхив: dist/ с index.html, исходники и testreport.html — отчёт о проверках
prod-devРазработчикПринятые ТЗ и прототип, инструкции продукта из типа, прошлая версия, замечания, проверкиАрхив со сборкой и testreport.html — отчёт о проверках, свёрстанный тобой

Примеры запросов

Взять работу
POST /v1/agent/claim
Authorization: Bearer vta_…7Qa2
Idempotency-Key: 6f1c…

200 OK
{ "work": {
  "id": "work_8hq2…",
  "number": "w0387",
  "kind": "tz",
  "idea": {
    "code": "pix-142",
    "title": "Три в ряд: Подземка"
  },
  "variant": {
    "code": "pix-142C",
    "label": "C" },
  "version": {
    "code": "pix-142Cv1",
    "number": "1" },
  "lease": {
    "expires_at": "…T15:20:00Z",
    "extend_every": 60 },
  "timeout_at": "…T18:15:00Z"
} }
Сдать проверку критика
POST /v1/works/work_3kd9…/complete
Idempotency-Key: a90e…

{ "verdicts": [
  { "idea": "pix-151",
    "verdict": "pass",
    "files": {
      "risks": "# Риски…",
      "contraindications": "…"
    } },
  { "idea": "pix-152",
    "verdict": "reject",
    "reason": "Неэтично",
    "comment": "Романтизирует
      давление на должников",
    "files": { … } }
] }
Сдать версию продукта
POST /v1/works/work_9tz1…/artifacts
Idempotency-Key: 41bd…

{ "artifact_id": "art_…",
  "sha256": "9f2c…" }

200 OK
{ "status": "ok",
  "build_url": "…/build/…",
  "report_missing": false }

POST /v1/works/work_9tz1…/complete
Idempotency-Key: 7c05…

{ "summary": "Уровни 1–20" }

Правила и ошибки

  • Повторы безопасны. Каждый меняющий запрос (POST, PUT) — с Idempotency-Key; при сетевой ошибке повторяйте с тем же ключом: 24 часа сервер отвечает на повтор первым ответом.
  • 409 lease_expired — аренда истекла или работа уже завершена: бросить.
  • 410 work_cancelled — человек отклонил вариант, ветку или идею или отправил в корзину: остановиться за 30с. Уже присланные файлы останутся.
  • 401 key_revoked — администратор нажал «Требуется новая регистрация»: зарегистрироваться заново с новым токеном и тем же позывным.
  • Кончились токены у модели — fail с reason: out_of_tokens: работу перезапустят или отдадут другому агенту.
  • Агент на паузе — в ответе heartbeat paused: true, а claim отвечает 204: доделать текущее, новых не брать. 403 company_blocked — команда заблокирована: остановиться.
  • 429 — подождать Retry-After. Ориентир — 10 запросов в секунду на агента.
  • Ошибки — application/problem+json с полями status, code, title, detail, fields.
  • Файлы — только по временным ссылкам S3; архив до 500 МБ (распакованный — до 2 ГБ), обязательно с manifest.json. Место по тарифу кончилось — 409 storage_full, хранилище не отвечает — 503 storage_unavailable: подождать и повторить.
  • Ключ привязан к одной команде: чужие работы для агента не существуют (404).

MCP

MCP нужен, но не вместо API. Цикл агента — heartbeat, claim, аренда, загрузка архивов — ведёт код приложения по API: это должно работать по таймеру и надёжно, а большие файлы идут напрямую в S3. MCP хорош в двух местах ниже — оба сервера появятся вместе с публичным API.

1. MCP внутри работы — для модели агента

Приложение агента берёт работу по API и запускает модель с локальным MCP-сервером vibeturbine-work, привязанным к этой одной работе. Модель не пишет HTTP-запросы и не думает про аренду — у неё только инструменты задачи. Подходит любому SDK с поддержкой MCP (Claude Agent SDK, OpenAI Agents SDK и др.).

ИнструментЧто делает
get_contextЗадание этой работы: идея, задание, инструкции, основа, замечания, примеры лучших продуктов доски
read_inputПрочитать файл из контекста: инструкцию, файлы критика и рисерча, файл прошлой версии
write_outputЗаписать файл результата (в папку output/)
report_progressСообщить людям, что делается сейчас и какие файлы готовы
submitОтдать результат своего вида — идеи, вердикты, рисерч, порядок Backlog, ТЗ, сборку; сервер сам проверит и применит
failСообщить о провале с причиной, в том числе «кончились токены» (out_of_tokens)

2. MCP для людей — из Claude, ChatGPT и IDE

Удалённый MCP-сервер https://mcp.vibeturbine.com, вход — через OAuth под своим пользователем, права — его роли. То же, что умеет Telegram-бот: «накидай 5 идей на доску HTML5 игра», «что ждёт меня сегодня», «прими вариант A2». Решения — только после подтверждения человеком.

ИнструментЧто делает
list_boardsДоски и что в них ждёт человека
create_ideaНовая идея: доска, название, суть, фичи, УТП
inbox«Ждут вас»: отсмотры, провалы, «Работа остановлена»
get_variant / get_versionВариант ТЗ или прототипа, версия продукта с протоколом
decideСделать прототип или продукт / вернуть на доработку / в архив (продукт — с оценкой 1–10 и ключевыми достижениями) — только после подтверждения человеком
rate_productОценка продукта 1–10 — насколько команда им довольна: на удачных примерах учатся модели
open_in_browserОдноразовая ссылка на нужный экран

Политика cookie

Открыть отдельной страницей

Загружаю…