Archyl CLI
archyl conecta un repositorio con su arquitectura en Archyl. Desde tu terminal puedes averiguar dónde se sitúa un archivo en el modelo C4, ver a qué afecta tu rama y a quién avisar, dar un briefing a los agentes de codificación antes de que toquen el código y vigilar lo que escriben.
$ archyl impact
◆ archyl impact vs origin/main · 14 changed files
▍ Touched
◉ HTTP Handlers 3 files Archyl / Backend
◉ Harness Service 3 files Archyl / Backend
◉ Task Context 1 file Archyl / Backend
▍ Blast radius
◉ Harness Service
├── ◉ HTTP Handlers calls · 1 hop @platform
├── ◉ MCP Server calls · 1 hop
╰── ▣ Frontend calls · 2 hops @web
▍ Notify
@platform · @web · ada@example.com
La CLI es open source bajo la licencia MIT: github.com/archyl-com/cli.
Instalación
# Homebrew (macOS, Linux)
brew install archyl-com/tap/archyl
# Install script (macOS, Linux): checks the archive's checksum
curl -fsSL https://raw.githubusercontent.com/archyl-com/cli/main/install.sh | sh
# Go (1.26 or later)
go install github.com/archyl-com/cli/cmd/archyl@latest
También puedes descargar un binario desde la página de releases. Los archivos comprimidos incluyen sumas de verificación, están firmados con cosign y se distribuyen con un SBOM.
Comprueba la instalación con archyl --version.
Primeros pasos
Desde la raíz de tu repositorio:
archyl login # sign in through your browser
archyl init # link this repository to its Archyl project
archyl status # alignment score, your branch, active agents
archyl login abre tu navegador e inicia sesión con OAuth 2.1 y PKCE. La sesión se guarda en el llavero del sistema operativo y se renueva sola; solo vuelves a iniciar sesión tras un mes sin usarla.
archyl init escribe .archyl.json en la raíz del repositorio para que cada comando archyl, y el hook Guard, sepan a qué proyecto pertenece este código. Cuando el remoto del repositorio está conectado a un proyecto en Archyl, ese proyecto se elige por ti; si no, lo eliges de una lista. Haz commit del archivo: no contiene ningún secreto, y así tu equipo y tu CI comparten el mismo vínculo.
{
"projectId": "3f2a9c4e-…",
"projectName": "Checkout",
"organizationId": "8b1d…",
"apiUrl": "https://api.archyl.com"
}
Ejecuta archyl init --force para vincular un repositorio a otro proyecto.
¿Todavía no tienes proyecto? archyl init --new crea uno sin salir del terminal:
- Crea el proyecto, con el nombre del repositorio (o
--name), en el equipo que elijas (--team, por nombre, slug o ID). - Conecta el repositorio a partir de su remote de git. Para un remote autoalojado, indica el proveedor con
--provider:github_enterprise,gitlab_privateogitea. - Lanza un descubrimiento con IA sobre
--branch(por defecto: la rama por defecto del remote) y muestra su progreso en directo. - Abre la revisión de lo que ha encontrado el descubrimiento y luego dibuja el resultado como un diagrama.
- Ofrece conectar tus agentes de programación.
archyl init a secas ofrece lo mismo cuando ningún proyecto coincide con el remote del repositorio. --no-discover solo crea y vincula el proyecto, --no-setup se salta el último paso y --yes acepta todos los valores por defecto sin preguntar, incluida la aprobación de lo que encuentre el descubrimiento.
archyl init --new
archyl init --new --name "Checkout" --team platform
archyl init --new --yes --json
La sesión
Ejecuta archyl sin nada más para abrir una sesión: un prompt donde preguntas sobre la arquitectura en lenguaje natural o escribes comandos, y las respuestas aparecen en tu terminal como cualquier otra salida.
$ archyl
◆ archyl
Checkout · feature/refunds · alignment 86
Ask anything about the architecture. / commands · @ files · # elements
› which elements does my branch touch, and who should I tell?
⏺ archyl impact
Touched ◉ Payments 4 files in Checkout / API
… +12 lines
Your branch changes Payments, which Checkout Web calls and the Refund
Worker reads. Tell @payments before merging.
› /run last
- El lenguaje natural va al asistente. Responde a partir de la arquitectura y, cuando la respuesta depende de tu código o de lo que está pasando ahora mismo, ejecuta aquí el comando correspondiente —
impact,check,brief,show,runs… — y muestra cada uno (⏺) antes de usar su salida. Los comandos de solo lectura se ejecutan en paralelo; los que cambian algo, como aprobar el plan de una ejecución o registrar una memoria, te piden confirmación antes (y/n). - Los comandos
/se ejecutan directamente:/impact,/review,/brief <files>,/show <element>,/runs,/activity… Las vistas a pantalla completa (/map,/search,/run,/agents) ocupan la pantalla y te la devuelven cuando sales de ellas./helplo lista todo. @fileadjunta a la pregunta el contenido del archivo, con su briefing de arquitectura: hasta 400 líneas o 24 KB por archivo; los archivos binarios y las rutas fuera del repositorio se omiten.#elementdirige la pregunta a un elemento. Ambos se autocompletan mientras escribes.Enterenvía;Shift+Enter(oAlt+Enter,Ctrl+J) empieza una nueva línea, y el texto pegado conserva sus saltos de línea.↑↓recorren tu historial,Tabautocompleta,Escdetiene una respuesta,Ctrl-Dsale.
Las conversaciones se guardan por repositorio: archyl -c (--continue) reabre la última, /resume elige una anterior de una lista y /new empieza una nueva.
La primera vez, la sesión te indica lo que falta: iniciar sesión (/login), vincular el repositorio (/init). El asistente está disponible en los planes que incluyen el chat de IA; los comandos / funcionan en todos los planes. Con los modelos de OpenAI y Anthropic llama a los comandos como herramientas nativas; con otros proveedores pasa por un protocolo de texto, y no notas ninguna diferencia.
doctor
archyl doctor comprueba todo aquello de lo que depende la CLI y te dice cómo arreglar lo que no está bien: tu versión, el perfil, el inicio de sesión, la latencia de la API, el repositorio, el vínculo con el proyecto, los agentes conectados, el hook Guard y el hook pre-push. Termina con código 1 cuando hay algo que arreglar.
Explorar la arquitectura
activity
archyl activity reúne en un solo feed todo lo que pasa en el proyecto: elementos creados y modificados (con los campos que cambiaron), solicitudes de cambio abiertas y fusionadas, ejecuciones de agentes en cola, esperando a alguien y terminadas, sesiones de trabajo abiertas y cerradas. --follow lo mantiene abierto e imprime los eventos a medida que ocurren, como tail -f; añade --notify para recibir una notificación de escritorio cuando un agente te espera.
archyl activity --follow --notify
archyl activity --element "Payments"
map
archyl map abre un explorador a pantalla completa del modelo C4: sistemas, contenedores, componentes y código en un árbol, con la descripción de cada elemento, sus tecnologías, sus relaciones en ambos sentidos y su radio de impacto. Indica un elemento para abrirlo directamente en él: archyl map "Payments".
| Tecla | Acción |
|---|---|
↑ ↓ or j k |
Moverse |
→ or Enter |
Abrir un elemento |
← |
Cerrarlo, o ir a su padre |
/ |
Filtrar por nombre (búsqueda aproximada) |
u / b |
Saltar a lo que usa / a lo que lo usa |
o |
Abrirlo en la aplicación web |
y |
Copiar su ID |
E / C |
Expandir / contraer todo |
d |
Mostrar el nivel como diagrama |
q |
Salir |
d muestra el nivel actual como diagrama. Tab y Shift+Tab seleccionan un elemento, las flechas o h j k l desplazan la vista, Enter baja a la selección, Backspace o u vuelve a subir, o la abre en la aplicación web, y copia su ID, y d o Esc vuelve al árbol.
diagram
archyl diagram dibuja una vista C4 del modelo: el contexto del sistema por defecto, los contenedores de un sistema cuando nombras un sistema, los componentes de un contenedor cuando nombras un contenedor. Los elementos fuera de la vista aparecen con línea discontinua, por sus relaciones con ella.
archyl diagram
archyl diagram Billing
archyl diagram "Billing API" -o billing-api.png
archyl diagram --format mermaid > context.mmd
archyl diagram Billing --json | jq '.nodes[].name'
En Kitty, Ghostty, WezTerm e iTerm2 el diagrama es una imagen dentro del terminal. En otros terminales, y cuando la salida va a un pipe, se dibuja con caracteres de recuadro:
┌─────────────────┐ ┌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┐ ┌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┐
│ ▣ Storefront │ ╎ ◆ Warehouse ╎ ╎ ◆ Mailgun ╎
│ web app · React │ ╎ software system ╎ ╎ software system ╎
└────────┬────────┘ └╌╌╌╌╌╌╌╌┬╌╌╌╌╌╌╌╌┘ └╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┘
│ │
└───────────────┐ │ updates stock
places orders ×2 │ │
▼ ▼
┌─────────────────┐
│ ▣ Shop API 4 ◉ │
│ api · Go │
└─────┬─────┬─────┘
charges cards │ │ reads from ×2
▼ ▼
| Flag | Propósito |
|---|---|
--format |
text, image (dentro del terminal), png, svg o mermaid. Por defecto: image en un terminal que muestra imágenes, text en los demás |
-o, --output |
Escribir en un archivo; la extensión elige el formato (.png, .svg, .mmd, .md, .txt) |
--json |
Los nodos y aristas ya colocados, para scripts |
Dentro de tmux, las imágenes necesitan set -g allow-passthrough on y un terminal que entienda el protocolo de imágenes de iTerm2. Define ARCHYL_IMAGES=0 para dibujar siempre en texto.
search
archyl search busca en todo lo que puedes ver en Archyl: elementos, decisiones, documentación, contratos de API, canales de eventos, flujos y proyectos. Los resultados se actualizan mientras escribes, con una vista previa; Enter muestra el resultado elegido y ctrl+o lo abre en la aplicación web. Por un pipe o con --json, archyl search invoice imprime los resultados.
show
archyl show <element> imprime un elemento con su ruta, descripción, tecnologías, relaciones, decisiones vinculadas y radio de impacto. archyl show ADR-12 muestra un registro de decisión. Los elementos se buscan por nombre (exacto y, después, parcial) o por ID.
open
archyl open abre el proyecto en la aplicación web; archyl open "Payments" selecciona un elemento en el diagrama y archyl open ADR-12 despliega una decisión. La dirección de la aplicación web es el host de la API con api. sustituido por app.; si está en otro sitio, inicia sesión con --app-url o define ARCHYL_APP_URL.
ask
archyl ask "<question>" hace una pregunta al asistente de IA sobre la arquitectura del proyecto. La respuesta se muestra como markdown mientras se escribe. Todo lo que le pases por un pipe se añade a la pregunta:
archyl ask "Which services write to the orders database?"
git diff main | archyl ask "Does this break any of our decisions?"
El asistente está disponible en los planes que incluyen el chat de IA.
adr
archyl adr lista las decisiones del proyecto. archyl adr new registra una: en un terminal, un formulario te pide el título, el estado, el contexto, la decisión y las consecuencias; en scripts, pásalos como flags.
archyl adr new "Use slog for structured logging" --status accepted \
--context "Three logging libraries are in use" --decision "slog everywhere"
discover
archyl discover lanza un descubrimiento con IA sobre los repositorios vinculados al proyecto y lo sigue, con su progreso en stderr. Lo que encuentra no se incorpora al modelo de inmediato: queda pendiente de revisión, que se abre sola cuando el descubrimiento termina en un terminal. Cada repositorio vinculado cuenta como un descubrimiento con IA en la cuota de tu plan.
archyl discover
archyl discover --repo acme/payments --branch develop
archyl discover --no-wait --json
| Flag | Propósito |
|---|---|
--repo |
Repositorio que descubrir, como owner/name (por defecto: todos los repositorios vinculados) |
--branch |
Rama que leer (por defecto: la rama por defecto del repositorio) |
--wait / --no-wait |
Seguir el descubrimiento hasta que termine (por defecto), o lanzarlo y devolver su job |
--no-review |
No abrir la revisión cuando termina el descubrimiento |
archyl discover review lista los elementos que proponen los descubrimientos, agrupados por nivel C4, con los detalles del elemento seleccionado al lado:
| Tecla | Acción |
|---|---|
↑ ↓ or j k |
Moverse |
Space |
Seleccionar |
a / r |
Aprobar / rechazar la selección, o el elemento actual |
A |
Aprobar todo lo listado |
/ |
Filtrar (búsqueda aproximada) |
q |
Salir |
Fuera de un terminal imprime la lista; --approve-all o --reject-all lo resuelve todo de una vez, y --json la imprime para scripts.
Comandos de arquitectura
where
archyl where <path>… ubica archivos en el modelo C4: el elemento al que pertenece cada uno, quién es su responsable y qué depende de él. Los directorios se expanden a los archivos que git conoce.
archyl where internal/billing/invoice.go
archyl where src/checkout/
why
archyl why <file[:line]> es git blame para la arquitectura. Para un archivo, muestra los elementos a los que pertenece, las decisiones que se aplican (primero las aceptadas), quién es responsable, lo que agentes y personas recordaron sobre él, los últimos cambios del modelo en esos elementos y las reglas de conformidad que lo afectan. Con un número de línea, encuentra además el commit que cambió la línea por última vez y lo relaciona con las decisiones tomadas en las mismas fechas.
archyl why internal/billing/invoice.go
archyl why internal/billing/invoice.go:42
archyl why --json src/checkout/cart.ts | jq '.decisions[].title'
En un terminal la respuesta se muestra con formato; en un pipe o ejecutado por un agente, imprime markdown compacto.
impact
archyl impact compara tu árbol de trabajo con una rama base, ubica cada archivo modificado en la arquitectura y recorre las relaciones para encontrar qué depende de él, junto con los responsables a quienes avisar. Abarca los cambios confirmados, preparados, sin preparar y sin seguimiento, así que puedes ejecutarlo incluso antes de hacer commit.
| Flag | Valor por defecto | Propósito |
|---|---|---|
--base |
rama por defecto de origin | Rama con la que comparar |
--depth |
2 |
Cuántos saltos de relación seguir (de 1 a 6) |
--diagram |
— | Dibujar la parte afectada de la arquitectura, con los elementos tocados resaltados |
archyl impact --base origin/develop --depth 3
archyl impact --diagram
Cada archivo cuenta solo para su coincidencia más específica: un archivo asignado a un componente no arrastra además todo su contenedor.
status
archyl status resume el proyecto en una sola pantalla: la alineación entre el modelo y el código, tu rama y los agentes que trabajan en el proyecto en este momento.
context
archyl context imprime la arquitectura del proyecto en markdown pensado para agentes de codificación: sistemas, contenedores, componentes, relaciones, decisiones y reglas. Pásalo por un pipe o escríbelo en el archivo que lee tu agente.
archyl context > ARCHITECTURE.md
archyl context -o .archyl/context.md
Agentes de codificación
La CLI es la forma más rápida de poner un agente de codificación bajo el Archyl Harness.
setup
archyl setup
archyl setup configura Claude Code, Cursor, VS Code y Codex para usar el servidor MCP de Archyl con el perfil de herramientas coding, instala el hook Guard y enseña la CLI a los agentes. Restríngelo con --agent (repetible: claude-code, cursor, vscode, codex); omite partes con --no-guard, --no-instructions o --no-statusline.
archyl setup también ofrece instalar el autocompletado del shell; --no-completion lo omite.
| Agente | Archivo escrito |
|---|---|
| Claude Code | .mcp.json; el hook Guard y la línea de estado en .claude/settings.json; el bloque de la CLI en CLAUDE.md |
| Cursor, VS Code, Codex | El bloque de la CLI en AGENTS.md |
| Cursor | .cursor/mcp.json |
| VS Code | .vscode/mcp.json |
| Codex | ~/.codex/config.toml |
Los archivos existentes se fusionan, no se sobrescriben.
Por defecto (--transport cli), cada agente inicia archyl mcp, que llega al servidor MCP de Archyl con la propia sesión de la CLI: inicia sesión una vez con archyl login y todos los agentes quedan conectados, sin un flujo OAuth por agente ni claves en un archivo. Con --transport http, la configuración solo contiene la URL del servidor y cada agente inicia sesión a través del propio Archyl. En ambos casos, los archivos del repositorio no contienen ningún secreto y puedes hacer commit de ellos sin riesgo.
mcp
archyl mcp sirve las herramientas MCP de Archyl a un agente por stdio, autenticado como tú. archyl setup lo configura; a mano, para cualquier cliente MCP:
{ "mcpServers": { "archyl": { "command": "archyl", "args": ["mcp"] } } }
Usa el perfil de herramientas coding; --tools full expone todas las herramientas.
El bloque de la CLI es una sección breve entre los marcadores <!-- archyl:start --> y <!-- archyl:end --> que indica al agente qué comandos archyl ejecutar y cuándo: plan antes de un cambio no trivial, brief antes de editar archivos, check y radar check antes de terminar, remember y recall para lo que el código no puede mostrar. Volver a ejecutar setup actualiza el bloque y deja intacto el resto del archivo. Una línea de estado ya configurada en Claude Code nunca se reemplaza.
plan
archyl plan "<task>" devuelve un plan de implementación basado en la arquitectura: los pasos, el elemento que toca cada uno, las decisiones y reglas que hay que respetar, y lo que aprendieron las sesiones anteriores.
archyl plan "Add partial refunds to the payments flow"
brief
archyl brief <files> te dice, a ti o a un agente, lo que hay que saber antes de editar esos archivos: los elementos a los que pertenecen, lo que usan esos elementos y lo que depende de ellos, las decisiones que se aplican a ellos o a sus padres, sus responsables y lo que Archyl recuerda sobre ellos. Sin rutas, abarca todos los archivos que modifica la rama.
Como plan, recall y context, se muestra con formato en un terminal e imprime markdown compacto cuando un agente lo ejecuta desde su shell, de modo que el agente lee estructura, no códigos de escape.
remember y recall
archyl remember registra un hecho que el código no puede mostrar en el elemento al que se refiere; cada futura sesión de trabajo sobre ese elemento recibe ese dato en su briefing. archyl recall encuentra lo que Archyl recuerda, por tema, elemento o tipo.
archyl remember "Refund amounts are in minor units; never use floats" \
--element "Payments" --kind pitfall
archyl recall refunds
archyl recall --element "Payments" --kind convention
| Tipo | Úsalo para |
|---|---|
convention |
Cómo se hacen las cosas aquí |
pitfall |
Lo que le ha pasado a alguien, para que no le pase al siguiente |
note |
Cualquier otra cosa que valga la pena saber |
La memoria se atribuye al agente que la escribió cuando la CLI se ejecuta dentro de Claude Code, Codex o Cursor; define ARCHYL_AGENT para indicar el nombre tú mismo.
agents
archyl agents es una vista en directo de los agentes que trabajan en el proyecto: qué agente, en qué tarea, sobre qué elementos y con qué archivos modificados. Los elementos reservados por más de un agente se señalan para que dos agentes no choquen en el mismo código. Pulsa a para incluir las sesiones terminadas recientemente. Por un pipe o con --json, imprime las sesiones una sola vez.
statusline
archyl statusline es una línea de estado para Claude Code: el proyecto, su puntuación de alineación, los agentes trabajando y si la sesión actual se ejecuta bajo el harness. archyl setup la instala; a mano, en .claude/settings.json:
{ "statusLine": { "type": "command", "command": "archyl statusline" } }
runs
archyl runs lista las ejecuciones de agentes gestionadas del proyecto y señala las que te esperan. archyl runs view sigue una en directo: los mensajes del agente, sus llamadas a herramientas y los archivos que modifica en el feed, su plan con el progreso de cada paso, y el tiempo, los tokens y el coste a un lado. Y actúas sobre ella sin salir del terminal:
| Tecla | Cuándo | Acción |
|---|---|---|
Enter or 1–9 |
El agente hace una pregunta | Responderla o elegir una de sus opciones |
a / c |
El agente propone un plan | Aprobarlo o solicitar cambios |
a |
La ejecución está retenida pendiente de aprobación | Dejar que empiece |
s |
La ejecución está en curso | Dirigir al agente con un mensaje |
x |
La ejecución está en curso | Cancelarla (pide confirmación) |
n |
La ejecución ha terminado | Continuar su trabajo en una nueva ejecución, en la misma rama y la misma pull request |
o |
La ejecución abrió una pull request | Abrirla |
Las mismas acciones existen como comandos, para scripts y para agentes que supervisan a otros agentes. Las ejecuciones se identifican por los primeros caracteres de su ID, o con last:
archyl runs start "Add partial refunds" --profile backend-fixer
archyl runs view last
archyl runs answer 3f2a9c4e "Keep the v1 endpoint"
archyl runs approve 3f2a9c4e
archyl runs request-changes 3f2a9c4e "Split the migration from the API change"
archyl runs steer 3f2a9c4e "Use the ledger service, not the orders table"
archyl runs continue 3f2a9c4e "Add tests for the edge cases"
archyl runs cancel 3f2a9c4e
Las ejecuciones de agentes gestionadas están disponibles en los planes que las incluyen.
wrap
archyl wrap -- claude # asks what the task is
archyl wrap --task "Add PDF export to invoices" -- claude
archyl wrap --agent codex --exclusive -- codex "fix the flaky checkout test"
archyl wrap ejecuta cualquier agente dentro de una sesión de trabajo:
- Abre una sesión para la tarea. Archyl elige los elementos, decisiones y reglas relevantes, toma reservas (leases) sobre los elementos para que dos agentes no choquen, y devuelve un briefing con el veredicto del gate.
- Claude Code recibe el briefing como un prompt de sistema añadido. Todo agente encuentra
ARCHYL_SESSION_IDyARCHYL_BRIEFING_FILEen su entorno. - Mientras el agente trabaja, la sesión se mantiene activa con un heartbeat cada 10 minutos, y el hook Guard le atribuye cada archivo editado.
- Cuando el agente termina,
wrapinforma de los archivos modificados, cierra la sesión y ofrece abrir un borrador de solicitud de cambio de arquitectura para que una persona revise cómo debe ponerse al día el modelo.
| Flag | Propósito |
|---|---|
-t, --task |
Lo que el agente va a hacer (se pregunta si se omite) |
--agent |
Nombre del agente registrado en la sesión (por defecto: el nombre del comando) |
--exclusive |
Se niega a arrancar si otra sesión tiene una reserva sobre los mismos elementos |
--change-request |
Abre el borrador de solicitud de cambio sin preguntar |
--no-change-request |
Nunca pregunta si abrir una solicitud de cambio |
Si Archyl no está accesible, wrap muestra un aviso y ejecuta el agente de todos modos.
fix
archyl fix
archyl fix --severity high --agent codex
archyl fix --print | pbcopy
archyl fix -- claude --model opus
archyl fix pone a un agente de programación a trabajar en las violaciones de reglas de tu rama, bajo el harness:
- Ejecuta la comprobación de conformidad sobre la rama, como
archyl check, y te deja elegir las violaciones que corregir. - Abre una sesión de trabajo y entrega al agente cada violación con su regla, severidad, ubicación y sugerencia, junto con el brief de los elementos a los que pertenecen los archivos y las decisiones que se aplican.
- Cuando el agente termina, vuelve a ejecutar la comprobación y muestra lo que queda, por ejemplo «3 violations → 0».
No se hace ningún commit: revisa los cambios con git diff. El agente es el primero instalado entre Claude Code y Codex, o el que indique --agent. Después de -- se ejecuta cualquier comando en su lugar; lee la tarea del archivo que indica ARCHYL_FIX_TASK_FILE.
| Flag | Propósito |
|---|---|
--agent |
claude, codex o gemini (por defecto: el primero instalado) |
--severity |
Severidad mínima que corregir: critical, high, medium o low (por defecto low) |
--base |
Ref con la que comparar (por defecto: el destino de la pull request, o la rama por defecto de origin) |
-y, --yes |
Corregir todas las violaciones sin preguntar |
--print |
Imprimir el prompt de la tarea en lugar de ejecutar un agente, para pasárselo a cualquier otro agente |
--change-request |
Abrir un borrador de Architecture Change Request al cerrarse la sesión |
lsp
archyl lsp es un servidor de lenguaje (LSP) sobre stdio para cualquier editor con cliente LSP. Funciona junto al servidor propio del lenguaje:
| Función | Lo que obtienes |
|---|---|
| Diagnósticos | Las reglas de conformidad, ejecutadas sobre un archivo al abrirlo o guardarlo. Los hallazgos críticos y altos son errores, los medios avisos y los bajos información |
| Hover | El elemento del archivo: su lugar en el modelo C4, responsables, cuántos elementos dependen de él, las decisiones que se aplican |
| Acciones de código | Ask Archyl why pregunta al asistente por qué existe una regla, o por qué el archivo está construido así; Open in Archyl abre el elemento en el navegador |
Usa la sesión de la CLI (archyl login o ARCHYL_API_KEY) y el .archyl.json del repositorio. Cuando no puede contactar con Archyl, escribe un único aviso en el log LSP del editor y no muestra diagnósticos. Los diagnósticos siguen a los guardados, no a las pulsaciones.
Neovim 0.11 y posteriores:
vim.lsp.config("archyl", {
cmd = { "archyl", "lsp" },
root_markers = { ".archyl.json", ".git" },
filetypes = { "go", "typescript", "python", "java", "rust" },
})
vim.lsp.enable("archyl")
Helix, en languages.toml:
[language-server.archyl]
command = "archyl"
args = ["lsp"]
[[language]]
name = "go"
language-servers = ["gopls", "archyl"]
VS Code pasa por la extensión Generic LSP Client, y Zed por una pequeña extensión de desarrollo. La configuración de cada editor está en docs/lsp.md.
guard
archyl guard es el hook PreToolUse de Claude Code que instala archyl setup. Lee el payload del hook por stdin, ejecuta las reglas de conformidad del proyecto sobre el archivo tal como quedaría tras la edición y responde con una decisión: las violaciones críticas bloquean la edición, las altas generan un aviso. Pon ARCHYL_GUARD_BLOCK en high para bloquear también las violaciones altas, o en off para solo avisar.
Cuando el agente edita un manifiesto de dependencias (go.mod, package.json, pom.xml…), el Guard también lo comprueba con el radar tecnológico y bloquea una dependencia que el radar tiene En espera, junto con la alternativa que sugiere su nota. Las dependencias En espera que ya estaban no bloquean la edición.
El Guard siempre falla en abierto: sin credenciales, sin red o ante una herramienta desconocida deja pasar la edición, de modo que nunca puede romper tu flujo de trabajo.
session
archyl session da acceso de bajo nivel al protocolo de sesiones de trabajo, para scripts o agentes que lo manejan por sí mismos. La mayoría de las veces, archyl wrap hace todo esto por ti.
archyl session start --task "Migrate invoices to the new ledger" --exclusive
archyl session heartbeat <session-id>
archyl session finish --summary "Ledger migration done" \
--decision "Invoices are written through the ledger service only" \
--follow-up "Backfill invoices older than 2024" \
--change-request
archyl session list --all
archyl session cancel <session-id>
finish toma el ID de sesión como argumento o desde ARCHYL_SESSION_ID. Pon en --decision solo decisiones dignas de un ADR: cada una se convierte en memoria que se reproduce en futuras sesiones sobre los mismos elementos. Todo lo circunstancial va en --follow-up.
Comprobaciones y CI
Los mismos comandos se ejecutan en tu portátil, en un hook de git y en cualquier CI. En CI toman del entorno la rama base, el commit y el formato del informe: se reconocen GitHub Actions, GitLab CI, Bitbucket Pipelines y Azure Pipelines.
check
archyl check ejecuta las reglas de conformidad del proyecto sobre cada archivo que difiere de la rama base y termina con código 1 cuando una violación alcanza --fail-on.
$ archyl check
CRITICAL Forbidden pattern found: fmt.Println (use slog) No printing in services
╭─ internal/billing/invoice.go:42
42 │ fmt.Println("total", total)
╰─ → Remove usage of the forbidden pattern: fmt.Println (use slog)
✗ 1 violation in 3 changed files · 1 critical
| Flag | Valor por defecto | Propósito |
|---|---|---|
--base |
el destino de la pull request; si no, la rama por defecto de origin | Ref con la que comparar |
--fail-on |
high |
Gravedad mínima que hace fallar: critical, high, medium, low o never |
--format |
auto |
pretty, json, github, gitlab o sarif |
-o, --output |
stdout | Archivo para el informe gitlab o sarif |
--fail-open |
desactivado | Termina con 0 cuando la comprobación no puede ejecutarse (sin conexión, sin sesión iniciada); solo fallan las violaciones |
Con --format auto, la salida se adapta a la CI:
| Dónde | Qué obtienes |
|---|---|
| GitHub Actions | Anotaciones en línea en la pull request, más una tabla en el resumen del job |
| GitLab CI | Un informe de Code Quality en gl-code-quality-report.json, que se muestra en la merge request |
| En cualquier otro sitio | La vista de terminal de arriba |
--format sarif escribe un registro SARIF 2.1.0 para el code scanning de GitHub, Azure DevOps o cualquier panel de seguridad.
Los checkouts de CI suelen ser superficiales (shallow). Descarga el historial para que exista la rama base; de lo contrario, check se detiene y te lo indica.
# GitHub Actions
- uses: actions/checkout@v4
with:
fetch-depth: 0
- run: archyl check
env:
ARCHYL_API_KEY: ${{ secrets.ARCHYL_API_KEY }}
# GitLab CI
archyl:
variables:
GIT_DEPTH: 0
script:
- archyl check
artifacts:
reports:
codequality: gl-code-quality-report.json
review
archyl review es la pasada que conviene ejecutar antes de abrir una pull request. Reúne las violaciones de reglas que introduce tu rama, los elementos que toca junto con lo que depende de ellos, a quién avisar y la puntuación de alineación actual. Termina con código 1 cuando una violación alcanza --fail-on (por defecto high).
Con --comment, la revisión se publica en la pull o merge request y se edita en el mismo sitio en cada push posterior, de modo que la solicitud conserva un único comentario de Archyl: el veredicto, las violaciones con su archivo y su línea, los elementos tocados junto con lo que depende de ellos y los responsables a quienes implicar. GitHub necesita GITHUB_TOKEN con pull-requests: write; GitLab necesita GITLAB_TOKEN con el scope api, ya que CI_JOB_TOKEN no puede comentar.
El comentario incluye el impacto como un flowchart de Mermaid, que GitHub y GitLab renderizan. archyl review --diagram imprime ese mismo flowchart en local, para pegarlo en una descripción o un documento.
La forma más rápida de configurarlo en GitHub es la action de Archyl, que instala la CLI y ejecuta un comando:
name: Architecture
on: pull_request
permissions:
contents: read
pull-requests: write
jobs:
archyl:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: archyl-com/cli@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
command: review --comment
Deja command vacío para solo instalar la CLI y llamarla en pasos posteriores.
hooks
archyl hooks install # blocks critical violations on git push
archyl hooks install --fail-on high
archyl hooks uninstall
archyl hooks install añade un hook pre-push de git que ejecuta archyl check --fail-open. Se rechaza todo push que traiga una violación igual o superior a --fail-on (por defecto critical); si archyl no está en el PATH, no hay conexión o no has iniciado sesión, el push pasa. Sáltalo una vez con git push --no-verify. El hook respeta core.hooksPath, y un hook pre-push que no haya escrito archyl nunca se reemplaza, salvo que pases --force.
drift
archyl drift muestra hasta qué punto el modelo documentado coincide con el código: 100 significa que cada elemento documentado se encontró en el código. --compute vuelve a analizar primero el repositorio conectado y espera el resultado; --fail-under lo convierte en un quality gate.
archyl drift --compute --fail-under 80
dsl
archyl dsl mantiene sincronizados un archivo de arquitectura como código y el modelo del proyecto. Todos los subcomandos trabajan sobre archyl.yaml en la raíz del repositorio, salvo que pases --file.
archyl dsl pull # write the project's model to archyl.yaml
archyl dsl diff # what pushing the file would change
archyl dsl diff --exit-code # in CI: fail when the file and the model differ
archyl dsl push # import the file into the project
pullexporta el modelo (elementos, relaciones, tecnologías, decisiones, documentación, contratos, entornos y releases). Pregunta antes de sobrescribir el archivo, salvo que pases--yes;--file -lo imprime en su lugar.diffes una ejecución en seco en el servidor, sin escribir nada: los elementos y relaciones que un push añadiría (+) o cambiaría (~), agrupados por nivel C4, y los que solo tiene Archyl (−).--exit-codetermina con código 1 cuando hay alguna diferencia.pushcrea los elementos y relaciones nuevos y actualiza los existentes, emparejados por nombre. Nunca borra nada: lo que solo tiene Archyl se queda. En un terminal muestra el diff y pregunta antes;--yesomite la pregunta.
$ archyl dsl diff
▍ Containers
+ Refund Worker
~ Payments API
description "Card payments" → "Card and wallet payments"
− Legacy Billing only in Archyl, push keeps it
archyl.yaml vs the model: 1 to add · 1 to change · 1 only in Archyl
archyl sync [file] equivale a archyl dsl push.
release
archyl release registra una release, para correlacionar los cambios de arquitectura con lo que se ha entregado y alimentar las métricas DORA. La versión es por defecto el tag que se está construyendo en CI y, si no, el tag de HEAD; el enlace apunta por defecto a la ejecución de CI.
archyl release v2.4.0 --environment production
| Flag | Propósito |
|---|---|
--environment |
Entorno en el que se desplegó |
--status |
Estado de la release (por defecto deployed) |
--changelog |
Notas de la versión |
--system, --container |
Elemento al que pertenece la release |
--url |
Enlace a la release o al pipeline |
radar
archyl radar muestra las tecnologías de la organización por anillo de gobernanza (Adoptar, Probar, Evaluar, En espera) y cuánta parte de la arquitectura usa cada una. archyl radar check lee los manifiestos de dependencias del repositorio, empareja cada dependencia con el radar y termina con código 1 cuando alguna está En espera, con la misma salida de CI que archyl check.
$ archyl radar check
HOLD github.com/sirupsen/logrus 1.9.3 go.mod
→ Use log/slog from the standard library
ASSESS go.uber.org/zap 1.27.0 go.mod
✗ 1 dependency on hold · 4 dependencies in 1 manifest · 1 adopt · 0 trial · 1 assess · 1 hold · 1 unclassified
| Flag | Valor por defecto | Propósito |
|---|---|---|
--fail-on |
hold |
Anillo que hace fallar: hold, assess o never |
--changed |
desactivado | Solo los manifiestos modificados respecto a la base |
--format |
auto |
pretty, json, github, gitlab o sarif |
cr
archyl cr lista las solicitudes de cambio de arquitectura del proyecto —a menudo abiertas por agentes al final de una sesión de trabajo— y te permite revisarlas sin salir del terminal.
archyl cr # list
archyl cr show 12 # the request and its changes
archyl cr approve 12
archyl cr request-changes 12 -m "Keep the ledger behind the Payments API"
archyl cr open 12 # in the web app
Cuentas y perfiles
| Comando | Qué hace |
|---|---|
archyl login |
Inicio de sesión en el navegador. --host apunta a otra instancia de Archyl, --with-token lee una clave API por stdin |
archyl logout |
Olvida la credencial guardada |
archyl cache clear |
Borra los modelos en caché del perfil activo; --all borra los de todos los perfiles |
archyl whoami |
Quién eres, en qué host, organización y proyecto |
archyl profile |
Lista los perfiles; archyl profile use <name> cambia de perfil |
archyl inbox |
Tus notificaciones: menciones, revisiones, ejecuciones de agentes, tareas. En un terminal, elige una para actuar sobre ella: revisar una solicitud de cambio, responder a un agente o abrirla en la aplicación web. --watch se queda abierto con notificaciones de escritorio; --read marca todo como leído |
Un perfil es un host de Archyl y una organización con su propia credencial. Crea uno iniciando sesión con un nombre, que es también la forma de conectarte a un Archyl autoalojado:
archyl login --host https://archyl.example.com --profile work
archyl profile use work
Prompt del shell
archyl prompt imprime en pocos caracteres la puntuación de alineación del proyecto y los agentes activos, para el prompt de tu shell. Nunca espera a la red: imprime el último estado conocido y lo actualiza en segundo plano cada diez minutos. Con Starship:
[custom.archyl]
command = "archyl prompt"
when = "test -f .archyl.json"
format = "[$output]($style) "
style = "purple"
Copia local del modelo
map, show, open, el autocompletado de elementos y las sugerencias # de la sesión responden a partir de una copia local del modelo, así que arrancan al instante. Hay una copia por perfil, host, organización, identidad y proyecto, en tu directorio de caché de usuario, legible solo por ti. Una copia de menos de 30 segundos se usa sin llamar a la API; una más antigua se actualiza, y cuando la API tarda más de 1,5 segundos el comando responde a partir de la copia y lo indica en stderr. Los comandos que cambian el modelo, como dsl push o aprobar descubrimientos, descartan la copia.
Omite la caché en un solo comando con --no-cache, o en todas partes con ARCHYL_NO_CACHE=1. archyl login y archyl logout borran las copias del perfil; archyl cache clear lo hace a mano.
Actualizaciones
Cuando sale una versión más reciente, la CLI lo indica una vez que ha terminado un comando. La comprobación se ejecuta en segundo plano como mucho una vez al día, nunca en CI ni en scripts; define ARCHYL_NO_UPDATE_NOTIFIER para desactivarla.
archyl upgrade actualiza la CLI de la misma forma en que la instalaste: brew upgrade para Homebrew, el comando go install para una compilación desde el código fuente y, en los demás casos, en el sitio: descarga el archivo de la versión para tu plataforma, lo verifica con el checksums.txt de la versión (y su firma cosign cuando cosign está en tu PATH) y lo pone en lugar del binario en ejecución. --check solo indica si ha salido una versión más reciente.
archyl upgrade
archyl upgrade --check
Flags globales
| Flag | Propósito |
|---|---|
--json |
Salida legible por máquinas. Todos los comandos que imprimen un resultado la admiten |
-p, --project |
ID del proyecto, con prioridad sobre .archyl.json |
--profile |
Perfil que usar |
--no-cache |
Obtiene el modelo de la API en lugar de la caché local |
Los mensajes de estado y los spinners van a stderr y los resultados a stdout, así que los pipes solo ven el resultado:
archyl where --json . | jq '.files[].elements[0].name'
archyl impact --json | jq '.impact.notify'
CI y scripts
No hace falta iniciar sesión: crea una clave API en Perfil → Claves API y defínela en el entorno.
export ARCHYL_API_KEY=arch_…
export ARCHYL_PROJECT_ID=… # or commit .archyl.json
archyl impact --json | jq '.impact.notify'
archyl dsl diff --exit-code # fails when archyl.yaml and the model differ
Para guardar una clave API como credencial, pásala por un pipe a archyl login --with-token.
| Variable | Propósito |
|---|---|
ARCHYL_API_KEY |
Clave API; omite las credenciales guardadas |
ARCHYL_HOST |
URL de la API para un Archyl autoalojado (por defecto https://api.archyl.com); también se lee ARCHYL_API_URL |
ARCHYL_PROJECT_ID |
Proyecto, con prioridad sobre .archyl.json |
ARCHYL_ORG_ID |
Organización |
ARCHYL_PROFILE |
Perfil que usar, como --profile |
ARCHYL_GUARD_BLOCK |
critical (por defecto), high u off |
ARCHYL_SESSION_ID |
Sesión de trabajo a la que se asocian el Guard y session finish (la define wrap) |
ARCHYL_FIX_TASK_FILE |
Archivo con la tarea, para un comando ejecutado con archyl fix -- <command> (lo define fix) |
ARCHYL_CONFIG_DIR |
Directorio de configuración |
ARCHYL_NO_KEYRING |
Guarda las credenciales en un archivo que solo tú puedes leer (modo 0600) en lugar del llavero del sistema operativo |
ARCHYL_AGENT |
Nombre registrado en las memorias y las sesiones, cuando la CLI no puede saber qué agente la ejecuta |
GITHUB_TOKEN, GITLAB_TOKEN |
Token con el que publica review --comment |
ARCHYL_APP_URL |
URL de la aplicación web, cuando no es el host de la API con api. sustituido por app. |
ARCHYL_THEME |
dark o light, para no preguntar al terminal por su color de fondo |
ARCHYL_IMAGES |
0 para dibujar los diagramas en texto, incluso en un terminal que muestra imágenes |
ARCHYL_CACHE_DIR |
Directorio de caché (caché del modelo, estado del prompt, comprobación de actualizaciones) |
ARCHYL_NO_CACHE |
1 para no usar nunca la caché local del modelo, como --no-cache |
ARCHYL_NO_UPDATE_NOTIFIER |
No avisar nunca de nuevas versiones |
NO_COLOR |
Salida sin colores |
Autocompletado del shell
archyl completion install escribe el script de autocompletado donde tu shell lo carga: un directorio del fpath de zsh que sea tuyo (o ~/.zfunc), ~/.config/fish/completions o ~/.local/share/bash-completion/completions. Vuelve a ejecutarlo para actualizar el script. Solo cambia el archivo de inicio de tu shell cuando hace falta (zsh sin un directorio fpath tuyo, PowerShell) y tú lo aceptas. archyl setup también lo ofrece.
archyl completion install
archyl completion install --shell fish
Para escribir el script tú mismo:
archyl completion zsh > "${fpath[1]}/_archyl"
archyl completion bash > /etc/bash_completion.d/archyl
archyl completion fish > ~/.config/fish/completions/archyl.fish