Interface visual para observar seu projeto AIOS em tempo real.
🚧 FASE INICIAL DE DESENVOLVIMENTO
Este projeto está em construção ativa. Funcionalidades podem mudar, quebrar ou estar incompletas. Colaborações são muito bem-vindas! Veja as issues abertas ou abra uma nova para sugerir melhorias.
⚠️ Este projeto é uma extensão OPCIONAL. O Synkra AIOS funciona 100% sem ele. O Dashboard existe apenas para observar o que acontece na CLI — ele nunca controla.
O AIOS Dashboard é uma interface web que permite visualizar em tempo real tudo que acontece no seu projeto AIOS:
- 📋 Stories no formato Kanban (arrastar e soltar)
- 🤖 Agentes ativos e inativos
- 📡 Eventos em tempo real do Claude Code (qual tool está executando, prompts, etc)
- 🔧 Squads instalados com seus agentes, tasks e workflows
- 📊 Insights e estatísticas do projeto
┌─────────────────────────────────────────────────────────────────┐
│ AIOS Dashboard [Settings] │
├─────────┬───────────────────────────────────────────────────────┤
│ │ │
│ Kanban │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ Monitor │ │ Backlog │ │ Doing │ │ Done │ │
│ Agents │ ├─────────┤ ├─────────┤ ├─────────┤ │
│ Squads │ │ Story 1 │ │ Story 3 │ │ Story 5 │ │
│ Bob │ │ Story 2 │ │ Story 4 │ │ Story 6 │ │
│ ... │ └─────────┘ └─────────┘ └─────────┘ │
│ │ │
└─────────┴───────────────────────────────────────────────────────┘
| View | O que faz |
|---|---|
| Kanban | Board de stories com drag-and-drop entre colunas (Backlog, Doing, Done) |
| Monitor | Feed em tempo real de eventos do Claude Code (tools, prompts, erros) |
| Agents | Lista de agentes AIOS (@dev, @qa, @architect, etc) — ativos e em standby |
| Squads | Organograma visual dos squads instalados com drill-down para agentes e tasks |
| Bob | Acompanha execução do Bob Orchestrator (pipeline de desenvolvimento autônomo) |
| Roadmap | Visualização de features planejadas |
| GitHub | Integração com GitHub (PRs, issues) |
| Insights | Estatísticas e métricas do projeto |
| Terminals | Grid de múltiplos terminais |
| Settings | Configurações do dashboard |
O Dashboard precisa estar dentro de um projeto com AIOS instalado porque ele lê os documentos do framework.
meu-projeto/ # ← Você executa comandos daqui
├── .aios-core/ # Core do framework (OBRIGATÓRIO)
│ └── development/
│ ├── agents/ # Agentes que aparecem na view "Agents"
│ ├── tasks/ # Tasks dos squads
│ └── templates/
├── docs/
│ └── stories/ # Stories que aparecem no "Kanban"
│ ├── active/
│ └── completed/
├── squads/ # Squads que aparecem na view "Squads"
│ ├── meu-squad/
│ └── outro-squad/
├── apps/
│ └── dashboard/ # ← Dashboard instalado aqui
└── package.json
Sem o AIOS instalado, o dashboard mostrará telas vazias.
IMPORTANTE: Todos os comandos são executados a partir da raiz do seu projeto (
meu-projeto/).
Antes de começar, você precisa ter:
- ✅ Node.js versão 18 ou superior
- ✅ Bun (para o servidor de eventos)
- ✅ Synkra AIOS instalado no projeto
# Opção A: Criar novo projeto com AIOS
npx aios-core init meu-projeto
cd meu-projeto
# Opção B: Instalar em projeto existente
cd meu-projeto
npx aios-core install# Cria a pasta apps/ e clona o dashboard
mkdir -p apps
git clone https://github.com/SynkraAI/aios-dashboard.git apps/dashboard# Dependências do Dashboard (Next.js)
npm install --prefix apps/dashboard
# Dependências do Server (Bun)
cd apps/dashboard/server
bun install
cd ../../..O server captura eventos em tempo real do Claude Code.
cd apps/dashboard/server
bun run devVocê verá:
🚀 Monitor Server running on http://localhost:4001
Deixe este terminal aberto e abra um novo para o próximo passo.
Em um novo terminal:
npm run dev --prefix apps/dashboardVocê verá:
▲ Next.js 14.x.x
- Local: http://localhost:3000
Abra no navegador: http://localhost:3000
🎉 Pronto! Você verá o dashboard com suas stories, squads e agentes.
Para ver eventos do Claude Code em tempo real (qual ferramenta está executando, prompts, etc), instale os hooks:
apps/dashboard/scripts/install-hooks.shIsso instala hooks em ~/.claude/hooks/ que enviam eventos para o dashboard.
Eventos capturados:
PreToolUse— Antes de executar uma ferramentaPostToolUse— Após executar (com resultado)UserPromptSubmit— Quando você envia um promptStop— Quando Claude paraSubagentStop— Quando um subagent (Task) termina
Cole estes comandos no terminal (execute da raiz do projeto):
# ===== INSTALAÇÃO =====
mkdir -p apps
git clone https://github.com/SynkraAI/aios-dashboard.git apps/dashboard
npm install --prefix apps/dashboard
cd apps/dashboard/server && bun install && cd ../../..
# ===== INICIAR (2 terminais) =====
# Terminal 1: Server de eventos
cd apps/dashboard/server && bun run dev
# Terminal 2: Dashboard
npm run dev --prefix apps/dashboard
# ===== EXTRAS =====
# Instalar hooks para eventos em tempo real
apps/dashboard/scripts/install-hooks.sh
# Verificar se server está rodando
curl http://localhost:4001/healthapps/dashboard/
├── src/
│ ├── app/ # Páginas Next.js
│ ├── components/
│ │ ├── kanban/ # Board de stories
│ │ ├── monitor/ # Feed de eventos em tempo real
│ │ ├── agents/ # Visualização de agentes
│ │ ├── squads/ # Organograma de squads
│ │ ├── bob/ # Orquestração Bob
│ │ └── ui/ # Componentes de UI
│ ├── hooks/ # React hooks customizados
│ ├── stores/ # Estado global (Zustand)
│ └── lib/ # Utilitários
├── server/ # Servidor de eventos (Bun)
│ ├── server.ts # Servidor principal
│ ├── db.ts # Banco SQLite
│ └── types.ts # Tipos TypeScript
└── scripts/
└── install-hooks.sh # Instalador de hooks
O Synkra AIOS segue uma hierarquia clara:
CLI First → Observability Second → UI Third
| Camada | Prioridade | O que faz |
|---|---|---|
| CLI | Máxima | Onde a inteligência vive. Toda execução e decisões. |
| Observability | Secundária | Observar o que acontece no CLI em tempo real. |
| UI | Terciária | Visualizações e gestão pontual. |
Este Dashboard opera na camada de Observability. Ele observa, mas nunca controla.
O server expõe endpoints para o dashboard consumir:
| Endpoint | Método | Descrição |
|---|---|---|
POST /events |
POST | Recebe eventos dos hooks |
GET /events/recent |
GET | Últimos eventos |
GET /sessions |
GET | Lista sessões do Claude Code |
GET /stats |
GET | Estatísticas agregadas |
WS /stream |
WebSocket | Stream de eventos em tempo real |
GET /health |
GET | Verifica se server está ok |
Crie o arquivo apps/dashboard/.env.local:
# Porta do server de eventos
MONITOR_PORT=4001
# Onde salvar o banco SQLite
MONITOR_DB=~/.aios/monitor/events.db
# URL do WebSocket (usado pelo dashboard)
NEXT_PUBLIC_MONITOR_WS_URL=ws://localhost:4001/streamO AIOS não está instalado. Verifique:
ls -la .aios-core/ # Deve existir
ls -la docs/stories/ # Deve ter arquivos
ls -la squads/ # Deve ter squadsSe não existir, instale o AIOS: npx aios-core install
-
Server está rodando?
curl http://localhost:4001/health # Deve retornar: {"status":"ok"} -
Hooks estão instalados?
ls ~/.claude/hooks/ # Deve ter arquivos .py
-
Reinstale os hooks:
apps/dashboard/scripts/install-hooks.sh
Bun não está instalado. Instale em: https://bun.sh
curl -fsSL https://bun.sh/install | bashEncerre o processo que está usando a porta:
# Descobrir qual processo
lsof -i :3000
lsof -i :4001
# Matar o processo (substitua PID)
kill -9 <PID>Após a instalação, execute este checklist para garantir que tudo está funcionando:
# 1. AIOS está instalado?
ls .aios-core/development/agents/
# ✓ Deve listar arquivos .md (dev.md, qa.md, architect.md, etc)
# 2. Server está rodando?
curl http://localhost:4001/health
# ✓ Deve retornar: {"status":"ok"}
# 3. Dashboard está acessível?
curl -s http://localhost:3000 | head -5
# ✓ Deve retornar HTML
# 4. Hooks estão instalados? (opcional)
ls ~/.claude/hooks/*.py 2>/dev/null | wc -l
# ✓ Deve retornar número > 0- Kanban: Acesse http://localhost:3000 → deve mostrar board com stories
- Agents: Clique em "Agents" → deve listar agentes em standby
- Squads: Clique em "Squads" → deve mostrar organograma de squads
- Monitor: Clique em "Monitor" → deve mostrar status de conexão
| Problema | Solução |
|---|---|
| Kanban vazio | Verifique se existe docs/stories/ com arquivos .md |
| Agents vazio | Verifique se existe .aios-core/development/agents/ |
| Squads vazio | Verifique se existe squads/ com subpastas |
| Monitor desconectado | Verifique se o server está rodando na porta 4001 |
Contribuições são muito bem-vindas! Este é um projeto em fase inicial e há muito espaço para melhorias.
| Tipo | Descrição | Dificuldade |
|---|---|---|
| Bug fixes | Corrigir problemas reportados | Fácil |
| Documentação | Melhorar README, adicionar guias | Fácil |
| UI/UX | Melhorar interface, adicionar temas | Médio |
| Novos componentes | Adicionar visualizações | Médio |
| Novas views | Criar páginas novas no dashboard | Avançado |
| Server features | Adicionar endpoints, melhorar performance | Avançado |
Se você tem o AIOS instalado, use os agentes para ajudar no desenvolvimento:
# 1. Peça ao Architect para planejar
@architect Quero adicionar um gráfico de métricas na view Monitor.
Analise a estrutura atual e sugira a melhor abordagem.
# 2. Depois peça ao Dev para implementar
@dev Implemente o gráfico de métricas seguindo o plano do Architect.
Use Recharts e siga os padrões existentes em src/components/monitor/# 1. Peça ao UX Designer para analisar
@ux-design-expert Analise a view Kanban e sugira melhorias de usabilidade.
Considere acessibilidade e mobile.
# 2. Depois implemente com o Dev
@dev Aplique as melhorias de UX sugeridas no Kanban.# 1. Peça ao QA para investigar
@qa O WebSocket do Monitor desconecta após 5 minutos.
Investigue a causa raiz.
# 2. Depois corrija com o Dev
@dev Corrija o problema de desconexão do WebSocket identificado pelo QA.# Quando terminar, peça ao DevOps para criar o PR
@devops Crie um PR para a branch atual com as mudanças do Monitor.
Inclua descrição detalhada e screenshots.# Antes de submeter, peça ao QA para revisar
@qa Faça uma revisão completa das mudanças.
Verifique lint, types, testes e funcionamento visual.Se preferir contribuir sem usar os agentes:
# Fork pelo GitHub, depois clone seu fork
git clone https://github.com/SEU_USUARIO/aios-dashboard.git
cd aios-dashboard
# Adicione o repositório original como upstream
git remote add upstream https://github.com/SynkraAI/aios-dashboard.gitgit checkout -b feature/minha-nova-featureConvenção de nomes:
| Prefixo | Uso |
|---|---|
feature/ |
Nova funcionalidade |
fix/ |
Correção de bug |
docs/ |
Documentação |
refactor/ |
Refatoração de código |
ui/ |
Melhorias visuais |
Desenvolva sua feature seguindo os padrões do projeto:
- React: Componentes funcionais com hooks
- TypeScript: Tipagem obrigatória
- Tailwind CSS: Para estilos
- Zustand: Para estado global
# Lint
npm run lint --prefix apps/dashboard
# Type check
npm run typecheck --prefix apps/dashboard
# Testes
npm test --prefix apps/dashboard
# Rode o dashboard e verifique visualmente
npm run dev --prefix apps/dashboardUsamos Conventional Commits:
# Formato
<tipo>: <descrição curta>
# Exemplos
git commit -m "feat: add dark mode toggle"
git commit -m "fix: resolve websocket reconnection issue"
git commit -m "docs: improve installation instructions"
git commit -m "ui: improve kanban card hover state"Tipos de commit:
feat- Nova funcionalidadefix- Correção de bugdocs- Documentaçãoui- Mudanças visuaisrefactor- Refatoraçãotest- Testeschore- Manutenção
# Push para seu fork
git push origin feature/minha-nova-featureDepois, abra um Pull Request no GitHub:
- Vá para https://github.com/SynkraAI/aios-dashboard
- Clique em "Pull Requests" → "New Pull Request"
- Selecione "compare across forks"
- Selecione seu fork e branch
- Preencha o template do PR
## Descrição
O que este PR faz? Por que é necessário?
## Tipo de mudança
- [ ] Bug fix
- [ ] Nova feature
- [ ] Melhoria de UI
- [ ] Documentação
- [ ] Refatoração
## Como testar
1. Passo 1
2. Passo 2
3. Resultado esperado
## Screenshots (se aplicável)
[Adicione screenshots aqui]
## Checklist
- [ ] Meu código segue o estilo do projeto
- [ ] Testei localmente
- [ ] Lint passa sem erros
- [ ] TypeScript compila sem errossrc/
├── app/ # Páginas (App Router)
├── components/
│ ├── ui/ # Componentes base (Button, Card, etc)
│ ├── kanban/ # Componentes do Kanban
│ ├── monitor/ # Componentes do Monitor
│ ├── squads/ # Componentes de Squads
│ └── ...
├── hooks/ # React hooks customizados
├── stores/ # Estado global (Zustand)
├── lib/ # Utilitários
└── types/ # Tipos TypeScript
// src/components/meu-componente/MeuComponente.tsx
'use client';
import { memo } from 'react';
import { cn } from '@/lib/utils';
interface MeuComponenteProps {
className?: string;
// ... outras props
}
export const MeuComponente = memo(function MeuComponente({
className,
...props
}: MeuComponenteProps) {
return (
<div className={cn('base-classes', className)}>
{/* conteúdo */}
</div>
);
});- Crie o componente em
src/components/minha-view/ - Adicione o case em
src/app/page.tsxnoViewContent - Adicione o item na sidebar em
src/components/layout/Sidebar.tsx - Adicione o tipo em
src/types/index.ts
- Não quebre o que funciona — Teste suas mudanças
- Mantenha PRs pequenos — Mais fácil de revisar
- Documente código complexo — Ajuda outros contribuidores
- Pergunte antes de grandes mudanças — Abra uma issue primeiro
- Issues: Abrir issue
- Discussões: Iniciar discussão
- AIOS Core: Comunidade AIOS
MIT
Parte do ecossistema Synkra AIOS — CLI First, Observability Second, UI Third