Archyl CLI
archyl relie un dépôt à son architecture dans Archyl. Depuis votre terminal, vous pouvez trouver où se situe un fichier dans le modèle C4, voir ce que votre branche impacte et qui prévenir, briefer les agents de développement avant qu'ils ne touchent au code, et contrôler ce qu'ils écrivent.
$ 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 est open source sous licence MIT : github.com/archyl-com/cli.
Installation
# 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
Vous pouvez aussi télécharger un binaire depuis la page des releases. Les archives sont accompagnées de sommes de contrôle, signées avec cosign et livrées avec un SBOM.
Vérifiez l'installation avec archyl --version.
Premiers pas
À la racine de votre dépôt :
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 ouvre votre navigateur et vous connecte avec OAuth 2.1 et PKCE. La session est stockée dans le trousseau du système et se renouvelle d'elle-même ; vous ne vous reconnectez qu'après un mois sans utilisation.
archyl init écrit .archyl.json à la racine du dépôt pour que chaque commande archyl, ainsi que le hook Guard, sache à quel projet appartient ce code. Quand le remote du dépôt est connecté à un projet dans Archyl, ce projet est choisi pour vous ; sinon, vous le sélectionnez dans une liste. Committez le fichier : il ne contient aucun secret, et votre équipe comme votre CI partagent alors le même lien.
{
"projectId": "3f2a9c4e-…",
"projectName": "Checkout",
"organizationId": "8b1d…",
"apiUrl": "https://api.archyl.com"
}
Lancez archyl init --force pour relier un dépôt à un autre projet.
Pas encore de projet ? archyl init --new en crée un sans quitter le terminal :
- Il crée le projet, nommé d'après le dépôt (ou
--name), dans l'équipe de votre choix (--team, par nom, slug ou ID). - Il connecte le dépôt à partir de son remote git. Pour un remote auto-hébergé, indiquez le fournisseur avec
--provider:github_enterprise,gitlab_privateougitea. - Il lance une découverte IA sur
--branch(par défaut : la branche par défaut du remote) et en affiche la progression en direct. - Il ouvre la revue de ce que la découverte a trouvé, puis dessine le résultat sous forme de diagramme.
- Il propose de connecter vos agents de développement.
archyl init seul propose la même chose quand aucun projet ne correspond au remote du dépôt. --no-discover se contente de créer et de lier le projet, --no-setup saute la dernière étape, et --yes prend toutes les valeurs par défaut sans rien demander, y compris l'approbation de ce que la découverte trouve.
archyl init --new
archyl init --new --name "Checkout" --team platform
archyl init --new --yes --json
La session
Lancez archyl seul pour ouvrir une session : une invite où vous posez vos questions sur l'architecture en langage naturel ou tapez des commandes, les réponses s'affichant dans votre terminal comme n'importe quelle autre sortie.
$ 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
- Le langage naturel va à l'assistant. Il répond à partir de l'architecture et, quand la réponse dépend de votre code ou de ce qui se passe en ce moment, il lance ici la commande correspondante —
impact,check,brief,show,runs… — et affiche chacune (⏺) avant d'utiliser sa sortie. Les commandes en lecture seule s'exécutent en parallèle ; celles qui modifient quelque chose, comme approuver le plan d'une exécution ou enregistrer une mémoire, vous demandent d'abord votre accord (y/n). - Les commandes
/s'exécutent directement :/impact,/review,/brief <files>,/show <element>,/runs,/activity… Les vues plein écran (/map,/search,/run,/agents) prennent tout l'écran et vous le rendent quand vous les quittez./helpliste tout. @filejoint le contenu du fichier à la question, avec son brief d'architecture : jusqu'à 400 lignes ou 24 Ko par fichier ; les fichiers binaires et les chemins hors du dépôt sont ignorés.#elementoriente la question vers un élément. Les deux se complètent pendant la saisie.Enterenvoie ;Shift+Enter(ouAlt+Enter,Ctrl+J) passe à la ligne, et le texte collé conserve ses retours à la ligne.↑↓parcourent votre historique,Tabcomplète,Escinterrompt une réponse,Ctrl-Dquitte.
Les conversations sont conservées par dépôt : archyl -c (--continue) rouvre la dernière, /resume en choisit une plus ancienne dans une liste, et /new en démarre une nouvelle.
La première fois, la session vous indique ce qui manque : la connexion (/login), la liaison du dépôt (/init). L'assistant est disponible avec les offres qui incluent le chat IA ; les commandes / fonctionnent avec toutes les offres. Avec les modèles OpenAI et Anthropic, il appelle les commandes comme des outils natifs ; avec les autres fournisseurs, il passe par un protocole textuel, sans aucune différence pour vous.
doctor
archyl doctor vérifie tout ce dont la CLI dépend et explique comment corriger ce qui ne va pas : votre version, le profil, la connexion, la latence de l'API, le dépôt, le lien avec le projet, les agents connectés, le hook Guard et le hook pre-push. Il sort avec le code 1 quand quelque chose doit être corrigé.
Explorer l'architecture
activity
archyl activity rassemble dans un seul fil tout ce qui se passe sur le projet : éléments créés et modifiés (avec les champs modifiés), demandes de changement ouvertes et fusionnées, exécutions d'agents mises en file, en attente de quelqu'un et terminées, sessions de travail ouvertes et fermées. --follow le garde ouvert et affiche les événements à mesure qu'ils se produisent, comme tail -f ; ajoutez --notify pour recevoir une notification de bureau quand un agent vous attend.
archyl activity --follow --notify
archyl activity --element "Payments"
map
archyl map ouvre un explorateur plein écran du modèle C4 : systèmes, conteneurs, composants et code dans une arborescence, avec pour chaque élément sa description, ses technologies, ses relations dans les deux sens et son rayon d'impact. Nommez un élément pour l'ouvrir directement dessus : archyl map "Payments".
| Touche | Action |
|---|---|
↑ ↓ or j k |
Se déplacer |
→ or Enter |
Ouvrir un élément |
← |
Le refermer, ou remonter à son parent |
/ |
Filtrer par nom (recherche approximative) |
u / b |
Aller à ce qu'il utilise / à ce qui l'utilise |
o |
L'ouvrir dans l'application web |
y |
Copier son ID |
E / C |
Tout développer / tout replier |
d |
Afficher le niveau sous forme de diagramme |
q |
Quitter |
d affiche le niveau courant sous forme de diagramme. Tab et Shift+Tab sélectionnent un élément, les flèches ou h j k l font défiler, Enter descend dans la sélection, Backspace ou u remonte, o l'ouvre dans l'application web, y copie son ID, et d ou Esc revient à l'arborescence.
diagram
archyl diagram dessine une vue C4 du modèle : le contexte système par défaut, les conteneurs d'un système quand vous nommez un système, les composants d'un conteneur quand vous nommez un conteneur. Les éléments hors de la vue apparaissent en pointillés, pour leurs relations avec elle.
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'
Dans Kitty, Ghostty, WezTerm et iTerm2, le diagramme est une image affichée dans le terminal. Dans les autres terminaux, et quand la sortie passe dans un pipe, il est dessiné avec des caractères de tracé de boîtes :
┌─────────────────┐ ┌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┐ ┌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┐
│ ▣ 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
▼ ▼
| Option | Rôle |
|---|---|
--format |
text, image (dans le terminal), png, svg ou mermaid. Par défaut : image dans un terminal qui affiche les images, text ailleurs |
-o, --output |
Écrire dans un fichier ; l'extension choisit le format (.png, .svg, .mmd, .md, .txt) |
--json |
Les nœuds et les liens positionnés, pour les scripts |
Dans tmux, les images demandent set -g allow-passthrough on et un terminal qui comprend le protocole d'images d'iTerm2. Définissez ARCHYL_IMAGES=0 pour toujours dessiner en texte.
search
archyl search cherche dans tout ce que vous pouvez voir dans Archyl : éléments, décisions, documentation, contrats d'API, canaux d'événements, flux et projets. Les résultats se mettent à jour pendant la saisie, avec un aperçu ; Entrée affiche l'élément choisi, ctrl+o l'ouvre dans l'application web. Dans un pipe ou avec --json, archyl search invoice affiche les résultats.
show
archyl show <element> affiche un élément avec son chemin, sa description, ses technologies, ses relations, les décisions liées et son rayon d'impact. archyl show ADR-12 affiche un enregistrement de décision. Les éléments sont trouvés par nom (exact, puis partiel) ou par ID.
open
archyl open ouvre le projet dans l'application web ; archyl open "Payments" sélectionne un élément sur le diagramme, archyl open ADR-12 déplie une décision. L'adresse de l'application web est l'hôte de l'API où api. est remplacé par app. ; si elle se trouve ailleurs, connectez-vous avec --app-url ou définissez ARCHYL_APP_URL.
ask
archyl ask "<question>" interroge l'assistant IA sur l'architecture du projet. La réponse est rendue en markdown au fil de sa rédaction. Tout ce que vous envoyez via un pipe est ajouté à la question :
archyl ask "Which services write to the orders database?"
git diff main | archyl ask "Does this break any of our decisions?"
L'assistant est disponible avec les offres qui incluent le chat IA.
adr
archyl adr liste les décisions du projet. archyl adr new en enregistre une : dans un terminal, un formulaire demande le titre, le statut, le contexte, la décision et les conséquences ; dans les scripts, passez-les en options.
archyl adr new "Use slog for structured logging" --status accepted \
--context "Three logging libraries are in use" --decision "slog everywhere"
discover
archyl discover lance une découverte IA sur les dépôts liés au projet et la suit, avec sa progression sur stderr. Ce qu'elle trouve n'entre pas tout de suite dans le modèle : cela attend une revue, qui s'ouvre d'elle-même quand la découverte se termine dans un terminal. Chaque dépôt lié compte pour une découverte IA dans le quota de votre offre.
archyl discover
archyl discover --repo acme/payments --branch develop
archyl discover --no-wait --json
| Option | Rôle |
|---|---|
--repo |
Dépôt à découvrir, au format owner/name (par défaut : tous les dépôts liés) |
--branch |
Branche à lire (par défaut : la branche par défaut du dépôt) |
--wait / --no-wait |
Suivre la découverte jusqu'à la fin (par défaut), ou la lancer et renvoyer son job |
--no-review |
Ne pas ouvrir la revue à la fin de la découverte |
archyl discover review liste les éléments proposés par les découvertes, regroupés par niveau C4, avec le détail de l'élément sélectionné sur le côté :
| Touche | Action |
|---|---|
↑ ↓ or j k |
Se déplacer |
Space |
Sélectionner |
a / r |
Approuver / rejeter la sélection, ou l'élément courant |
A |
Tout approuver dans la liste |
/ |
Filtrer (recherche approximative) |
q |
Quitter |
Hors d'un terminal, la commande affiche la liste ; --approve-all ou --reject-all règle tout d'un coup, et --json l'affiche pour les scripts.
Commandes d'architecture
where
archyl where <path>… situe des fichiers dans le modèle C4 : l'élément auquel chacun appartient, qui en est propriétaire et ce qui en dépend. Les répertoires sont développés en fichiers connus de git.
archyl where internal/billing/invoice.go
archyl where src/checkout/
why
archyl why <file[:line]>, c'est git blame pour l'architecture. Pour un fichier, il montre les éléments auxquels il appartient, les décisions qui s'appliquent (les acceptées d'abord), qui en est responsable, ce que les agents et les personnes en ont retenu, les derniers changements du modèle sur ces éléments et les règles de conformité qui le visent. Avec un numéro de ligne, il retrouve aussi le commit qui a modifié la ligne en dernier et le relie aux décisions prises à la même période.
archyl why internal/billing/invoice.go
archyl why internal/billing/invoice.go:42
archyl why --json src/checkout/cart.ts | jq '.decisions[].title'
Dans un terminal, la réponse est mise en forme ; dans un pipe ou lancée par un agent, elle s'affiche en markdown compact.
impact
archyl impact compare votre copie de travail à une branche de base, situe chaque fichier modifié dans l'architecture et parcourt les relations pour trouver ce qui en dépend, avec les propriétaires à prévenir. La commande couvre les modifications commitées, indexées, non indexées et non suivies : vous pouvez donc la lancer avant même de committer.
| Option | Par défaut | Rôle |
|---|---|---|
--base |
branche par défaut d'origin | Branche de comparaison |
--depth |
2 |
Nombre de sauts de relations à suivre (1 à 6) |
--diagram |
— | Dessiner la partie de l'architecture concernée, éléments touchés mis en évidence |
archyl impact --base origin/develop --depth 3
archyl impact --diagram
Chaque fichier n'est compté que pour sa correspondance la plus précise : un fichier rattaché à un composant n'entraîne pas en plus tout son conteneur.
status
archyl status fait tenir le projet sur un seul écran : l'alignement entre le modèle et le code, votre branche et les agents qui travaillent sur le projet en ce moment.
context
archyl context affiche l'architecture du projet en markdown adapté aux agents de développement : systèmes, conteneurs, composants, relations, décisions et règles. Redirigez la sortie vers un pipe, ou écrivez-la dans le fichier que lit votre agent.
archyl context > ARCHITECTURE.md
archyl context -o .archyl/context.md
Agents de développement
La CLI est le moyen le plus rapide de placer un agent de développement sous l'Archyl Harness.
setup
archyl setup
archyl setup configure Claude Code, Cursor, VS Code et Codex pour utiliser le serveur MCP d'Archyl avec le profil d'outils coding, installe le hook Guard et apprend la CLI aux agents. Restreignez-la avec --agent (répétable : claude-code, cursor, vscode, codex) ; ignorez certaines parties avec --no-guard, --no-instructions ou --no-statusline.
archyl setup propose aussi d'installer la complétion du shell ; --no-completion s'en passe.
| Agent | Fichier écrit |
|---|---|
| Claude Code | .mcp.json ; le hook Guard et la ligne de statut dans .claude/settings.json ; le bloc CLI dans CLAUDE.md |
| Cursor, VS Code, Codex | Le bloc CLI dans AGENTS.md |
| Cursor | .cursor/mcp.json |
| VS Code | .vscode/mcp.json |
| Codex | ~/.codex/config.toml |
Les fichiers existants sont fusionnés, pas écrasés.
Par défaut (--transport cli), chaque agent lance archyl mcp, qui joint le serveur MCP d'Archyl avec la propre session de la CLI : connectez-vous une fois avec archyl login et tous les agents sont connectés, sans flux OAuth par agent ni clé dans un fichier. Avec --transport http, la configuration ne contient que l'URL du serveur et chaque agent se connecte via Archyl lui-même. Dans les deux cas, les fichiers du dépôt ne contiennent aucun secret et peuvent être committés sans risque.
mcp
archyl mcp sert les outils MCP d'Archyl à un agent via stdio, authentifié en votre nom. archyl setup le configure ; à la main, pour n'importe quel client MCP :
{ "mcpServers": { "archyl": { "command": "archyl", "args": ["mcp"] } } }
Il utilise le profil d'outils coding ; --tools full expose tous les outils.
Le bloc CLI est une courte section entre les marqueurs <!-- archyl:start --> et <!-- archyl:end --> qui indique à l'agent quelles commandes archyl lancer et quand : plan avant une modification non triviale, brief avant de modifier des fichiers, check et radar check avant de terminer, remember et recall pour ce que le code ne peut pas montrer. Relancer setup actualise le bloc et laisse le reste du fichier intact. Une ligne de statut déjà définie dans Claude Code n'est jamais remplacée.
plan
archyl plan "<task>" renvoie un plan d'implémentation ancré dans l'architecture : les étapes, l'élément que chacune touche, les décisions et règles à respecter, et ce que les sessions précédentes ont appris.
archyl plan "Add partial refunds to the payments flow"
brief
archyl brief <files> vous indique, à vous ou à un agent, ce qu'il faut savoir avant de modifier ces fichiers : les éléments auxquels ils appartiennent, ce que ces éléments utilisent et ce qui en dépend, les décisions qui s'appliquent à eux ou à leurs parents, leurs propriétaires, et ce dont Archyl se souvient à leur sujet. Sans chemin, la commande couvre tous les fichiers que modifie la branche.
Comme plan, recall et context, elle s'affiche de façon riche dans un terminal et produit un markdown compact quand un agent la lance depuis son shell, pour que l'agent lise une structure et non des codes d'échappement.
remember et recall
archyl remember enregistre un fait que le code ne peut pas montrer sur l'élément qu'il concerne ; chaque future session de travail sur cet élément en est informée dans son briefing. archyl recall retrouve ce dont Archyl se souvient, par sujet, élément ou type.
archyl remember "Refund amounts are in minor units; never use floats" \
--element "Payments" --kind pitfall
archyl recall refunds
archyl recall --element "Payments" --kind convention
| Type | À utiliser pour |
|---|---|
convention |
La façon dont les choses se font ici |
pitfall |
Ce qui a piégé quelqu'un, pour que cela ne piège pas le suivant |
note |
Tout le reste qui mérite d'être su |
La mémoire est attribuée à l'agent qui l'a écrite quand la CLI s'exécute dans Claude Code, Codex ou Cursor ; définissez ARCHYL_AGENT pour le nommer vous-même.
agents
archyl agents est une vue en direct des agents au travail sur le projet : quel agent, sur quelle tâche, sur quels éléments, avec quels fichiers modifiés. Les éléments réservés par plus d'un agent sont signalés, pour que deux agents n'entrent pas en collision sur le même code. Appuyez sur a pour inclure les sessions récemment terminées. Dans un pipe ou avec --json, la commande affiche les sessions une seule fois.
statusline
archyl statusline est une ligne de statut pour Claude Code : le projet, son score d'alignement, les agents au travail et si la session en cours s'exécute sous le harness. archyl setup l'installe ; à la main, dans .claude/settings.json :
{ "statusLine": { "type": "command", "command": "archyl statusline" } }
runs
archyl runs liste les exécutions d'agents gérées du projet, en signalant celles qui vous attendent. archyl runs view en suit une en direct : les messages de l'agent, ses appels d'outils et les fichiers qu'il modifie dans le fil, son plan avec l'avancement de chaque étape, la durée, les tokens et le coût sur le côté. Et vous agissez dessus sans quitter le terminal :
| Touche | Quand | Action |
|---|---|---|
Enter or 1–9 |
L'agent pose une question | Y répondre, ou choisir l'une de ses options |
a / c |
L'agent propose un plan | L'approuver, ou demander des modifications |
a |
L'exécution est retenue en attente d'approbation | La laisser démarrer |
s |
L'exécution est en cours | Orienter l'agent avec un message |
x |
L'exécution est en cours | L'annuler (avec confirmation) |
n |
L'exécution est terminée | Poursuivre son travail dans une nouvelle exécution, sur la même branche et la même pull request |
o |
L'exécution a ouvert une pull request | L'ouvrir |
Les mêmes actions existent sous forme de commandes, pour les scripts et pour les agents qui en supervisent d'autres. Les exécutions se désignent par les premiers caractères de leur ID, ou par 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
Les exécutions d'agents gérées sont disponibles avec les offres qui les incluent.
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 exécute n'importe quel agent dans une session de travail :
- La commande ouvre une session pour la tâche. Archyl choisit les éléments, décisions et règles pertinents, pose des réservations (leases) sur les éléments pour que deux agents n'entrent pas en collision, et renvoie un briefing avec le verdict du gate.
- Claude Code reçoit le briefing sous forme de prompt système ajouté. Chaque agent trouve
ARCHYL_SESSION_IDetARCHYL_BRIEFING_FILEdans son environnement. - Pendant que l'agent travaille, la session est maintenue active par un heartbeat toutes les 10 minutes, et le hook Guard lui attribue chaque fichier modifié.
- Quand l'agent se termine,
wrapindique les fichiers modifiés, ferme la session et propose d'ouvrir une demande de changement d'architecture en brouillon, pour qu'un humain examine comment le modèle doit se mettre à jour.
| Option | Rôle |
|---|---|
-t, --task |
Ce que l'agent s'apprête à faire (demandé s'il est omis) |
--agent |
Nom de l'agent enregistré sur la session (par défaut : le nom de la commande) |
--exclusive |
Refuse de démarrer quand une autre session détient une réservation sur les mêmes éléments |
--change-request |
Ouvre la demande de changement en brouillon sans demander |
--no-change-request |
Ne propose jamais d'ouvrir une demande de changement |
Si Archyl est injoignable, wrap affiche un avertissement et lance quand même l'agent.
fix
archyl fix
archyl fix --severity high --agent codex
archyl fix --print | pbcopy
archyl fix -- claude --model opus
archyl fix met un agent de développement au travail sur les violations de règles de votre branche, sous le harness :
- Il exécute le contrôle de conformité sur la branche, comme
archyl check, et vous laisse choisir les violations à corriger. - Il ouvre une session de travail et transmet à l'agent chaque violation avec sa règle, sa sévérité, son emplacement et sa suggestion, ainsi que le brief des éléments auxquels appartiennent les fichiers et les décisions qui s'appliquent.
- Quand l'agent se termine, il relance le contrôle et montre ce qui reste, par exemple « 3 violations → 0 ».
Rien n'est commité : relisez les modifications avec git diff. L'agent est le premier installé parmi Claude Code et Codex, ou celui que nomme --agent. Après --, n'importe quelle commande s'exécute à la place ; elle lit la tâche dans le fichier indiqué par ARCHYL_FIX_TASK_FILE.
| Option | Rôle |
|---|---|
--agent |
claude, codex ou gemini (par défaut : le premier installé) |
--severity |
Sévérité minimale à corriger : critical, high, medium ou low (par défaut low) |
--base |
Référence de comparaison (par défaut : la cible de la pull request, ou la branche par défaut d'origin) |
-y, --yes |
Corriger toutes les violations sans demander |
--print |
Afficher le prompt de la tâche au lieu de lancer un agent, pour le donner à n'importe quel autre agent |
--change-request |
Ouvrir une Architecture Change Request en brouillon à la fermeture de la session |
lsp
archyl lsp est un serveur de langage (LSP) sur stdio, pour tout éditeur doté d'un client LSP. Il tourne à côté du serveur propre au langage :
| Fonction | Ce que vous obtenez |
|---|---|
| Diagnostics | Les règles de conformité, exécutées sur un fichier quand vous l'ouvrez ou l'enregistrez. Les résultats critiques et élevés sont des erreurs, les moyens des avertissements, les faibles des informations |
| Survol | L'élément du fichier : sa place dans le modèle C4, ses responsables, combien d'éléments en dépendent, les décisions qui s'appliquent |
| Actions de code | Ask Archyl why demande à l'assistant pourquoi une règle existe, ou pourquoi le fichier est construit ainsi ; Open in Archyl ouvre l'élément dans le navigateur |
Il utilise la session de la CLI (archyl login ou ARCHYL_API_KEY) et le .archyl.json du dépôt. Quand Archyl est injoignable, il écrit un seul avertissement dans le journal LSP de l'éditeur et n'affiche aucun diagnostic. Les diagnostics suivent les enregistrements, pas la frappe.
Neovim 0.11 et versions ultérieures :
vim.lsp.config("archyl", {
cmd = { "archyl", "lsp" },
root_markers = { ".archyl.json", ".git" },
filetypes = { "go", "typescript", "python", "java", "rust" },
})
vim.lsp.enable("archyl")
Helix, dans languages.toml :
[language-server.archyl]
command = "archyl"
args = ["lsp"]
[[language]]
name = "go"
language-servers = ["gopls", "archyl"]
VS Code passe par l'extension Generic LSP Client, et Zed par une petite extension de développement. La configuration de chaque éditeur se trouve dans docs/lsp.md.
guard
archyl guard est le hook PreToolUse de Claude Code qu'installe archyl setup. Il lit le payload du hook sur stdin, exécute les règles de conformité du projet sur le fichier tel qu'il serait après la modification, et répond par une décision : les violations critiques bloquent la modification, les violations élevées déclenchent un avertissement. Réglez ARCHYL_GUARD_BLOCK sur high pour bloquer aussi les violations élevées, ou sur off pour ne faire qu'avertir.
Quand l'agent modifie un manifeste de dépendances (go.mod, package.json, pom.xml…), le Guard le vérifie aussi par rapport au radar technologique et bloque une dépendance que le radar place en Suspendre, avec l'alternative suggérée par sa note. Les dépendances en Suspendre déjà présentes ne bloquent pas la modification.
Le Guard échoue toujours en mode ouvert : sans identifiants, sans réseau ou face à un outil inconnu, il laisse passer la modification, si bien qu'il ne peut jamais casser votre workflow.
session
archyl session donne un accès bas niveau au protocole des sessions de travail, pour les scripts ou les agents qui le pilotent eux-mêmes. La plupart du temps, archyl wrap fait tout cela à votre place.
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 prend l'ID de session en argument ou depuis ARCHYL_SESSION_ID. Ne mettez dans --decision que des choix dignes d'un ADR : chacun devient une mémoire rejouée aux futures sessions portant sur les mêmes éléments. Tout ce qui est circonstanciel va dans --follow-up.
Contrôles et CI
Les mêmes commandes s'exécutent sur votre poste, dans un hook git et dans n'importe quelle CI. En CI, elles déduisent de l'environnement la branche de base, le commit et le format du rapport : GitHub Actions, GitLab CI, Bitbucket Pipelines et Azure Pipelines sont reconnus.
check
archyl check exécute les règles de conformité du projet sur chaque fichier qui diffère de la branche de base, et sort avec le code 1 quand une violation atteint --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
| Option | Par défaut | Rôle |
|---|---|---|
--base |
la cible de la pull request, sinon la branche par défaut d'origin | Référence de comparaison |
--fail-on |
high |
Sévérité minimale qui fait échouer : critical, high, medium, low ou never |
--format |
auto |
pretty, json, github, gitlab ou sarif |
-o, --output |
stdout | Fichier du rapport gitlab ou sarif |
--fail-open |
désactivé | Sort avec 0 quand le contrôle ne peut pas s'exécuter (hors ligne, déconnecté) ; seules les violations font échouer |
Avec --format auto, la sortie s'adapte à la CI :
| Où | Ce que vous obtenez |
|---|---|
| GitHub Actions | Des annotations en ligne sur la pull request, plus un tableau dans le résumé du job |
| GitLab CI | Un rapport Code Quality dans gl-code-quality-report.json, affiché dans la merge request |
| Ailleurs | La vue terminal ci-dessus |
--format sarif écrit un journal SARIF 2.1.0 pour le code scanning de GitHub, Azure DevOps ou n'importe quel tableau de bord de sécurité.
Les checkouts en CI sont souvent superficiels (shallow). Récupérez l'historique pour que la branche de base existe ; sinon, check s'arrête et vous le signale.
# 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 est le passage à lancer avant d'ouvrir une pull request. Il réunit les violations de règles qu'introduit votre branche, les éléments qu'elle touche avec ce qui en dépend, les personnes à prévenir et le score d'alignement actuel. Il sort avec le code 1 quand une violation atteint --fail-on (par défaut high).
Avec --comment, la revue est publiée sur la pull request ou la merge request, puis modifiée sur place à chaque push suivant, pour que la demande ne garde qu'un seul commentaire Archyl : le verdict, les violations avec leur fichier et leur ligne, les éléments touchés avec ce qui en dépend, et les propriétaires à mettre dans la boucle. GitHub demande GITHUB_TOKEN avec pull-requests: write ; GitLab demande GITLAB_TOKEN avec le scope api, car CI_JOB_TOKEN ne peut pas commenter.
Le commentaire inclut l'impact sous forme de flowchart Mermaid, que GitHub et GitLab affichent. archyl review --diagram affiche ce même flowchart en local, à coller dans une description ou un document.
Sur GitHub, le plus rapide est l'action Archyl, qui installe la CLI et exécute une commande :
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
Laissez command vide pour seulement installer la CLI et l'appeler dans les étapes suivantes.
hooks
archyl hooks install # blocks critical violations on git push
archyl hooks install --fail-on high
archyl hooks uninstall
archyl hooks install ajoute un hook git pre-push qui exécute archyl check --fail-open. Un push qui apporte une violation de niveau --fail-on ou supérieur (par défaut critical) est refusé ; si archyl n'est pas dans le PATH, hors ligne ou déconnecté, le push passe. Contournez-le ponctuellement avec git push --no-verify. Le hook respecte core.hooksPath, et un hook pre-push qu'archyl n'a pas écrit n'est jamais remplacé, sauf si vous passez --force.
drift
archyl drift montre dans quelle mesure le modèle documenté correspond au code : 100 signifie que chaque élément documenté a été retrouvé dans le code. --compute réanalyse d'abord le dépôt connecté et attend le résultat ; --fail-under en fait un quality gate.
archyl drift --compute --fail-under 80
dsl
archyl dsl garde un fichier d'architecture-as-code et le modèle du projet synchronisés. Chaque sous-commande travaille sur archyl.yaml à la racine du dépôt, sauf si vous passez --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
pullexporte le modèle (éléments, relations, technologies, décisions, documentation, contrats, environnements et releases). La commande demande avant d'écraser le fichier, sauf si vous passez--yes;--file -l'affiche à la place.diffest un essai à blanc côté serveur, sans rien écrire : les éléments et relations qu'un push ajouterait (+) ou modifierait (~), regroupés par niveau C4, et ceux que seul Archyl possède (−).--exit-codesort avec le code 1 dès qu'il y a une différence.pushcrée les nouveaux éléments et relations et met à jour les existants, rapprochés par nom. Il ne supprime jamais rien : ce que seul Archyl possède est conservé. Dans un terminal, il affiche le diff et demande d'abord ;--yessaute la question.
$ 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] équivaut à archyl dsl push.
release
archyl release enregistre une release, pour corréler les changements d'architecture avec ce qui a été livré et alimenter les métriques DORA. La version est par défaut le tag en cours de build dans la CI, puis le tag sur HEAD ; le lien pointe par défaut vers l'exécution de la CI.
archyl release v2.4.0 --environment production
| Option | Rôle |
|---|---|
--environment |
Environnement où la release a été livrée |
--status |
Statut de la release (par défaut deployed) |
--changelog |
Notes de version |
--system, --container |
Élément auquel appartient la release |
--url |
Lien vers la release ou le pipeline |
radar
archyl radar affiche les technologies de l'organisation par anneau de gouvernance (Adopter, Essayer, Évaluer, Suspendre), avec la part de l'architecture qui utilise chacune. archyl radar check lit les manifestes de dépendances du dépôt, rapproche chaque dépendance du radar et sort avec le code 1 quand l'une d'elles est en Suspendre, avec la même sortie 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
| Option | Par défaut | Rôle |
|---|---|---|
--fail-on |
hold |
Anneau qui fait échouer : hold, assess ou never |
--changed |
désactivé | Seulement les manifestes modifiés par rapport à la base |
--format |
auto |
pretty, json, github, gitlab ou sarif |
cr
archyl cr liste les demandes de changement d'architecture du projet — souvent ouvertes par des agents à la fin d'une session de travail — et vous permet de les examiner sans quitter le 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
Comptes et profils
| Commande | Ce qu'elle fait |
|---|---|
archyl login |
Connexion via le navigateur. --host cible une autre instance Archyl, --with-token lit une clé API sur stdin |
archyl logout |
Oublie l'identifiant stocké |
archyl cache clear |
Supprime les modèles en cache du profil actif ; --all vide ceux de tous les profils |
archyl whoami |
Qui vous êtes, sur quel hôte, quelle organisation et quel projet |
archyl profile |
Liste les profils ; archyl profile use <name> change de profil |
archyl inbox |
Vos notifications : mentions, revues, exécutions d'agents, tâches. Dans un terminal, choisissez-en une pour agir : examiner une demande de changement, répondre à un agent, ou l'ouvrir dans l'application web. --watch reste ouvert avec des notifications de bureau ; --read marque tout comme lu |
Un profil correspond à un hôte Archyl et une organisation, avec son propre identifiant. Créez-en un en vous connectant avec un nom ; c'est aussi ainsi que vous vous connectez à une instance Archyl auto-hébergée :
archyl login --host https://archyl.example.com --profile work
archyl profile use work
Prompt du shell
archyl prompt affiche en quelques caractères le score d'alignement du projet et les agents actifs, pour le prompt de votre shell. Il n'attend jamais le réseau : il affiche le dernier état connu et le rafraîchit en arrière-plan toutes les dix minutes. Avec Starship :
[custom.archyl]
command = "archyl prompt"
when = "test -f .archyl.json"
format = "[$output]($style) "
style = "purple"
Cache local
map, show, open, la complétion des éléments et les suggestions # de la session répondent à partir d'une copie locale du modèle, et démarrent donc instantanément. Il existe une copie par profil, hôte, organisation, identité et projet, dans votre répertoire de cache utilisateur, lisible par vous seul. Une copie de moins de 30 secondes est utilisée sans appeler l'API ; une copie plus ancienne est rafraîchie, et quand l'API met plus de 1,5 seconde à répondre, la commande répond à partir de la copie et le signale sur stderr. Les commandes qui modifient le modèle, comme dsl push ou l'approbation de découvertes, invalident la copie.
Ignorez le cache pour une commande avec --no-cache, ou partout avec ARCHYL_NO_CACHE=1. archyl login et archyl logout vident les copies du profil ; archyl cache clear le fait à la main.
Mises à jour
Quand une nouvelle release est disponible, la CLI le signale une fois la commande terminée. La vérification s'exécute en arrière-plan au plus une fois par jour, jamais en CI ni dans les scripts ; définissez ARCHYL_NO_UPDATE_NOTIFIER pour la désactiver.
archyl upgrade met la CLI à jour de la façon dont vous l'avez installée : brew upgrade pour Homebrew, la commande go install pour une compilation depuis les sources, et sinon sur place : il télécharge l'archive de la release pour votre plateforme, la vérifie avec le checksums.txt de la release (et sa signature cosign quand cosign est dans votre PATH), puis remplace le binaire en cours d'exécution. --check indique seulement si une release plus récente est sortie.
archyl upgrade
archyl upgrade --check
Options globales
| Option | Rôle |
|---|---|
--json |
Sortie lisible par une machine. Toutes les commandes qui affichent un résultat la prennent en charge |
-p, --project |
ID du projet, prioritaire sur .archyl.json |
--profile |
Profil à utiliser |
--no-cache |
Récupère le modèle depuis l'API plutôt que depuis le cache local |
Les messages d'état et les spinners vont sur stderr, les résultats sur stdout : les pipes ne voient donc jamais que le résultat.
archyl where --json . | jq '.files[].elements[0].name'
archyl impact --json | jq '.impact.notify'
CI et scripts
Aucune connexion nécessaire : créez une clé API dans Profil → Clés API et définissez-la dans l'environnement.
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
Pour stocker plutôt une clé API comme identifiant, passez-la à archyl login --with-token via un pipe.
| Variable | Rôle |
|---|---|
ARCHYL_API_KEY |
Clé API ; ignore les identifiants stockés |
ARCHYL_HOST |
URL de l'API pour un Archyl auto-hébergé (par défaut https://api.archyl.com) ; ARCHYL_API_URL est aussi lue |
ARCHYL_PROJECT_ID |
Projet, prioritaire sur .archyl.json |
ARCHYL_ORG_ID |
Organisation |
ARCHYL_PROFILE |
Profil à utiliser, comme --profile |
ARCHYL_GUARD_BLOCK |
critical (par défaut), high ou off |
ARCHYL_SESSION_ID |
Session de travail à laquelle se rattachent le Guard et session finish (définie par wrap) |
ARCHYL_FIX_TASK_FILE |
Fichier contenant la tâche, pour une commande lancée par archyl fix -- <command> (défini par fix) |
ARCHYL_CONFIG_DIR |
Répertoire de configuration |
ARCHYL_NO_KEYRING |
Stocke les identifiants dans un fichier lisible par vous seul (mode 0600) au lieu du trousseau du système |
ARCHYL_AGENT |
Nom enregistré sur les mémoires et les sessions, quand la CLI ne peut pas déterminer quel agent l'exécute |
GITHUB_TOKEN, GITLAB_TOKEN |
Jeton avec lequel review --comment publie |
ARCHYL_APP_URL |
URL de l'application web, quand ce n'est pas l'hôte de l'API où api. est remplacé par app. |
ARCHYL_THEME |
dark ou light, pour ne pas interroger le terminal sur sa couleur de fond |
ARCHYL_IMAGES |
0 pour dessiner les diagrammes en texte, même dans un terminal qui affiche les images |
ARCHYL_CACHE_DIR |
Répertoire de cache (cache du modèle, état du prompt, vérification des mises à jour) |
ARCHYL_NO_CACHE |
1 pour ne jamais utiliser le cache local du modèle, comme --no-cache |
ARCHYL_NO_UPDATE_NOTIFIER |
Ne jamais signaler les nouvelles releases |
NO_COLOR |
Sortie sans couleur |
Complétion du shell
archyl completion install écrit le script de complétion là où votre shell le charge : un répertoire du fpath de zsh qui vous appartient (ou ~/.zfunc), ~/.config/fish/completions ou ~/.local/share/bash-completion/completions. Relancez-le pour mettre le script à jour. Il ne modifie le fichier de démarrage de votre shell que si c'est nécessaire (zsh sans répertoire fpath à vous, PowerShell) et que vous l'acceptez. archyl setup le propose aussi.
archyl completion install
archyl completion install --shell fish
Pour écrire le script vous-même :
archyl completion zsh > "${fpath[1]}/_archyl"
archyl completion bash > /etc/bash_completion.d/archyl
archyl completion fish > ~/.config/fish/completions/archyl.fish