Mapa da arquitetura¶
Tradução informativa da versão em inglês, atualizada em 25/10/2026. Em caso de divergência, prevalece a versão em inglês. Identificadores, comandos e blocos de código são mantidos sem tradução.
Este documento é uma orientação de 2 minutos para novos colaboradores. Ele explica onde cada peça fica e por quê: o suficiente para encaminhar um PR ou um relatório de bug sem precisar adivinhar.
Para a especificação normativa do protocolo, veja spec/. Para executar os testes e compilar, veja CONTRIBUTING.md.
Modelo mental¶
O DCP-AI é uma camada portátil de responsabilização para agentes de IA. As camadas do repositório, da mais normativa à mais operacional:
┌───────────────────────────────────────────────────────────────────┐
│ spec/ + schemas/ ← source of truth (what IS DCP) │
│ ───────────────────── │
│ tests/ ← conformance + interop + NIST KAT │
│ ───────────────────── │
│ sdks/{ts,py,rust,go,wasm} ← reference implementations │
│ ───────────────────── │
│ integrations/ ← bindings for popular frameworks │
│ cli/ ← interactive CLI (@dcp-ai/cli) │
│ packages/create-* ← npm create scaffolders │
│ ───────────────────── │
│ services/ ← operational infra (anchor, log, …) │
│ contracts/ ← on-chain artifacts (DCPAnchor.sol) │
│ ───────────────────── │
│ docs/ + docs-site/ + site/ ← hand-written docs + generated site │
│ playground/ ← in-browser interactive demo │
└───────────────────────────────────────────────────────────────────┘
Quanto mais acima nessa pilha você estiver, mais estrita é a revisão da mudança: alterações na especificação exigem que os cinco SDKs continuem sincronizados; uma alteração na documentação é autocontida.
Diretórios de primeiro nível¶
| Caminho | O que é | Destino de publicação |
|---|---|---|
spec/ |
Especificações normativas DCP-01 a DCP-09, mais as extensões de perfil (criptografia, A2A, governança, admissão). O texto em inglês é o normativo; as traduções são informativas. | — |
schemas/ |
Definições JSON Schema (draft 2020-12) de cada artefato do protocolo. v1 (9 esquemas) + v2 (42 esquemas). | — |
tests/conformance/ |
Suíte de conformidade entre SDKs na qual todo SDK precisa passar. É a barreira que mantém honesta a compatibilidade do formato de transmissão. | — |
tests/interop/ |
Vetores de interoperabilidade: canonicalização, separação de domínio, assinatura composta, emenda de sessões, ataques de remoção. | — |
tests/nist-kat/ |
Vetores Ed25519 da RFC 8032, testes de propriedades do ML-DSA-65 e vetores ACVP do NIST para SLH-DSA-192f / ML-KEM-768. | — |
sdks/typescript/ |
SDK TypeScript de referência. | npm @dcp-ai/sdk |
sdks/python/ |
SDK Python de referência. | PyPI dcp-ai |
sdks/rust/ |
SDK Rust de referência (também compilado para WASM). | crates.io dcp-ai |
sdks/go/ |
SDK Go de referência. | Módulos Go github.com/dcp-ai-protocol/dcp-ai/sdks/go/v2 |
sdks/wasm/ |
Bundle WebAssembly do SDK Rust para navegador + Node. | npm @dcp-ai/wasm |
integrations/ |
10 vinculações com frameworks: Express, FastAPI, LangChain, OpenAI, CrewAI, OpenClaw, W3C DID, Google A2A, Anthropic MCP, AutoGen. | npm @dcp-ai/<name> (seis pacotes); PyPI dcp-ai[<extra>] (FastAPI, LangChain, OpenAI, CrewAI) |
packages/create-* |
Geradores invocados via npm create @dcp-ai/<framework>. Um por framework principal. |
npm @dcp-ai/create-<name> |
cli/ |
CLI com assistente interativo, alternativa ao bin/dcp.js para novos usuários. |
npm @dcp-ai/cli |
bin/ |
CLI de referência em JavaScript usada pela suíte de conformidade. | Pacote raiz (não publicado no npm); executado a partir de uma cópia do repositório. |
services/ |
Serviços operacionais de referência: anchor (agrupa hashes em memória; ainda sem envio on-chain), transparency-log (log em árvore de Merkle com cabeças de árvore assinadas e gossip), revocation. | Imagens Docker → GHCR |
contracts/ethereum/ |
DCPAnchor.sol + testes Foundry. |
Implantação on-chain |
api/ |
Artefatos do formato de transmissão: OpenAPI (openapi.yaml) + Protocol Buffers (proto/). |
— |
lib/ |
A biblioteca de verificação de referência (lib/verify.js) e utilitários usados pelo pacote raiz, pelo servidor e pelos serviços. |
Pacote raiz (não publicado no npm). |
tools/ |
CLIs internas do repositório (validate.js, conformance.js, crypto.js, merkle.js). Não publicadas. |
— |
scripts/ |
Utilitários de build pontuais (geradores de exemplos, emissão das impressões digitais do protocolo). | — |
docs/ |
Documentação escrita à mão: QUICKSTART, OBSERVABILITY, ARCHITECTURE (este arquivo), notas de SECURITY, guias de migração. | Consumida pelo MkDocs. |
i18n/ |
Traduções dos documentos públicos: i18n/<locale>/ contém a tradução em espanhol, português do Brasil, japonês ou chinês simplificado de cada documento, no mesmo caminho da sua fonte em inglês, que prevalece se divergirem. |
Consumida pelo MkDocs, um site por idioma. |
docs-site/ |
Gerado e não versionado (.gitignore): a árvore de preparação por idioma que scripts/docs_site.py grava para o build com MkDocs. A configuração do site é mkdocs.yml. |
— |
site/ |
Gerado e não versionado (.gitignore): o site de documentação em cinco idiomas que bash scripts/build-docs-site.sh constrói. |
GitHub Pages, via .github/workflows/docs.yml. |
playground/ |
Playground interativo no navegador (JavaScript simples; Ed25519 com tweetnacl, SHA-256 com WebCrypto; suas assinaturas ML-DSA / SLH-DSA são simuladas, como a página informa). |
Hospedado em docs.dcp-ai.org/playground/. |
templates/ |
Templates de origem consumidos pelos geradores packages/create-*. |
— |
deploy/ |
Configurações do Fly.io e de implantação dos serviços. | — |
keys/ |
Chaves de demonstração usadas pelos testes de conformidade e pelos exemplos. Não as use em produção. | — |
credentials/ |
Arquivos @context JSON-LD servidos em dcp-ai.org/credentials/v2. | GitHub Pages. |
Como as peças se comunicam¶
- Especificação → SDKs.
spec/eschemas/são lidos por pessoas; os SDKs os implementam. Cada SDK reimplementa a canonicalização, o hash, a assinatura e a verificação para produzir artefatos compatíveis no formato de transmissão. A suíte de conformidade emtests/conformance/executa os mesmos vetores contra todos os SDKs na CI. - SDKs → integrações. Cada pacote
integrations/*usa o SDK da sua linguagem como dependência; por exemplo,@dcp-ai/expressdepende de@dcp-ai/sdk. Nenhuma integração reimplementa a criptografia. - Integrações → geradores. Os
packages/create-*distribuem o código mínimo de que um usuário precisa para começar um projeto sobre uma integração específica. - SDKs → serviços. O servidor de verificação e o serviço de revogação verificam por meio de
lib/verify.jse@dcp-ai/sdk. O log de transparência assina as cabeças de árvore diretamente comtweetnacl, e o serviço de ancoragem só calcula hashes. - Pacote raiz (
dcp-ai, não publicado no npm). Opackage.jsonde primeiro nível contém a CLI de referência + a biblioteca de verificação (bin/dcp.js,lib/verify.js) e o harness de conformidade. A V1 é verificada ali mesmo; a V2 é validada ali contra o esquema e depois verificada pelo@dcp-ai/sdk, de modo que há uma única implementação da V2. É o ponto de entrada original; a maioria dos novos usuários chega, em vez disso, por um SDK ou por um gerador.
Onde mudar o quê¶
| Você quer… | Edite |
|---|---|
| Propor um artefato novo ou endurecer um esquema | spec/ + schemas/; depois atualize todos os SDKs de forma sincronizada e adicione um vetor de conformidade em tests/conformance/. |
| Corrigir um bug criptográfico numa linguagem | sdks/<language>/. Adicione um teste de regressão. Se o bug puder afetar outras linguagens, adicione um vetor de interoperabilidade compartilhado em tests/interop/. |
| Adicionar uma integração com um framework | integrations/<framework>/. Use como dependência o SDK da linguagem correspondente. Adicione um gerador em packages/create-<framework>/ se for um framework principal. |
| Mudar o site de marketing | Não está neste repositório (veja Limite do escopo). |
| Mudar o site de documentação | As fontes Markdown e as quatro traduções delas, mkdocs.yml e a lista de documentos publicados em scripts/docs-i18n.json; docs-site/ e site/ são gerados. Veja CONTRIBUTING.md. |
| Mudar a demonstração interativa | playground/. |
| Implantar ou reimplantar um serviço | services/<name>/ + deploy/fly/. |
| Lançar uma nova versão de um SDK | Aumente a versão no package.json / Cargo.toml / pyproject.toml correspondente ou na tag do git; a CI detecta e publica via .github/workflows/publish*.yml. Pular o que já foi publicado está embutido. |
Limite do escopo¶
O monorrepositório contém o protocolo e suas implementações de referência: especificação, esquemas, os cinco SDKs, integrações com frameworks, geradores, CLI, serviços operacionais, contratos inteligentes, documentação e o playground interativo. É tudo de que um terceiro precisa para adotar o DCP-AI.
Aplicações para usuários finais (painéis, agentes, demonstrações) e superfícies de marketing não estão neste repositório, de propósito. Elas pertencem à base de código que as hospeda: são aplicações sobre o protocolo, não parte dele.
Por que um monorrepositório hoje¶
Um protocolo com cinco SDKs vive ou morre por mantê-los compatíveis no formato de transmissão. Revisar um PR que mexe nos cinco ao mesmo tempo — e executar a suíte de conformidade contra os cinco em cada PR — é a forma mais leve de impor essa invariante. No momento em que um SDK ou um componente específico desenvolver a própria comunidade e o próprio ritmo, separá-lo será uma resposta razoável. Até lá, o custo de coordenar vários repositórios supera os benefícios.
Leituras adicionais: o modelo de governança em GOVERNANCE.md e a direção futura em ROADMAP.md.