Crush
Agent de code en terminal de Charm (Go), continuation de l'opencode-ai/opencode de Kujtim Hoxha ; licence FSL-1.1-MIT, source disponible, MIT à deux ans.
SFEIR AI · Publié le 22 octobre 2026
Un agent en terminal bâti sur les bibliothèques de Charm
Crush est l'agent de code en terminal de Charmbracelet, Inc. (Charm), l'éditeur des bibliothèques Go Bubble Tea, Lip Gloss et Glamour qui servent à construire des interfaces en mode texte. Le README du dépôt le présente comme « Your new coding bestie, now available in your favourite terminal » et liste ses traits : changement de modèle en cours de session sans perdre le contexte, plusieurs sessions par projet, serveurs de langage (LSP) pour enrichir le contexte, serveurs MCP en stdio, http et sse, et une prise en charge de macOS, Linux, Windows (PowerShell et WSL), Android et des BSD. Il s'installe par Homebrew, npm (@charmland/crush), Winget, Scoop, les dépôts apt et yum de Charm, ou go install.
Côté modèles, Crush parle à Anthropic, OpenAI, Gemini, Vertex AI, Bedrock, Azure OpenAI, OpenRouter, Groq, Cerebras, Hugging Face, OpenCode Zen et Go, et à tout fournisseur compatible OpenAI ou Anthropic, modèles locaux compris ; le catalogue par défaut vit dans un dépôt séparé, Catwalk. Le fournisseur mis en avant est Hyper, le service d'inférence de Charm : « Hyper, from Charm, is the official Crush provider. It's subscription-based, with a free tier, and optimized for Crush. » Le README ajoute que Hyper fonctionne sans rétention de données et « designed to comply with GDPR » ; ce sont les termes de l'éditeur, que la fiche n'a pas vérifiés dans un contrat.
Le client est gratuit. Au 22 octobre 2026, le registre npm compte 196 versions de @charmland/crush entre le 29 juillet 2025 (0.1.1) et le 9 octobre 2026 ; le dépôt publie en plus une version nightly. Le numéro courant se lit sur la page des releases GitHub, pas ici.
Filiation : TermAI, OpenCode, Crush
Crush continue le projet Go opencode-ai/opencode de Kujtim Hoxha. Le fichier LICENSE.md du dépôt Crush conserve la notice d'origine, « MIT License, Copyright (c) 2025-03-21 - 2025-05-30 Kujtim Hoxha », et le README du dépôt opencode-ai/opencode, archivé le 18 septembre 2025 d'après l'API GitHub, l'écrit en toutes lettres : « This repository is no longer maintained and has been archived for provenance. The project has continued under the name Crush, developed by the original author and the Charm team. » Le 30 juillet 2025, Christian Rocha, fondateur de Charm, annonce l'arrivée du projet dans un billet intitulé « Crush, Welcome Home » : « Kujtim's project, now called Crush, has come home to Charm, where it was always meant to be. » Le dépôt charmbracelet/crush a été créé le 21 mai 2025.
Le nom OpenCode, lui, est resté à une autre équipe. Dax Raad, de SST, et un second contributeur, Adam, avaient rejoint le projet de Hoxha au printemps 2025 ; quand Charm a recruté l'auteur, ils ont réécrit l'outil en TypeScript sous le même nom, aujourd'hui OpenCode d'Anomaly. Les deux parties ont donné leur version sur X le 13 juin 2025. Dax Raad : « charm is the company that tried to acquire opencode originally - the lead dev wanted to do it and me and adam did not », puis « compromise was they take the repo and i'd keep the name », avant de reprocher à Charm de continuer à utiliser le nom et d'avoir réécrit l'historique Git. Christian Rocha, le même jour : « In April, Kujtim Hoxha built a project called TermAI » ; deux développeurs lui auraient proposé de l'aide et le renommage en OpenCode, Charm lui a offert un poste, « No agreement was made », et il dément point par point : « No commit history was altered ». Aucun des deux récits n'a été arbitré par un tiers ; la fiche les rapporte sans trancher. Le renommage en Crush, intervenu entre le 13 juin et le 30 juillet 2025, a mis fin à l'homonymie.
FSL-1.1-MIT : source disponible, pas open source
La licence de Crush reste hors de la définition de l'open source de l'Open Source Initiative. Son fichier LICENSE.md est la « Functional Source License, Version 1.1, MIT Future License » (FSL-1.1-MIT), copyright « 2025-2026 Charmbracelet, Inc. ». L'API GitHub ne la reconnaît pas et renvoie NOASSERTION. La licence accorde le droit d'utiliser, copier, modifier et redistribuer le logiciel pour tout « Permitted Purpose », défini comme « any purpose other than a Competing Use ». Un usage concurrent consiste à « making the Software available to others in a commercial product or service that: 1. substitutes for the Software; 2. substitutes for any other product or service we offer using the Software that exists as of the date we make the Software available; or 3. offers the same or substantially similar functionality as the Software ». Sont explicitement permis l'usage interne, l'enseignement et la recherche non commerciaux, et les services professionnels rendus à un licencié.
La conversion vers MIT se fait version par version : « We hereby irrevocably grant you an additional license to use the Software under the MIT license that is effective on the second anniversary of the date we make the Software available. » Chaque release devient donc MIT deux ans après sa publication, sans date unique pour le projet ; la 0.1.1 du 29 juillet 2025 bascule le 29 juillet 2027, et le code encore sous FSL est toujours celui des deux dernières années. La licence ajoute une clause de brevets et interdit l'usage des marques de Charm au-delà de l'identification de l'origine du logiciel.
Pour une DSI, la lecture est simple : installer Crush sur les postes et l'utiliser en interne est couvert, l'embarquer dans un produit vendu qui ferait la même chose que Crush ne l'est pas avant deux ans. Le point mérite d'être écrit dans la politique d'outillage, à côté des harnais sous MIT ou Apache 2.0 comme Pi, OpenCode ou Goose.
Contexte partagé : AGENTS.md, CLAUDE.md, skills
Crush lit les fichiers de contexte des autres outils sans configuration. Le code source du chargeur de configuration fixe la liste par défaut, dans l'ordre : .github/copilot-instructions.md, .cursorrules, .cursor/rules/, CLAUDE.md et CLAUDE.local.md, GEMINI.md, les variantes de CRUSH.md, puis AGENTS.md. La commande d'initialisation crée par défaut un AGENTS.md ; le README précise que ce nom se change par l'option initialize-as. Deux fichiers globaux complètent le prompt système : ~/.config/crush/CRUSH.md pour « Crush-specific rules that would confuse other agentic coding tools » et ~/.config/AGENTS.md pour les consignes partagées entre outils.
Crush implémente le standard Agent Skills (agentskills.io) et cherche les skills dans ~/.agents/skills/, ~/.claude/skills/, ~/.config/crush/skills/, puis dans le projet sous .agents/skills, .crush/skills, .claude/skills et .cursor/skills. Un dépôt outillé pour Claude Code, Codex, OpenCode ou Pi se pilote donc avec Crush sans rien réécrire. Faire cohabiter plusieurs harnais sur un même projet mesure la qualité de ce contexte versionné : si Crush livre le même code que l'outil habituel, l'actif est dans les fichiers. C'est le fil de la série sur les harnais ouverts.
Permissions, configuration en Bash et télémétrie
Par défaut, Crush demande l'accord de l'utilisateur avant chaque appel d'outil : « By default, Crush will ask you for permission before running tool calls. » La commande permissions allow dispense certains outils de confirmation, permissions deny les cache au modèle, et le drapeau --yolo supprime toutes les demandes, avec l'avertissement du README : « Be very, very careful with this feature. » Au 22 octobre 2026, le README ne décrit aucun bac à sable : l'agent agit avec les droits du compte qui l'a lancé. Les hooks sont annoncés comme préliminaires (événements de type PreToolUse avec filtre sur le nom de l'outil).
La configuration s'écrit dans un crushrc, « just Bash with some Crush-specific builtins », interprété par un Bash embarqué, identique sur toutes les plateformes, Windows compris ; l'ancien format JSON reste lu mais déprécié. Le README range les deux formats dans le code de confiance : « Both crushrc and crush.json are trusted code; crushrc runs in a full shell, and any $(...) in crush.json runs at load time. » Un .crushrc ou un crush.json présent dans un dépôt cloné s'exécute donc au lancement, avant toute interface, et le README conclut : « Don't launch Crush in a directory whose config you haven't reviewed. » La relecture des fichiers de configuration passe au même rang que celle du code.
Crush envoie des métriques d'usage pseudonymes, liées à un hachage de la machine ; le README affirme que « prompts and responses are NEVER collected » et renvoie au code source pour le détail. La collecte se coupe avec CRUSH_DISABLE_METRICS=1 ou la convention DO_NOT_TRACK=1.
Ce que mesurent les compteurs
Au 22 octobre 2026, l'API GitHub renvoie 28 744 étoiles et 2 318 forks pour charmbracelet/crush, avec un dernier push le jour même ; le dépôt archivé opencode-ai/opencode en garde 13 805. Ces chiffres mesurent l'attention, pas l'usage. La mention « powering 25k+ applications » du README porte sur l'écosystème de bibliothèques Charm, pas sur Crush, et reste une déclaration de l'éditeur. Charm ne publie, à cette date, ni nombre d'utilisateurs ni chiffre d'affaires pour Crush ou Hyper.
Questions fréquentes
Crush est-il open source ?
Non au sens de l'OSI. Sa licence FSL-1.1-MIT est une licence « source disponible » : le code est public, l'usage interne, l'enseignement, la recherche et les services professionnels sont permis, mais pas un produit ou service commercial concurrent. Chaque version passe sous MIT deux ans après sa publication, selon le texte lu dans LICENSE.md le 22 octobre 2026.
Quel est le lien entre Crush et OpenCode ?
Crush est la continuation du projet Go opencode-ai/opencode de Kujtim Hoxha, recruté par Charm en 2025 ; le dépôt d'origine, archivé le 18 septembre 2025, renvoie vers Crush. OpenCode d'Anomaly est la réécriture en TypeScript menée par Dax Raad et un second contributeur, qui ont gardé le nom. Les deux équipes ont publié des récits contradictoires de la séparation le 13 juin 2025.
Crush lit-il les fichiers AGENTS.md et CLAUDE.md ?
Oui. Le code source charge par défaut .github/copilot-instructions.md, .cursorrules, .cursor/rules/, CLAUDE.md, CLAUDE.local.md, GEMINI.md, CRUSH.md et AGENTS.md, et l'initialisation d'un projet crée un AGENTS.md. Les skills au format Agent Skills sont lues dans .agents/skills, .claude/skills, .cursor/skills et .crush/skills, dans le projet comme dans le dossier personnel.
Crush demande-t-il une confirmation avant d'exécuter une commande ?
Oui, par défaut, pour chaque appel d'outil. La commande permissions allow dispense des outils choisis, permissions deny les retire au modèle, et le drapeau --yolo supprime toutes les demandes. Le README ne décrit aucun bac à sable au 22 octobre 2026, et rappelle qu'un fichier crushrc est du code exécuté au lancement, à relire avant d'ouvrir un dépôt inconnu.
Faut-il un abonnement pour utiliser Crush ?
Non. Le client est gratuit et fonctionne avec vos clés API chez Anthropic, OpenAI, Gemini, Bedrock, Vertex AI, OpenRouter ou un modèle local. Charm propose en plus Hyper, son fournisseur d'inférence par abonnement avec un palier gratuit, présenté dans le README comme sans rétention de données ; ce sont les termes de l'éditeur, non vérifiés dans un contrat.
Crush envoie-t-il des données à Charm ?
Des métriques d'usage pseudonymes, oui, par défaut ; le README affirme que prompts et réponses ne sont jamais collectés et renvoie au code source. La collecte se désactive avec CRUSH_DISABLE_METRICS=1 ou DO_NOT_TRACK=1. Les requêtes aux modèles partent vers le fournisseur que vous avez configuré, pas vers Charm, sauf si vous choisissez Hyper.
Sources
- GitHub — dépôt charmbracelet/crush (README : fonctions, fournisseurs, Hyper, crushrc, permissions, skills, métriques ; date de création et compteurs à la date) · 2026-10-22
By default, Crush will ask you for permission before running tool calls.
- GitHub — charmbracelet/crush, LICENSE.md (FSL-1.1-MIT, usage concurrent, conversion MIT au deuxième anniversaire, notice MIT de Kujtim Hoxha) · 2026-10-22
effective on the second anniversary of the date we make the Software available
- GitHub — charmbracelet/crush, internal/config/config.go (liste des fichiers de contexte chargés par défaut, initialize-as) · 2026-10-22
- GitHub — charmbracelet/crush, docs/config (commandes permissions, context-path, mcp, lsp, hook) · 2026-10-22
allow skips approval prompts; deny hides tools
- GitHub — page des releases de charmbracelet/crush (cadence, nightly) · 2026-10-22
- GitHub — dépôt opencode-ai/opencode, archivé (README renvoyant vers Crush ; date d'archivage et compteurs via l'API) · 2026-10-22
The project has continued under the name Crush, developed by the original author and the Charm team.
- Charm — « Crush, Welcome Home », Christian Rocha (arrivée du projet chez Charm, maintien de l'auteur d'origine) · 2025-07-30
Kujtim's project, now called Crush, has come home to Charm, where it was always meant to be.
- Registre npm — @charmland/crush (première version 0.1.1 le 29 juillet 2025, licence FSL-1.1-MIT, cadence) · 2026-10-22
- Dax Raad (@thdxr) — version SST de la séparation (lu via cdn.syndication.twimg.com) · 2025-06-13
compromise was they take the repo and i'd keep the name
- Christian Rocha (@meowgorithm) — version Charm de la séparation (lu via cdn.syndication.twimg.com) · 2025-06-13
In April, Kujtim Hoxha built a project called TermAI
Crush dans vos projets
Échanger avec SFEIRArticles liés
Agents de code : les critères qui comptent avant le benchmark
Trente-trois agents de code relevés le 22 octobre 2026 sur quatre critères que les comparatifs ignorent : licence réelle, approbation par défaut, juridiction des données, fichiers de contexte lus. Le modèle compte moins que ces quatre lignes, et un projet sérieux fait cohabiter deux harnais.
OpenCode, l'agent de code open source qui a misé sur la distribution
Terminal, desktop, IDE, plus de 75 fournisseurs de modèles, un forfait Go à 10 dollars : OpenCode (Anomaly) reprend ce qui marche chez Claude Code et le livre partout. Il lit AGENTS.md (et CLAUDE.md en V1 seulement), ce qui en fait le second harnais le plus simple à poser sur un dépôt.