Skip to main content
Glama
README.md
# DZ23 Subagents Universal MCP

**Um projeto. Vários modelos. Uma memória compartilhada.**

Roteador MCP self-hosted para delegar tarefas de texto/código a modelos de IA,
coordenar especialistas em paralelo e guardar o estado explícito de cada missão.
**v2.2.4 · MIT · prévia de engenharia · Node.js 22+ · sem dependências npm de runtime.**

[English](README.en.md) · [Instalação](docs/INSTALL_ANY_HARNESS.md) · [Ferramentas](docs/TOOLS.md) · [Provedores](docs/PROVIDER_ARCHITECTURE.md) · [Segurança](SECURITY.md) · [Validação](docs/VALIDATION.md)

## Para que serve

Claude pode registrar uma missão; Codex, Hermes ou outro cliente pode consultar
esse registro e continuar o trabalho. Para isso, ambos precisam usar **a mesma
instância de memória**, `project_id` e `mission_id`. A memória não vem automaticamente
da conversa privada do harness: ele deve enviar os fatos, decisões e checkpoints.

Se uma chamada ao provider falhar, o roteador registra o erro e tenta o próximo
alvo elegível, incluindo o estado persistido da missão. Não há recuperação dos
pensamentos internos, tokens não recebidos ou efeitos externos que nunca foram registrados.

Os subagentes desta versão são **chamadas independentes de modelo com papéis
especializados**, não processos com terminal, navegador ou acesso automático ao
repositório. Eles produzem texto/código; o harness aplica patches, executa testes e
revisa os resultados sob as próprias permissões. O projeto não contorna limites,
salvaguardas ou políticas de fornecedores.

## O fluxo

```text
Claude / Codex / Hermes / cliente MCP
                 |
        stdio (local) ou HTTP
                 |
     DZ23 Router + limite de chamadas
          |                  |
   memória por missão    pool de modelos
   estado / journal      architect / frontend / backend
   checkpoints           security / QA / devops / reviewer
          |                  |
          +---- resposta e handoff ----+
                       |
           o harness aplica e verifica
```

## O que existe hoje

| Recurso | Escopo implementado |
| --- | --- |
| Delegação e failover | OpenAI-compatible e Anthropic Messages nativa; saída textual |
| Memória | JSON, journal e checkpoints no filesystem; locks por projeto |
| Paralelismo | Limites de chamadas globais e por provider:model, por processo |
| Papéis | Architect, Backend, Frontend, Security, QA, DevOps, Reviewer e nomes customizados |
| Inventário | Configuração e origem da credencial, sem devolver o valor da chave |
| Model discovery | Consulta ao catálogo exposto pelo adapter; não prova acesso a inferência |
| Saúde | Uma pequena geração real, quando o operador chama `health_check` |
| MCP | Descoberta/chamada de ferramentas via stdio; HTTP JSON sem SSE |
| Segredos | Ambiente e arquivos `*_FILE`; sem Vault, OAuth ou multitenancy implementados |

**Não entregue esta prévia como um SaaS multitenant ou como execução autônoma
completa de projetos.** Veja os limites em [Arquitetura](docs/ARCHITECTURE.md).
O nome Universal descreve o objetivo de portabilidade; não é certificação de
compatibilidade com todos os hosts ou versões do protocolo.

## Começar no computador

Extraia o pacote ou, depois da publicação, clone o repositório. Na pasta do projeto:

```bash
node --version
npm run check
npm test
node scripts/install-harness.mjs all
```

Use Node.js 22 ou superior mantido pelo projeto Node.js. Não é necessário
`npm install`: o código usa módulos nativos. O campo `private: true` em `package.json`
apenas impede publicação acidental no npm; não torna o código proprietário.

**Linux/macOS:** `bash scripts/install-local.sh` cria `.env` se ausente, preserva uma
configuração existente, executa a regressão e gera snippets.

**Windows (PowerShell):** `./scripts/install-windows.ps1` realiza as mesmas etapas.
Não desabilite políticas de segurança globais para executar o script.

O repositório público contém **somente `.env.example`**. Os instaladores criam o `.env`
privado no computador. Para configuração manual, copie o exemplo apenas quando
não houver `.env`. O processo lê o `.env` da instalação, não o do projeto do harness.

Exemplo inicial, limitado a um servidor local que você precisa instalar/iniciar:

```env
DZ23_ROTATION=custom:qwen3-coder
CUSTOM_BASE_URL=http://127.0.0.1:11434/v1
CUSTOM_MODEL=qwen3-coder
DZ23_ALLOW_PAID=false
```

Troque `qwen3-coder` pelo ID realmente disponível no seu servidor. Nenhum modelo
é baixado ou iniciado por este pacote. Para cloud, configure a chave em privado,
consulte `discover_models`, escolha um modelo habilitado e só então acrescente
`provider:model` à rotação. O ID do modelo pode conter dois-pontos.

**Atenção a custos:** `free-first` ordena categorias; não consulta a fatura nem
impõe um teto financeiro. `DZ23_ALLOW_PAID=false` bloqueia categorias `paid` e
`low-cost`, inclusive alvos explícitos. Categorias `mixed` e `free-tier` podem
cobrar após limites da conta. Para evitar uso cloud, mantenha a rotação apenas
nos seus servidores locais. Configure limites de gasto no fornecedor.
`health_check`, `delegate`, `consensus` e `swarm_run` podem consumir quota/créditos.

## Conectar o harness

`node scripts/install-harness.mjs all` gera **snippets para revisão**, sem editar
as configurações existentes de Claude/Codex:

```text
config/generated/claude_desktop_config.snippet.json
config/generated/codex_config.snippet.toml
```

Copie somente a entrada `dz23-subagents` para o arquivo do cliente correspondente.
O gerador usa os caminhos reais do Node e da instalação. Hermes e outros clientes
precisam mapear `command`, `args` e transporte stdio ao próprio formato.

[Guia completo](docs/INSTALL_ANY_HARNESS.md) · [Prompt para o harness](HERMES_SELF_INSTALL_PROMPT.txt)

## Exemplo de uso pela IA

Peça ao harness:

> Use o MCP dz23-subagents. Registre o projeto `minha-app` e a missão `m-001`.
> Consulte o inventário sem expor segredos. Delegue análises de backend, frontend
> e QA com `swarm_run`, limite de três agentes. Revise as propostas antes de editar
> arquivos. Execute os testes localmente. Salve o próximo passo com `memory_checkpoint`.

Outro harness deve conectar à mesma memória, chamar `mission_status` com os mesmos
IDs, conferir Git/arquivos/testes por conta própria e continuar. O roteador não
abre automaticamente Codex quando a assinatura do Claude chega ao limite.

## Testes e publicação

No Windows, extraia em uma pasta nova e abra **`PUBLICAR_WINDOWS.cmd`** para
publicar usando GitHub CLI já autenticado. Ele encontra a pasta correta sem
digitar caminhos e mantém todas as verificações do publicador.

```bash
npm run check
npm test
npm run check:release
node scripts/publish-github.mjs --public --dry-run
```

O dry-run não chama GitHub nem cria commits. A publicação real exige Git, GitHub CLI,
autenticação local e o comando sem `--dry-run`.
[Publicar no GitHub](docs/PUBLISH_GITHUB.md) explica permissões, verificação e recuperação.
Não se presume que o repositório já esteja publicado apenas porque este README existe.

## Contribuir

Leia [CONTRIBUTING.md](CONTRIBUTING.md), [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md),
[SECURITY.md](SECURITY.md) e [ROADMAP](docs/ROADMAP.md). Relatórios devem separar
mocks, testes locais e validação real de provedores. Sem benchmarks comparativos,
não alegamos que o produto seja mais rápido ou melhor que outros roteadores.

## Licença

MIT, com o aviso de copyright DZ23 original preservado em [LICENSE](LICENSE).
As marcas dos clientes e provedores pertencem aos respectivos titulares; não há
alegação de afiliação ou endosso. A licença do código não fornece créditos de API.

TDQS

C2.9/5.0

Scored across 10 tools

Disambiguation4/5

Tools mostly target distinct resources and actions: provider/model inventory, health, memory, delegation, consensus, and swarm execution. However, list_models and discover_models both return model lists and could be confused, and consensus vs swarm_run both orchestrate multiple models/subagents. Descriptions differentiate them, but boundaries are not perfect.

Naming Consistency3/5

All names use snake_case, but patterns vary: verb_noun (list_models, discover_models), noun_noun (provider_inventory, health_check, mission_status, memory_checkpoint), noun_verb (project_init, swarm_run), and bare verbs/nouns (delegate, consensus). The inconsistency is readable but not predictable.

Tool Count5/5

10 tools is well within the typical 3-15 range for an orchestration server. Each tool covers a distinct capability area: provider/model management, health, project memory, delegation, consensus, and swarms.

Completeness4/5

Core workflows for provider/model discovery, health, project memory, mission status, delegation, consensus, and swarm execution are present. Missing or unclear operations include aborting/canceling a running delegate/swarm, dynamically adding/removing providers, and richer mission listing, but these are minor for the apparent scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues