Archyl CLI
archyl conecta um repositório à sua arquitetura no Archyl. Do seu terminal, você descobre onde um arquivo fica no modelo C4, vê o que sua branch afeta e quem avisar, prepara um briefing para os agentes de programação antes que toquem no código e vigia o que eles escrevem.
$ 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
A CLI é open source sob a licença MIT: github.com/archyl-com/cli.
Instalação
# 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
Você também pode baixar um binário na página de releases. Os arquivos têm checksum, são assinados com cosign e vêm acompanhados de um SBOM.
Verifique a instalação com archyl --version.
Primeiros passos
Na raiz do seu repositório:
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 seu navegador e faz o login com OAuth 2.1 e PKCE. A sessão é guardada no chaveiro do sistema operacional e se renova sozinha; você só precisa entrar de novo depois de um mês sem uso.
archyl init grava .archyl.json na raiz do repositório, para que todo comando archyl, e o hook Guard, saiba a qual projeto esse código pertence. Quando o remote do repositório está conectado a um projeto no Archyl, esse projeto é escolhido para você; caso contrário, você o seleciona em uma lista. Faça commit do arquivo: ele não contém nenhum segredo, e assim seu time e sua CI compartilham o vínculo.
{
"projectId": "3f2a9c4e-…",
"projectName": "Checkout",
"organizationId": "8b1d…",
"apiUrl": "https://api.archyl.com"
}
Execute archyl init --force para vincular um repositório a outro projeto.
Ainda não tem um projeto? archyl init --new cria um sem sair do terminal:
- Cria o projeto, com o nome do repositório (ou
--name), na equipe que você escolher (--team, por nome, slug ou ID). - Conecta o repositório a partir do seu remote git. Para um remote auto-hospedado, informe o provedor com
--provider:github_enterprise,gitlab_privateougitea. - Inicia uma descoberta com IA em
--branch(padrão: a branch padrão do remote) e mostra o progresso ao vivo. - Abre a revisão do que a descoberta encontrou e depois desenha o resultado como um diagrama.
- Oferece conectar seus agentes de programação.
archyl init sozinho oferece o mesmo quando nenhum projeto corresponde ao remote do repositório. --no-discover apenas cria e vincula o projeto, --no-setup pula a última etapa e --yes aceita todos os padrões sem perguntar, inclusive aprovando o que a descoberta encontrar.
archyl init --new
archyl init --new --name "Checkout" --team platform
archyl init --new --yes --json
A sessão
Execute archyl sozinho para abrir uma sessão: um prompt onde você pergunta sobre a arquitetura em linguagem natural ou digita comandos, com as respostas aparecendo no seu terminal como qualquer outra saída.
$ 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
- Linguagem natural vai para o assistente. Ele responde a partir da arquitetura e, quando a resposta depende do seu código ou do que está acontecendo agora, executa aqui o comando correspondente —
impact,check,brief,show,runs… — e mostra cada um (⏺) antes de usar a saída dele. Comandos somente leitura rodam em paralelo; comandos que alteram algo, como aprovar o plano de uma execução ou registrar uma memória, pedem sua confirmação antes (y/n). - Comandos
/são executados diretamente:/impact,/review,/brief <files>,/show <element>,/runs,/activity… Visualizações em tela cheia (/map,/search,/run,/agents) ocupam a tela e a devolvem quando você sai delas./helplista tudo. @fileanexa à pergunta o conteúdo do arquivo, com o briefing de arquitetura dele: até 400 linhas ou 24 KB por arquivo; arquivos binários e caminhos fora do repositório são ignorados.#elementdireciona a pergunta a um elemento. Ambos têm autocompletar enquanto você digita.Enterenvia;Shift+Enter(ouAlt+Enter,Ctrl+J) começa uma nova linha, e o texto colado mantém suas quebras de linha.↑↓percorrem seu histórico,Tabcompleta,Escinterrompe uma resposta,Ctrl-Dsai.
As conversas são guardadas por repositório: archyl -c (--continue) reabre a última, /resume escolhe uma anterior em uma lista e /new começa uma nova.
Na primeira vez, a sessão informa o que está faltando: fazer login (/login), vincular o repositório (/init). O assistente está disponível nos planos que incluem o chat de IA; os comandos / funcionam em todos os planos. Com modelos da OpenAI e da Anthropic, ele chama os comandos como ferramentas nativas; com outros provedores, passa por um protocolo de texto, e você não nota nenhuma diferença.
doctor
archyl doctor verifica tudo de que a CLI depende e diz como corrigir o que não está certo: sua versão, o perfil, o login, a latência da API, o repositório, o vínculo com o projeto, os agentes conectados, o hook Guard e o hook pre-push. Sai com código 1 quando algo precisa ser corrigido.
Explorar a arquitetura
activity
archyl activity é um único feed do que acontece no projeto: elementos criados e alterados (com os campos que mudaram), solicitações de mudança abertas e mescladas, execuções de agentes na fila, aguardando alguém e concluídas, sessões de trabalho abertas e encerradas. --follow o mantém aberto e imprime os eventos à medida que acontecem, como tail -f; adicione --notify para receber uma notificação na área de trabalho quando um agente estiver aguardando você.
archyl activity --follow --notify
archyl activity --element "Payments"
map
archyl map abre um explorador em tela cheia do modelo C4: sistemas, containers, componentes e código em uma árvore, com a descrição de cada elemento, suas tecnologias, seus relacionamentos nos dois sentidos e seu raio de impacto. Informe um elemento para abrir diretamente nele: archyl map "Payments".
| Tecla | Ação |
|---|---|
↑ ↓ or j k |
Mover |
→ or Enter |
Abrir um elemento |
← |
Fechá-lo, ou ir para o pai |
/ |
Filtrar por nome (busca aproximada) |
u / b |
Ir para o que ele usa / o que o usa |
o |
Abri-lo no aplicativo web |
y |
Copiar o ID |
E / C |
Expandir / recolher tudo |
d |
Mostrar o nível como diagrama |
q |
Sair |
d mostra o nível atual como diagrama. Tab e Shift+Tab selecionam um elemento, as setas ou h j k l rolam a vista, Enter desce na seleção, Backspace ou u volta a subir, o abre no app web, y copia o ID, e d ou Esc volta para a árvore.
diagram
archyl diagram desenha uma visão C4 do modelo: o contexto de sistema por padrão, os contêineres de um sistema quando você nomeia um sistema, os componentes de um contêiner quando você nomeia um contêiner. Elementos fora da visão aparecem tracejados, por causa das relações com ela.
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'
No Kitty, Ghostty, WezTerm e iTerm2 o diagrama é uma imagem dentro do terminal. Nos outros terminais, e quando a saída vai para um pipe, ele é desenhado com caracteres de caixa:
┌─────────────────┐ ┌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┐ ┌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┐
│ ▣ 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 | Finalidade |
|---|---|
--format |
text, image (dentro do terminal), png, svg ou mermaid. Padrão: image em um terminal que exibe imagens, text nos demais |
-o, --output |
Gravar em um arquivo; a extensão escolhe o formato (.png, .svg, .mmd, .md, .txt) |
--json |
Os nós e arestas já posicionados, para scripts |
Dentro do tmux, as imagens precisam de set -g allow-passthrough on e de um terminal que entenda o protocolo de imagens do iTerm2. Defina ARCHYL_IMAGES=0 para sempre desenhar em texto.
search
archyl search pesquisa tudo o que você pode ver no Archyl: elementos, decisões, documentação, contratos de API, canais de eventos, fluxos e projetos. Os resultados se atualizam enquanto você digita, com uma pré-visualização; Enter mostra o item escolhido, ctrl+o o abre no aplicativo web. Em um pipe ou com --json, archyl search invoice imprime os resultados.
show
archyl show <element> imprime um elemento com seu caminho, descrição, tecnologias, relacionamentos, decisões vinculadas e raio de impacto. archyl show ADR-12 exibe um registro de decisão. Os elementos são encontrados pelo nome (exato, depois parcial) ou pelo ID.
open
archyl open abre o projeto no aplicativo web; archyl open "Payments" seleciona um elemento no diagrama, archyl open ADR-12 expande uma decisão. O endereço do aplicativo web é o host da API com api. substituído por app.; quando ele fica em outro lugar, faça login com --app-url ou defina ARCHYL_APP_URL.
ask
archyl ask "<question>" faz uma pergunta ao assistente de IA sobre a arquitetura do projeto. A resposta é renderizada em markdown enquanto é escrita. Tudo o que você passar por pipe é adicionado à pergunta:
archyl ask "Which services write to the orders database?"
git diff main | archyl ask "Does this break any of our decisions?"
O assistente está disponível nos planos que incluem o chat de IA.
adr
archyl adr lista as decisões do projeto. archyl adr new registra uma: em um terminal, um formulário pede o título, o status, o contexto, a decisão e as consequências; em scripts, passe-os 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 inicia uma descoberta com IA nos repositórios vinculados ao projeto e a acompanha, com o progresso na stderr. O que ela encontra não entra no modelo de imediato: fica aguardando revisão, que se abre sozinha quando a descoberta termina em um terminal. Cada repositório vinculado conta como uma descoberta com IA na cota do seu plano.
archyl discover
archyl discover --repo acme/payments --branch develop
archyl discover --no-wait --json
| Flag | Finalidade |
|---|---|
--repo |
Repositório a descobrir, no formato owner/name (padrão: todos os repositórios vinculados) |
--branch |
Branch a ler (padrão: a branch padrão do repositório) |
--wait / --no-wait |
Acompanhar a descoberta até o fim (o padrão), ou iniciá-la e retornar o job dela |
--no-review |
Não abrir a revisão quando a descoberta termina |
archyl discover review lista os elementos propostos pelas descobertas, agrupados por nível C4, com os detalhes do elemento selecionado ao lado:
| Tecla | Ação |
|---|---|
↑ ↓ or j k |
Mover |
Space |
Selecionar |
a / r |
Aprovar / rejeitar a seleção, ou o elemento atual |
A |
Aprovar tudo o que está listado |
/ |
Filtrar (busca aproximada) |
q |
Sair |
Fora de um terminal, imprime a lista; --approve-all ou --reject-all resolve tudo de uma vez, e --json a imprime para scripts.
Comandos de arquitetura
where
archyl where <path>… situa arquivos no modelo C4: o elemento ao qual cada um pertence, quem é o responsável e o que depende dele. Diretórios são expandidos para os arquivos que o git conhece.
archyl where internal/billing/invoice.go
archyl where src/checkout/
why
archyl why <file[:line]> é o git blame da arquitetura. Para um arquivo, mostra os elementos a que ele pertence, as decisões que se aplicam (as aceitas primeiro), quem é responsável, o que agentes e pessoas registraram sobre ele, as últimas mudanças do modelo nesses elementos e as regras de conformidade voltadas para ele. Com um número de linha, encontra também o commit que alterou a linha por último e o relaciona às decisões tomadas na mesma época.
archyl why internal/billing/invoice.go
archyl why internal/billing/invoice.go:42
archyl why --json src/checkout/cart.ts | jq '.decisions[].title'
Em um terminal a resposta é formatada; em um pipe ou executado por um agente, imprime markdown compacto.
impact
archyl impact compara sua árvore de trabalho com uma branch base, situa cada arquivo alterado na arquitetura e percorre os relacionamentos para encontrar o que depende dele, junto com os responsáveis a avisar. Ele cobre mudanças com commit, em stage, fora de stage e não rastreadas, então você pode executá-lo antes mesmo de fazer commit.
| Flag | Padrão | Finalidade |
|---|---|---|
--base |
branch padrão de origin | Branch com a qual comparar |
--depth |
2 |
Quantos saltos de relacionamento seguir (de 1 a 6) |
--diagram |
— | Desenhar a parte afetada da arquitetura, com os elementos tocados destacados |
archyl impact --base origin/develop --depth 3
archyl impact --diagram
Cada arquivo conta apenas para a correspondência mais específica: um arquivo mapeado para um componente não arrasta junto o container inteiro.
status
archyl status resume o projeto em uma única tela: o alinhamento entre modelo e código, sua branch e os agentes trabalhando no projeto neste momento.
context
archyl context imprime a arquitetura do projeto em markdown ajustado para agentes de programação: sistemas, containers, componentes, relacionamentos, decisões e regras. Encadeie a saída com um pipe ou grave-a no arquivo que seu agente lê.
archyl context > ARCHITECTURE.md
archyl context -o .archyl/context.md
Agentes de programação
A CLI é a forma mais rápida de colocar um agente de programação sob o Archyl Harness.
setup
archyl setup
archyl setup configura Claude Code, Cursor, VS Code e Codex para usar o servidor MCP do Archyl com o perfil de ferramentas coding, instala o hook Guard e ensina a CLI aos agentes. Restrinja-o com --agent (repetível: claude-code, cursor, vscode, codex); dispense partes com --no-guard, --no-instructions ou --no-statusline.
archyl setup também oferece instalar o autocompletar do shell; --no-completion pula essa etapa.
| Agente | Arquivo gravado |
|---|---|
| Claude Code | .mcp.json; o hook Guard e a linha de status em .claude/settings.json; o bloco da CLI em CLAUDE.md |
| Cursor, VS Code, Codex | O bloco da CLI em AGENTS.md |
| Cursor | .cursor/mcp.json |
| VS Code | .vscode/mcp.json |
| Codex | ~/.codex/config.toml |
Arquivos existentes são mesclados, não sobrescritos.
Por padrão (--transport cli), cada agente inicia archyl mcp, que acessa o servidor MCP do Archyl com a própria sessão da CLI: faça login uma vez com archyl login e todos os agentes ficam conectados, sem fluxo OAuth por agente e sem chave em arquivo. Com --transport http, a configuração contém apenas a URL do servidor e cada agente faz login pelo próprio Archyl. Em ambos os casos, os arquivos do repositório não contêm nenhum segredo e podem receber commit com segurança.
mcp
archyl mcp serve as ferramentas MCP do Archyl a um agente via stdio, autenticado como você. archyl setup o configura; à mão, para qualquer cliente MCP:
{ "mcpServers": { "archyl": { "command": "archyl", "args": ["mcp"] } } }
Ele usa o perfil de ferramentas coding; --tools full expõe todas as ferramentas.
O bloco da CLI é uma seção curta entre os marcadores <!-- archyl:start --> e <!-- archyl:end --> que diz ao agente quais comandos archyl executar e quando: plan antes de uma mudança não trivial, brief antes de editar arquivos, check e radar check antes de terminar, remember e recall para o que o código não consegue mostrar. Executar setup de novo atualiza o bloco e deixa o resto do arquivo intacto. Uma linha de status já definida no Claude Code nunca é substituída.
plan
archyl plan "<task>" devolve um plano de implementação fundamentado na arquitetura: as etapas, o elemento que cada uma toca, as decisões e regras a respeitar e o que as sessões anteriores aprenderam.
archyl plan "Add partial refunds to the payments flow"
brief
archyl brief <files> diz a você, ou a um agente, o que saber antes de editar esses arquivos: os elementos aos quais pertencem, o que esses elementos usam e o que depende deles, as decisões que se aplicam a eles ou aos seus pais, os responsáveis e o que o Archyl lembra sobre eles. Sem caminhos, cobre todos os arquivos que a branch altera.
Assim como plan, recall e context, ele é renderizado em um terminal e imprime markdown compacto quando um agente o executa a partir do seu shell, para que o agente leia estrutura, e não códigos de escape.
remember e recall
archyl remember registra, no elemento a que se refere, um fato que o código não consegue mostrar; toda sessão de trabalho futura sobre esse elemento recebe esse fato no briefing. archyl recall encontra o que o Archyl lembra, por assunto, elemento ou 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 | Use para |
|---|---|
convention |
Como as coisas são feitas aqui |
pitfall |
O que pegou alguém de surpresa, para que não pegue o próximo |
note |
Qualquer outra coisa que valha a pena saber |
A memória é atribuída ao agente que a escreveu quando a CLI roda dentro do Claude Code, do Codex ou do Cursor; defina ARCHYL_AGENT para nomeá-lo você mesmo.
agents
archyl agents é uma visão ao vivo dos agentes em ação no projeto: qual agente, em qual tarefa, sobre quais elementos, com quais arquivos alterados. Elementos reservados por mais de um agente são sinalizados, para que dois agentes não colidam no mesmo código. Pressione a para incluir as sessões encerradas recentemente. Em um pipe ou com --json, ele imprime as sessões uma única vez.
statusline
archyl statusline é uma linha de status para o Claude Code: o projeto, a pontuação de alinhamento dele, os agentes em ação e se a sessão atual roda sob o harness. archyl setup a instala; à mão, em .claude/settings.json:
{ "statusLine": { "type": "command", "command": "archyl statusline" } }
runs
archyl runs lista as execuções gerenciadas de agentes do projeto, sinalizando as que aguardam você. archyl runs view acompanha uma ao vivo: as mensagens do agente, suas chamadas de ferramentas e os arquivos que ele altera no feed, seu plano com o progresso de cada etapa, e o tempo, os tokens e o custo ao lado. E você age sobre ela sem sair do terminal:
| Tecla | Quando | Ação |
|---|---|---|
Enter or 1–9 |
O agente faz uma pergunta | Responder, ou escolher uma das opções dele |
a / c |
O agente propõe um plano | Aprová-lo, ou solicitar alterações |
a |
A execução está retida aguardando aprovação | Deixá-la começar |
s |
A execução está em andamento | Orientar o agente com uma mensagem |
x |
A execução está em andamento | Cancelá-la (pede confirmação) |
n |
A execução terminou | Continuar o trabalho dela em uma nova execução, na mesma branch e no mesmo pull request |
o |
A execução abriu um pull request | Abri-lo |
As mesmas ações existem como comandos, para scripts e para agentes que supervisionam outros agentes. As execuções são identificadas pelos primeiros caracteres do ID, ou por 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
As execuções gerenciadas de agentes estão disponíveis nos planos que as incluem.
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 executa qualquer agente dentro de uma sessão de trabalho:
- Ele abre uma sessão para a tarefa. O Archyl seleciona os elementos, decisões e regras relevantes, reserva esses elementos para que dois agentes não colidam e devolve um briefing com o veredicto do gate.
- O Claude Code recebe o briefing como um system prompt adicional. Todo agente encontra
ARCHYL_SESSION_IDeARCHYL_BRIEFING_FILEno seu ambiente. - Enquanto o agente trabalha, a sessão é mantida viva com um heartbeat a cada 10 minutos, e o hook Guard atribui a ela cada arquivo editado.
- Quando o agente termina,
wrapinforma os arquivos alterados, encerra a sessão e oferece abrir um rascunho de solicitação de mudança de arquitetura, para que uma pessoa avalie como o modelo deve ser atualizado.
| Flag | Finalidade |
|---|---|
-t, --task |
O que o agente vai fazer (perguntado quando omitido) |
--agent |
Nome do agente registrado na sessão (padrão: o nome do comando) |
--exclusive |
Recusa iniciar quando outra sessão detém uma reserva sobre os mesmos elementos |
--change-request |
Abre o rascunho de solicitação de mudança sem perguntar |
--no-change-request |
Nunca pergunta se deve abrir uma solicitação de mudança |
Se o Archyl estiver inacessível, wrap emite um aviso e executa o agente mesmo assim.
fix
archyl fix
archyl fix --severity high --agent codex
archyl fix --print | pbcopy
archyl fix -- claude --model opus
archyl fix coloca um agente de programação para trabalhar nas violações de regras da sua branch, sob o harness:
- Executa a verificação de conformidade na branch, como
archyl check, e deixa você escolher as violações a corrigir. - Abre uma sessão de trabalho e passa ao agente cada violação com sua regra, severidade, localização e sugestão, junto com o brief dos elementos a que os arquivos pertencem e as decisões que se aplicam.
- Quando o agente termina, executa a verificação de novo e mostra o que sobrou, por exemplo "3 violations → 0".
Nada é commitado: revise as mudanças com git diff. O agente é o primeiro instalado entre Claude Code e Codex, ou o indicado por --agent. Depois de --, qualquer comando roda no lugar dele; ele lê a tarefa do arquivo indicado em ARCHYL_FIX_TASK_FILE.
| Flag | Finalidade |
|---|---|
--agent |
claude, codex ou gemini (padrão: o primeiro instalado) |
--severity |
Severidade mínima a corrigir: critical, high, medium ou low (padrão low) |
--base |
Ref para comparação (padrão: o destino da pull request, ou a branch padrão de origin) |
-y, --yes |
Corrigir todas as violações sem perguntar |
--print |
Imprimir o prompt da tarefa em vez de executar um agente, para entregá-lo a qualquer outro agente |
--change-request |
Abrir um rascunho de Architecture Change Request quando a sessão fechar |
lsp
archyl lsp é um language server via stdio para qualquer editor com cliente LSP. Ele roda ao lado do servidor próprio da linguagem:
| Recurso | O que você ganha |
|---|---|
| Diagnósticos | As regras de conformidade, executadas em um arquivo quando você o abre ou salva. Achados críticos e altos são erros, médios são avisos, baixos são informação |
| Hover | O elemento do arquivo: seu lugar no modelo C4, responsáveis, quantos elementos dependem dele, as decisões que se aplicam |
| Code actions | Ask Archyl why pergunta ao assistente por que uma regra existe, ou por que o arquivo é construído assim; Open in Archyl abre o elemento no navegador |
Ele usa a sessão da CLI (archyl login ou ARCHYL_API_KEY) e o .archyl.json do repositório. Quando o Archyl está inacessível, ele grava um único aviso no log LSP do editor e não mostra diagnósticos. Os diagnósticos acompanham os salvamentos, não a digitação.
Neovim 0.11 e posteriores:
vim.lsp.config("archyl", {
cmd = { "archyl", "lsp" },
root_markers = { ".archyl.json", ".git" },
filetypes = { "go", "typescript", "python", "java", "rust" },
})
vim.lsp.enable("archyl")
Helix, em languages.toml:
[language-server.archyl]
command = "archyl"
args = ["lsp"]
[[language]]
name = "go"
language-servers = ["gopls", "archyl"]
O VS Code usa a extensão Generic LSP Client, e o Zed uma pequena extensão de desenvolvimento. A configuração de cada editor está em docs/lsp.md.
guard
archyl guard é o hook PreToolUse do Claude Code que archyl setup instala. Ele lê o payload do hook na stdin, executa as regras de conformidade do projeto sobre o arquivo tal como ele ficaria após a edição e responde com uma decisão: violações críticas bloqueiam a edição, as altas geram um aviso. Defina ARCHYL_GUARD_BLOCK como high para bloquear também as violações altas, ou off para apenas avisar.
Quando o agente edita um manifesto de dependências (go.mod, package.json, pom.xml…), o Guard também o confere com o radar de tecnologias e bloqueia uma dependência que o radar coloca Em espera, com a alternativa que a nota dela sugere. Dependências Em espera que já estavam lá não bloqueiam a edição.
O Guard sempre falha de forma aberta: sem credencial, sem rede ou diante de uma ferramenta desconhecida, a edição passa, então ele nunca pode quebrar seu fluxo de trabalho.
session
archyl session dá acesso de baixo nível ao protocolo de sessões de trabalho, para scripts ou agentes que o conduzem por conta própria. Na maior parte do tempo, archyl wrap faz tudo isso por você.
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 recebe o ID da sessão como argumento ou a partir de ARCHYL_SESSION_ID. Coloque em --decision apenas escolhas dignas de um ADR: cada uma se torna uma memória reapresentada às sessões futuras sobre os mesmos elementos. Tudo o que é circunstancial vai em --follow-up.
Verificações e CI
Os mesmos comandos rodam no seu notebook, em um hook do git e em qualquer CI. Na CI, eles obtêm do ambiente a branch base, o commit e o formato do relatório: GitHub Actions, GitLab CI, Bitbucket Pipelines e Azure Pipelines são reconhecidos.
check
archyl check executa as regras de conformidade do projeto em cada arquivo que difere da branch base e sai com código 1 quando uma violação atinge --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 | Padrão | Finalidade |
|---|---|---|
--base |
o destino do pull request; caso contrário, a branch padrão de origin | Ref com a qual comparar |
--fail-on |
high |
Menor severidade que causa falha: critical, high, medium, low ou never |
--format |
auto |
pretty, json, github, gitlab ou sarif |
-o, --output |
stdout | Arquivo para o relatório gitlab ou sarif |
--fail-open |
desativado | Sai com 0 quando a verificação não pode ser executada (offline, sem login); só as violações causam falha |
Com --format auto, a saída acompanha a CI:
| Onde | O que você recebe |
|---|---|
| GitHub Actions | Anotações inline no pull request, mais uma tabela no resumo do job |
| GitLab CI | Um relatório de Code Quality em gl-code-quality-report.json, exibido no merge request |
| Em qualquer outro lugar | A visualização de terminal acima |
--format sarif grava um log SARIF 2.1.0 para o code scanning do GitHub, o Azure DevOps ou qualquer painel de segurança.
Checkouts de CI costumam ser rasos (shallow). Busque o histórico para que a branch base exista; caso contrário, check para e avisa você.
# 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 é a verificação a rodar antes de abrir um pull request. Ela reúne as violações de regras que sua branch introduz, os elementos que ela toca junto com o que depende deles, quem avisar e a pontuação de alinhamento atual. Sai com código 1 quando uma violação atinge --fail-on (padrão high).
Com --comment, a revisão é publicada no pull request ou merge request e editada no lugar a cada push seguinte, para que a solicitação mantenha um único comentário do Archyl: o veredicto, as violações com arquivo e linha, os elementos tocados junto com o que depende deles e os responsáveis a envolver. O GitHub precisa de GITHUB_TOKEN com pull-requests: write; o GitLab precisa de GITLAB_TOKEN com o escopo api, já que CI_JOB_TOKEN não pode comentar.
O comentário inclui o impacto como um flowchart Mermaid, que o GitHub e o GitLab renderizam. archyl review --diagram imprime o mesmo flowchart localmente, para colar em uma descrição ou documento.
A forma mais rápida de configurar no GitHub é a action do Archyl, que instala a CLI e executa um 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
Deixe command vazio para apenas instalar a CLI e chamá-la nas etapas seguintes.
hooks
archyl hooks install # blocks critical violations on git push
archyl hooks install --fail-on high
archyl hooks uninstall
archyl hooks install adiciona um hook pre-push do git que executa archyl check --fail-open. Um push que traz uma violação no nível de --fail-on ou acima (padrão critical) é recusado; sem archyl no PATH, offline ou sem login, o push passa. Para pulá-lo uma vez, use git push --no-verify. O hook respeita core.hooksPath, e um hook pre-push que o archyl não escreveu nunca é substituído, a menos que você passe --force.
drift
archyl drift mostra o quanto o modelo documentado corresponde ao código: 100 significa que todo elemento documentado foi encontrado no código. --compute reanalisa primeiro o repositório conectado e aguarda o resultado; --fail-under o transforma em um quality gate.
archyl drift --compute --fail-under 80
dsl
archyl dsl mantém em sincronia um arquivo de arquitetura como código e o modelo do projeto. Todo subcomando trabalha com archyl.yaml na raiz do repositório, a menos que você passe --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 o modelo (elementos, relacionamentos, tecnologias, decisões, documentação, contratos, ambientes e releases). Pergunta antes de sobrescrever o arquivo, a menos que você passe--yes;--file -o imprime em vez disso.diffé uma simulação (dry run) no servidor, sem gravar nada: os elementos e relacionamentos que um push adicionaria (+) ou alteraria (~), agrupados por nível C4, e os que só o Archyl tem (−).--exit-codesai com código 1 quando há qualquer diferença.pushcria os novos elementos e relacionamentos e atualiza os existentes, correspondidos pelo nome. Nunca exclui nada: o que só o Archyl tem permanece. Em um terminal, mostra o diff e pergunta antes;--yespula a pergunta.
$ 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] é o mesmo que archyl dsl push.
release
archyl release registra uma release, para correlacionar mudanças de arquitetura com o que foi entregue e alimentar as métricas DORA. A versão padrão é a tag sendo construída na CI e, depois, a tag em HEAD; o link padrão é a execução da CI.
archyl release v2.4.0 --environment production
| Flag | Finalidade |
|---|---|
--environment |
Ambiente em que foi entregue |
--status |
Status da release (padrão deployed) |
--changelog |
Notas da release |
--system, --container |
Elemento ao qual a release pertence |
--url |
Link para a release ou o pipeline |
radar
archyl radar mostra as tecnologias da organização por anel de governança (Adotar, Experimentar, Avaliar, Em espera), com quanto da arquitetura usa cada uma. archyl radar check lê os manifestos de dependências do repositório, associa cada dependência ao radar e sai com código 1 quando alguma está Em espera, com a mesma saída 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 | Padrão | Finalidade |
|---|---|---|
--fail-on |
hold |
Anel que causa falha: hold, assess ou never |
--changed |
desativado | Apenas os manifestos alterados em relação à base |
--format |
auto |
pretty, json, github, gitlab ou sarif |
cr
archyl cr lista as solicitações de mudança de arquitetura do projeto — muitas vezes abertas por agentes no fim de uma sessão de trabalho — e permite revisá-las sem sair do 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
Contas e perfis
| Comando | O que faz |
|---|---|
archyl login |
Login pelo navegador. --host aponta para outra instância do Archyl, --with-token lê uma chave de API da stdin |
archyl logout |
Esquece a credencial armazenada |
archyl cache clear |
Exclui os modelos em cache do perfil ativo; --all limpa os de todos os perfis |
archyl whoami |
Quem você é, em qual host, organização e projeto |
archyl profile |
Lista os perfis; archyl profile use <name> alterna entre eles |
archyl inbox |
Suas notificações: menções, revisões, execuções de agentes, tarefas. Em um terminal, escolha uma para agir sobre ela: revisar uma solicitação de mudança, responder a um agente ou abri-la no aplicativo web. --watch fica aberto com notificações na área de trabalho; --read marca tudo como lido |
Um perfil é um host e uma organização do Archyl com credencial própria. Crie um fazendo login com um nome, que é também a forma de se conectar a um Archyl auto-hospedado:
archyl login --host https://archyl.example.com --profile work
archyl profile use work
Prompt do shell
archyl prompt imprime em poucos caracteres a pontuação de alinhamento do projeto e os agentes ativos, para o prompt do seu shell. Ele nunca espera pela rede: imprime o último estado conhecido e o atualiza em segundo plano a cada dez minutos. Com o Starship:
[custom.archyl]
command = "archyl prompt"
when = "test -f .archyl.json"
format = "[$output]($style) "
style = "purple"
Cache do modelo
map, show, open, o autocompletar de elementos e as sugestões # da sessão respondem a partir de uma cópia local do modelo, por isso iniciam instantaneamente. Há uma cópia por perfil, host, organização, identidade e projeto, no seu diretório de cache de usuário, legível só por você. Uma cópia com menos de 30 segundos é usada sem chamar a API; uma mais antiga é atualizada, e quando a API leva mais de 1,5 segundo o comando responde a partir da cópia e avisa na stderr. Comandos que alteram o modelo, como dsl push ou aprovar descobertas, descartam a cópia.
Ignore o cache em um único comando com --no-cache, ou em todos com ARCHYL_NO_CACHE=1. archyl login e archyl logout limpam as cópias do perfil; archyl cache clear faz isso manualmente.
Atualizações
Quando sai uma versão mais nova, a CLI avisa assim que um comando termina. A verificação roda em segundo plano no máximo uma vez por dia, nunca em CI nem em scripts; defina ARCHYL_NO_UPDATE_NOTIFIER para desativá-la.
archyl upgrade atualiza a CLI do jeito que você a instalou: brew upgrade para Homebrew, o comando go install para um build a partir do código-fonte e, nos demais casos, no próprio lugar: baixa o arquivo da versão para a sua plataforma, confere com o checksums.txt da versão (e a assinatura cosign quando o cosign está no seu PATH) e o coloca no lugar do binário em execução. --check apenas informa se saiu uma versão mais nova.
archyl upgrade
archyl upgrade --check
Flags globais
| Flag | Finalidade |
|---|---|
--json |
Saída legível por máquina. Todo comando que imprime um resultado a suporta |
-p, --project |
ID do projeto, sobrepondo .archyl.json |
--profile |
Perfil a usar |
--no-cache |
Busca o modelo na API em vez do cache local |
Mensagens de status e spinners vão para a stderr, os resultados para a stdout, então os pipes só veem o resultado:
archyl where --json . | jq '.files[].elements[0].name'
archyl impact --json | jq '.impact.notify'
CI e scripts
Nenhum login necessário: crie uma chave de API em Profile → API Keys e defina-a no ambiente.
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 uma chave de API como credencial, passe-a por pipe para archyl login --with-token.
| Variável | Finalidade |
|---|---|
ARCHYL_API_KEY |
Chave de API; ignora as credenciais armazenadas |
ARCHYL_HOST |
URL da API para um Archyl auto-hospedado (padrão https://api.archyl.com); ARCHYL_API_URL também é lida |
ARCHYL_PROJECT_ID |
Projeto, sobrepondo .archyl.json |
ARCHYL_ORG_ID |
Organização |
ARCHYL_PROFILE |
Perfil a usar, como --profile |
ARCHYL_GUARD_BLOCK |
critical (padrão), high ou off |
ARCHYL_SESSION_ID |
Sessão de trabalho à qual o Guard e session finish se vinculam (definida por wrap) |
ARCHYL_FIX_TASK_FILE |
Arquivo com a tarefa, para um comando executado com archyl fix -- <command> (definido por fix) |
ARCHYL_CONFIG_DIR |
Diretório de configuração |
ARCHYL_NO_KEYRING |
Armazena as credenciais em um arquivo legível só por você (modo 0600) em vez do chaveiro do sistema operacional |
ARCHYL_AGENT |
Nome registrado nas memórias e nas sessões, quando a CLI não consegue identificar qual agente a executa |
GITHUB_TOKEN, GITLAB_TOKEN |
Token com o qual review --comment publica |
ARCHYL_APP_URL |
URL do aplicativo web, quando não é o host da API com api. substituído por app. |
ARCHYL_THEME |
dark ou light, para não perguntar ao terminal qual é a cor de fundo |
ARCHYL_IMAGES |
0 para desenhar os diagramas em texto, mesmo em um terminal que exibe imagens |
ARCHYL_CACHE_DIR |
Diretório de cache (cache do modelo, estado do prompt, verificação de atualizações) |
ARCHYL_NO_CACHE |
1 para nunca usar o cache local do modelo, como --no-cache |
ARCHYL_NO_UPDATE_NOTIFIER |
Nunca avisar sobre novas versões |
NO_COLOR |
Saída sem cores |
Autocompletar do shell
archyl completion install grava o script de autocompletar onde o seu shell o carrega: um diretório do fpath do zsh que pertença a você (ou ~/.zfunc), ~/.config/fish/completions ou ~/.local/share/bash-completion/completions. Execute de novo para atualizar o script. Ele só altera o arquivo de inicialização do shell quando é necessário (zsh sem um diretório fpath seu, PowerShell) e você concorda. archyl setup também oferece isso.
archyl completion install
archyl completion install --shell fish
Para gravar o script você mesmo:
archyl completion zsh > "${fpath[1]}/_archyl"
archyl completion bash > /etc/bash_completion.d/archyl
archyl completion fish > ~/.config/fish/completions/archyl.fish