Swarm — arquitetura target
Sistema autônomo de criação e venda de produtos digitais. 6 agentes specialists + orchestrator, MCP tools no swarm-mcp.mjs, conversion tracking real, P&L por campanha.
Swarm — arquitetura target (refactor completo)
Sistema autônomo no VPS Hermes que cria produtos digitais (prompt-pack PDFs, planilhas, ebooks), publica em Gumroad/Cakto, roda ads Meta, mede ROAS real.
Conceito-chave: "Campanha" = unidade de negócio
- NÃO é Meta campaign (isso é "Ad" no swarm).
- É o pacote inteiro: nicho → 5 produtos → ads → P&L.
- Dashboard
/campanhasagrupa porswarm_campaign_id, drill-down mostra produtos individuais com receita/spend/P&L.
6 specialists + 1 orchestrator
| Agente | Model | Função |
|---|---|---|
| agent-orchestrator | Haiku primary | Recebe goal ("criar campanha low ticket"), fan-out via dispatch_agent MCP tool |
| agent-scouter | DeepSeek | Valida nichos (Reddit + lista confirmada Hotmart) |
| agent-maker | DeepSeek | Unifica creator-sheet/ebook/pdf + prompt-pack. Gera PDF 50 prompts + cover via make_prompt_pack |
| agent-publisher | DeepSeek | Roteia Gumroad (auto) ou Cakto (PUT + cover upload) |
| agent-marketing | DeepSeek | Cria campanha Meta publish_meta_campaign_portfolio (1 camp / N adsets CORRETO) |
| agent-campaign-manager | Haiku | Cron @daily 03h UTC: pull insights, decide kill/scale/realloc |
Tools MCP swarm (openclaw/scripts/swarm-mcp.mjs, 1700+ linhas)
Categorias:
- DB: insert_niche, list_niches, insert_product, list_products, update_product, upsert_metric, etc.
- Gumroad: gumroad_get_user, gumroad_create_product, gumroad_update_product
- Cakto: cakto_list_products, cakto_get_product, cakto_update_product, cakto_create_offer, cakto_setup_webhook, cakto_upload_image (SPA Bearer+cookies)
- Meta: publish_meta_campaign (single), publish_meta_campaign_multi (3 variantes), publish_meta_campaign_portfolio (1 camp N adsets — recomendado), pull_campaign_insights, record_campaign_decision, realloc_meta_budget
- Dispatch: dispatch_agent, list_agent_events
- Workflow: create_swarm_campaign, list_swarm_campaigns, attach_product_to_campaign, check_workflow_idempotency, record_workflow_start, record_workflow_finish
- Learnings: record_learning, query_learnings
- Telegram: send_telegram_alert
- Maker: make_prompt_pack, create_product_with_pdf/sheet/ebook (legados, manter)
- Publisher: publish_product (router Gumroad/Cakto), update_product_external
- Scraper: scrape_marketplace (wraps Playwright)
Conversion tracking — real, não proxy
- Publisher injeta UTM:
?utm_source=meta&utm_medium=paid&utm_campaign={{campaign.id}}&utm_content={{ad.id}}(Meta macros, substituídos no click). - Webhooks Gumroad + Cakto recebem em
/api/webhooks/{gumroad,cakto}no dashboard → tabelaproduct_sales. /campanhascalcula ROAS real (revenue/spend), não LPV proxy.
Cakto SPA — pattern de integração descoberto via DevTools
OAuth público (/public_api/) tem GET produtos + PUT (update partial). MAS:
- POST product (criar): NÃO existe via OAuth
- contentDeliveries enum, image upload, etc: só via SPA interna (
api.cakto.com.br/api/)
Pattern descoberto:
- Endpoints:
/api/products/(POST cria placeholder),/api/product/<uuid>/image/(PUT multipart) - Auth: Bearer JWT (capturado de localStorage) + cookies (sessionid, csrftoken, session-Rghd*) +
x-csrftokenheader - Workflow: user dropdown DevTools → Copy as cURL → eu replay no swarm
- Documentado em cakto-spa-integration
Estado Phase 1 (2026-05-31)
- ✅ 10 produtos gerados (5 EN-US Gumroad + 5 PT-BR Cakto)
- ✅ 5 PT-BR Cakto: title/desc/preço/sales_page/cover (5/5 covers up)
- ✅ Webhook Cakto setup (5 products UUIDs, evento purchase_approved)
- ✅ swarm_campaign "Phase 1 — Low-cost prompt-pack EN+PT" com 12 produtos
- ⏳ 5 EN-US: aguardando reset Gumroad daily cap (auto-publish agendado phase1_finalize.sh)
- ⏳ contentDeliveries Cakto enum "Acesso por email": user vai mandar curl DevTools
Onde mora o quê
- Código:
/home/swarm/(git main) — ver conventions - Configs externas (agents, openclaw.json, systemd, cron):
/home/swarm/config/(sanitizado) - DB Postgres 17:
infra/docker-compose.yml(swarm-db container, porta 5440) - Dashboard Astro SSR:
dashboard/(container infra-dashboard-1) - Tracking de landing pages em tempo real:
tracker/(container infra-tracker-1, snippet/t.js+ WebSocket) — ver tracking - MCP gateway: systemd user service
openclaw-gateway.service(porta 18789) - Cron:
campaign_manager_cron.sh@daily 03h UTC
Próximos passos (não-bloqueantes)
- contentDeliveries enum → fechar pipeline Cakto end-to-end
- Push repo pro GitHub (
github.com/kodama1/swarm?) - Launcher UI dashboard
/orchestratorcom SSE stream agent_events - Schema split
kits_metadatajsonb → tabelas próprias (dívida, não bloqueia)