Sistema multi-agente hierárquico baseado em OpenClaw, pronto para deploy em VPS DigitalOcean com Supabase como Data Layer.
Renaldo (CEO / Human)
└── Amora (L4 · Autonomous) — github-copilot/gpt-4o
├── Planner (L3 · Operator) — github-copilot/gpt-4o
│ ├── Orchestrator (L2 · Advisor) — github-copilot/gpt-4o
│ ├── Dev (L2 · Advisor) — github-copilot/gpt-4o
│ └── QA (L2 · Advisor) — github-copilot/gpt-4o
├── Scraper (L1 · Observer) — github-copilot/gpt-4o
└── Content (L1 · Observer) — github-copilot/gpt-4o
Comunicação flui para cima (agente → supervisor). Coordenação flui para baixo via Amora. Agentes não falam diretamente entre si (por enquanto).
| Agente | Nível | Papel | Modelo | Heartbeat | Triggers |
|---|---|---|---|---|---|
| Amora | L4 | Autonomous | github-copilot/gpt-4o | 30min | Telegram HQ + DM |
| Planner | L3 | Operator | github-copilot/gpt-4o | Sob demanda | Telegram tópico 719 |
| Orchestrator | L2 | Advisor | github-copilot/gpt-4o | — | Planner / Amora |
| Dev | L2 | Advisor | github-copilot/gpt-4o | 10min* | Planner / Amora |
| QA | L2 | Advisor | github-copilot/gpt-4o | — | Amora (spawned) |
| Scraper | L1 | Observer | github-copilot/gpt-4o | — | Amora |
| Content | L1 | Observer | github-copilot/gpt-4o | — | Amora (spawned) |
*futuro
- VPS Ubuntu 22.04 com mínimo 4GB RAM (ex: DigitalOcean Droplet)
- Domínio apontando para o IP da VPS
- Docker 24+ e Docker Compose v2
- Conta GitHub Copilot com API Key
- Contas Supabase, Telegram Bot, Discord Bot
- 1Password CLI instalado (
op) — Regra #4
Pule este passo se já tiver o Docker instalado.
# Instalar dependências
sudo apt-get update
sudo apt-get install -y curl git
# Instalar Docker via script oficial
curl -fsSL https://get.docker.com | sudo sh
# Adicionar seu usuário ao grupo docker (evita usar sudo a cada comando)
sudo usermod -aG docker $USER
newgrp docker
# Verificar instalação
docker --version
docker compose version# Ubuntu/Debian
curl -sS https://downloads.1password.com/linux/keys/1password.asc \
| sudo gpg --dearmor --output /usr/share/keyrings/1password-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/1password-archive-keyring.gpg] \
https://downloads.1password.com/linux/debian/$(dpkg --print-architecture) stable main" \
| sudo tee /etc/apt/sources.list.d/1password.list
sudo apt-get update && sudo apt-get install -y 1password-cli
# Verificar instalação
op --versiongit clone https://github.com/renaldodev/copenclaw-multi-agents.git
cd copenclaw-multi-agentscp .env.example .env
nano .envPreencha todas as variáveis obrigatórias:
| Variável | Como obter |
|---|---|
GITHUB_COPILOT_API_KEY |
GitHub Settings → Copilot |
SUPABASE_DB_PASSWORD |
Senha forte para o PostgreSQL local |
SUPABASE_ANON_KEY |
Gerado pelo Supabase ou use openssl rand -base64 32 |
SUPABASE_SERVICE_KEY |
Gerado pelo Supabase ou use openssl rand -base64 32 |
SUPABASE_URL |
http://localhost:8000 (padrão local) |
TELEGRAM_BOT_TOKEN |
@BotFather no Telegram |
DISCORD_BOT_TOKEN |
Discord Developer Portal |
OP_SERVICE_ACCOUNT_TOKEN |
1Password Service Account |
# Substitua SEU_DOMINIO pelo seu domínio real (ex: openclaw.meusite.com)
sed -i 's/YOUR_DOMAIN_HERE/SEU_DOMINIO/g' nginx/conf.d/default.confOu edite manualmente:
nano nginx/conf.d/default.conf
⚠️ Antes de continuar, certifique-se de que a porta 80 está aberta no firewall:sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
sudo apt-get install -y certbot
sudo certbot certonly --standalone -d SEU_DOMINIO \
--email SEU_EMAIL --agree-tos --non-interactiveSubstitua
SEU_DOMINIOpelo seu domínio (ex:openclaw.meusite.com) eSEU_EMAILpelo seu e-mail real.
Opção A — Script automático (recomendado para VPS nova):
sudo bash setup-digitalocean.shOpção B — Manualmente:
# Baixar imagens
docker compose pull
# Subir todos os serviços em background
docker compose up -d
# Acompanhar logs em tempo real
docker compose logs -f# Listar containers e verificar status "Up"
docker compose ps
# Testar gateway OpenClaw
curl -s http://localhost:3000/health
# Testar Supabase API (PostgREST) — deve retornar JSON com os 7 agentes do seed
curl -s http://localhost:8000/agentsResultado esperado: todos os containers com status Up e o endpoint /agents retornando os 7 agentes do seed.
| Serviço | URL |
|---|---|
| OpenClaw Gateway | https://seu-dominio.com |
| OpenClaw UI | https://seu-dominio.com:4000 |
| Supabase API | https://seu-dominio.com/supabase/ |
# Parar todos os serviços
docker compose down
# Reiniciar um serviço específico
docker compose restart openclaw
# Ver logs de um serviço específico
docker compose logs -f openclaw
# Atualizar para nova versão
git pull
docker compose pull
docker compose up -d
# Acessar o banco de dados
docker compose exec supabase-db psql -U postgres -d postgrescopenclaw-multi-agents/
├── openclaw.json # Configuração principal dos agentes
├── docker-compose.yml # Orquestração dos serviços
├── .env.example # Template de variáveis de ambiente
├── setup-digitalocean.sh # Script de setup para VPS Ubuntu
├── supabase/
│ └── init.sql # Schema completo do banco de dados
├── nginx/
│ └── conf.d/
│ └── default.conf # Configuração do reverse proxy
├── shared/
│ ├── TEAM.md # Org chart vivo (lido por todos os agentes)
│ ├── RULES.md # 10 Regras Invioláveis
│ └── lessons/ # Lições aprendidas por agente (Regra #9)
└── workspaces/
├── amora/
│ ├── SOUL.md # Identidade, valores e guardrails
│ └── WORKING.md # Contexto atual da task
├── planner/
├── orchestrator/
├── dev/
├── qa/
├── scraper/
└── content/
Backlog → Assign → Doing → Review → Done
↕
Blocked
- Tasks vivem no Mission Control (Supabase)
- Agentes recebem contexto via
WORKING.md+ API/context - Resultado volta como comentário no card (Regra #8)
Amora avalia cada agente com os critérios:
| Critério | Peso |
|---|---|
| Quality Score | ⭐⭐⭐ |
| Velocidade | ⭐⭐ |
| Proatividade | ⭐⭐ |
| Aderência | ⭐⭐⭐ |
| Custo-Benefício | ⭐⭐ |
Decisão possível: ⬆️ Promover | 🟰 Manter | ⬇️ Rebaixar | ❌ Desativar
Registro em shared/TEAM.md + shared/lessons/{agent}.md
- Texto > Cérebro — Se importa, escreve no arquivo. "Mental notes" morrem no restart.
- Todo agente começa L1 — Sem exceções. Confiança se conquista, não se assume.
- SOUL.md define quem o agente É — Sem alma, é só um chatbot.
- Nunca hardcodar credenciais — Tudo via 1Password CLI (
op item get). - Dado privado não vaza — Nunca em grupos, nunca sem permissão.
- Um agente com 8 skills > 8 agentes — Só cria agente novo quando skill não resolve.
- shared/TEAM.md é obrigatório — Todo agente lê na sessão.
- Resultado volta como comentário no card — MC (Supabase) é source of truth.
- Lição aprendida → shared/lessons/ — Erro que não vira lição vai se repetir.
- Se travou, bloqueia e comenta — Mover card pra "blocked" + explicar o motivo.
| Endpoint | Descrição |
|---|---|
GET /cards |
Listar cards do Mission Control |
GET /tasks |
Listar tasks |
GET /bookmarks |
Listar bookmarks |
GET /activity |
Feed de atividades |
GET /notifications |
Notificações |
GET /sessions |
Sessões ativas |
GET /memory |
Memória compartilhada |
GET /agents/{id}/context |
Contexto do agente |
POST /agents/{id}/assign-task |
Atribuir task ao agente |
POST /agents/{id}/complete-task |
Marcar task como concluída |
| Nível | Nome | Autonomia |
|---|---|---|
| L1 | Observer | Executa tasks atribuídas, output revisado |
| L2 | Advisor | Recomenda e executa com aprovação, pode sugerir |
| L3 | Operator | Executa autônomo dentro dos guardrails |
| L4 | Autonomous | Autoridade total no domínio, reporta direto ao Renaldo |
Renaldo (CEO/Human) é o topo da cadeia de comando. Amora é a coordenadora — único ponto de contato direto com o Renaldo no sistema.