Mapa de la arquitectura¶
Traducción informativa de la versión en inglés, actualizada el 25/10/2026. Si difieren, prevalece la versión en inglés. Los identificadores, comandos y bloques de código se conservan sin traducir.
Este documento es una orientación de 2 minutos para nuevos colaboradores. Explica dónde vive cada pieza y por qué: lo suficiente para encaminar un PR o un informe de error sin tener que adivinar.
Para la especificación normativa del protocolo, véase spec/. Para ejecutar las pruebas y compilar, véase CONTRIBUTING.md.
Modelo mental¶
DCP-AI es una capa portable de rendición de cuentas para agentes de IA. Las capas del repositorio, de la más normativa a la más operativa:
┌───────────────────────────────────────────────────────────────────┐
│ 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 │
└───────────────────────────────────────────────────────────────────┘
Cuanto más arriba de esa pila estés, más estricta es la revisión del cambio: las modificaciones de la especificación exigen que los cinco SDK sigan sincronizados; una modificación de la documentación es autónoma.
Directorios de primer nivel¶
| Ruta | Qué es | Destino de publicación |
|---|---|---|
spec/ |
Especificaciones normativas DCP-01 a DCP-09, más las extensiones de perfil (criptografía, A2A, gobernanza, admisión). El texto en inglés es el normativo; las traducciones son informativas. | — |
schemas/ |
Definiciones JSON Schema (draft 2020-12) de cada artefacto del protocolo. v1 (9 esquemas) + v2 (42 esquemas). | — |
tests/conformance/ |
Suite de conformidad entre SDK que todos los SDK deben superar. Es la barrera que mantiene honesta la compatibilidad del formato de transmisión. | — |
tests/interop/ |
Vectores de interoperabilidad: canonicalización, separación de dominio, firma compuesta, empalme de sesiones, ataques de eliminación. | — |
tests/nist-kat/ |
Vectores Ed25519 de la RFC 8032, pruebas de propiedades de ML-DSA-65 y vectores ACVP del NIST para SLH-DSA-192f / ML-KEM-768. | — |
sdks/typescript/ |
SDK de TypeScript de referencia. | npm @dcp-ai/sdk |
sdks/python/ |
SDK de Python de referencia. | PyPI dcp-ai |
sdks/rust/ |
SDK de Rust de referencia (también compilado a WASM). | crates.io dcp-ai |
sdks/go/ |
SDK de Go de referencia. | Módulos de Go github.com/dcp-ai-protocol/dcp-ai/sdks/go/v2 |
sdks/wasm/ |
Bundle WebAssembly del SDK de Rust para navegador + Node. | npm @dcp-ai/wasm |
integrations/ |
10 vinculaciones con frameworks: Express, FastAPI, LangChain, OpenAI, CrewAI, OpenClaw, W3C DID, Google A2A, Anthropic MCP, AutoGen. | npm @dcp-ai/<name> (seis paquetes); PyPI dcp-ai[<extra>] (FastAPI, LangChain, OpenAI, CrewAI) |
packages/create-* |
Generadores invocados mediante npm create @dcp-ai/<framework>. Uno por cada framework principal. |
npm @dcp-ai/create-<name> |
cli/ |
CLI con asistente interactivo, alternativa a bin/dcp.js para nuevos usuarios. |
npm @dcp-ai/cli |
bin/ |
CLI de referencia en JavaScript que usa la suite de conformidad. | Paquete raíz (no publicado en npm); se ejecuta desde una copia del repositorio. |
services/ |
Servicios operativos de referencia: anchor (agrupa hashes en memoria; todavía no hay envío on-chain), transparency-log (registro en árbol de Merkle con cabezas de árbol firmadas y gossip), revocation. | Imágenes Docker → GHCR |
contracts/ethereum/ |
DCPAnchor.sol + pruebas de Foundry. |
Despliegue on-chain |
api/ |
Artefactos del formato de transmisión: OpenAPI (openapi.yaml) + Protocol Buffers (proto/). |
— |
lib/ |
La biblioteca de verificación de referencia (lib/verify.js) y utilidades que usan el paquete raíz, el servidor y los servicios. |
Paquete raíz (no publicado en npm). |
tools/ |
CLI internas del repositorio (validate.js, conformance.js, crypto.js, merkle.js). No se publican. |
— |
scripts/ |
Utilidades de compilación puntuales (generadores de ejemplos, emisión de las huellas del protocolo). | — |
docs/ |
Documentación escrita a mano: QUICKSTART, OBSERVABILITY, ARCHITECTURE (este archivo), notas de SECURITY, guías de migración. | La consume MkDocs. |
i18n/ |
Traducciones de los documentos públicos: i18n/<locale>/ contiene la traducción al español, al portugués de Brasil, al japonés o al chino simplificado de cada documento, en la misma ruta que su fuente en inglés, que prevalece si difieren. |
La consume MkDocs, un sitio por idioma. |
docs-site/ |
Generado y no versionado (.gitignore): el árbol de preparación por idioma que scripts/docs_site.py escribe para la construcción con MkDocs. La configuración del sitio es mkdocs.yml. |
— |
site/ |
Generado y no versionado (.gitignore): el sitio de documentación en cinco idiomas que construye bash scripts/build-docs-site.sh. |
GitHub Pages, mediante .github/workflows/docs.yml. |
playground/ |
Playground interactivo en el navegador (JavaScript simple; Ed25519 con tweetnacl, SHA-256 con WebCrypto; sus firmas ML-DSA / SLH-DSA están simuladas, como indica la página). |
Alojado en docs.dcp-ai.org/playground/. |
templates/ |
Plantillas de origen que consumen los generadores packages/create-*. |
— |
deploy/ |
Configuraciones de Fly.io y de despliegue de los servicios. | — |
keys/ |
Claves de demostración que usan las pruebas de conformidad y los ejemplos. No las uses en producción. | — |
credentials/ |
Archivos @context JSON-LD servidos en dcp-ai.org/credentials/v2. | GitHub Pages. |
Cómo se comunican las piezas¶
- Especificación → SDK.
spec/yschemas/los leen personas; los SDK los implementan. Cada SDK vuelve a implementar la canonicalización, el hash, la firma y la verificación para producir artefactos compatibles en el formato de transmisión. La suite de conformidad detests/conformance/ejecuta los mismos vectores contra todos los SDK en la CI. - SDK → integraciones. Cada paquete
integrations/*usa el SDK de su lenguaje como dependencia; p. ej.,@dcp-ai/expressdepende de@dcp-ai/sdk. Ninguna integración vuelve a implementar la criptografía. - Integraciones → generadores. Los
packages/create-*distribuyen el código mínimo que un usuario necesita para empezar un proyecto sobre una integración concreta. - SDK → servicios. El servidor de verificación y el servicio de revocación verifican mediante
lib/verify.jsy@dcp-ai/sdk. El registro de transparencia firma sus cabezas de árbol directamente contweetnacl, y el servicio de anclaje solo calcula hashes. - Paquete raíz (
dcp-ai, no publicado en npm). Elpackage.jsonde primer nivel contiene la CLI de referencia + la biblioteca de verificación (bin/dcp.js,lib/verify.js) y el arnés de conformidad. V1 se verifica allí mismo; V2 se valida allí contra el esquema y después lo verifica@dcp-ai/sdk, de modo que hay una única implementación de V2. Es el punto de entrada original; la mayoría de los nuevos usuarios llegan en cambio a través de un SDK o de un generador.
Dónde cambiar qué¶
| Quieres… | Edita |
|---|---|
| Proponer un artefacto nuevo o endurecer un esquema | spec/ + schemas/; después actualiza todos los SDK de forma sincronizada y añade un vector de conformidad en tests/conformance/. |
| Corregir un error criptográfico en un lenguaje | sdks/<language>/. Añade una prueba de regresión. Si el error pudiera afectar a otros lenguajes, añade un vector de interoperabilidad compartido en tests/interop/. |
| Añadir una integración con un framework | integrations/<framework>/. Usa como dependencia el SDK del lenguaje correspondiente. Añade un generador en packages/create-<framework>/ si es un framework principal. |
| Cambiar el sitio de marketing | No está en este repositorio (véase Límite del alcance). |
| Cambiar el sitio de documentación | Las fuentes Markdown y sus cuatro traducciones, mkdocs.yml y la lista de documentos publicados en scripts/docs-i18n.json; docs-site/ y site/ se generan. Véase CONTRIBUTING.md. |
| Cambiar la demo interactiva | playground/. |
| Desplegar o volver a desplegar un servicio | services/<name>/ + deploy/fly/. |
| Publicar una nueva versión de un SDK | Sube la versión en el package.json / Cargo.toml / pyproject.toml correspondiente o en la etiqueta de git; la CI lo detecta y publica mediante .github/workflows/publish*.yml. Omitir lo ya publicado está integrado. |
Límite del alcance¶
El monorepositorio contiene el protocolo y sus implementaciones de referencia: especificación, esquemas, los cinco SDK, integraciones con frameworks, generadores, CLI, servicios operativos, contratos inteligentes, documentación y el playground interactivo. Es todo lo que un tercero necesita para adoptar DCP-AI.
Las aplicaciones para usuarios finales (paneles, agentes, demos) y las superficies de marketing no están en este repositorio de forma intencionada. Pertenecen al código base que las aloje: son aplicaciones sobre el protocolo, no parte de él.
Por qué un monorepositorio hoy¶
Un protocolo con cinco SDK vive o muere por mantenerlos compatibles en el formato de transmisión. Revisar un PR que toca los cinco a la vez —y ejecutar la suite de conformidad contra los cinco en cada PR— es la forma más ligera de imponer ese invariante. En el momento en que un SDK o un componente concreto desarrolle su propia comunidad y su propio ritmo, separarlo será una respuesta razonable. Hasta entonces, el coste de coordinar varios repositorios supera los beneficios.
Lecturas adicionales: el modelo de gobernanza en GOVERNANCE.md y la dirección futura en ROADMAP.md.