- Shell 62.7%
- Dockerfile 21.3%
- Just 16%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .forgejo/workflows | ||
| static | ||
| AGENTS.md | ||
| Containerfile | ||
| Justfile | ||
| kawey | ||
| README.md | ||
| renovate.json5 | ||
Dehors ça souffle, dedans ça code
kawey
Lance le Vibe CLI dans un conteneur podman, avec le dossier courant monté comme espace de travail. Vibe n'a accès qu'à ce dossier, et aux éventuels dossiers que vous ajoutez explicitement, pas au reste de votre machine.
Équivalent de cloche (« Claude code sous cloche »), pour Mistral Vibe. Le nom vient du brise-vent : kawey protège du Mistral.
Image publique
Une image à jour est publiée automatiquement sur git.coopix.eu/public/kawey:latest à chaque modification du dépôt. Si l'image locale manque au lancement, kawey tente d'abord de tirer cette image publique (voir KAWEY_UPSTREAM_IMAGE), et ne la construit localement que si elle n'est pas disponible sur le registre. L'option --update force ce tirage même si une image locale existe déjà, avec repli sur l'image locale si le registre est injoignable.
Prérequis
- podman 4.3 ou plus récent, en mode rootless (utilisateur normal, pas root)
- bash
- just, facultatif, pour l'installation en une commande
Installation
git clone <url-du-dépôt> ~/kawey
cd ~/kawey
just deploy
just deploy vérifie le script, crée le lien symbolique ~/.local/bin/kawey et prépare l'image (tirée du registre public si elle n'est pas déjà locale, construite sinon). Vérifiez que ~/.local/bin est dans votre PATH ; just vous prévient si ce n'est pas le cas.
Sans just, le lien symbolique suffit, l'image étant alors tirée du registre public au premier lancement (ou construite localement si elle n'y est pas) :
ln -s ~/kawey/kawey ~/.local/bin/kawey
Dans les deux cas, le script retrouve le Containerfile à côté de son emplacement réel : ne déplacez pas le dépôt après l'installation, ou relancez just install.
Utilisation
cd ~/mon-projet
kawey
Au premier lancement, l'image est tirée depuis le registre public si elle n'est pas déjà présente localement (sinon elle est construite, ce qui prend quelques minutes), puis Vibe lance son assistant de configuration : connectez-vous avec votre compte Mistral (« Launch browser ») ou collez une clé API générée sur Code > Vibe CLI. La connexion est conservée pour les lancements suivants.
Tout ce qui suit les options de kawey est transmis à vibe :
kawey -p "résume ce dépôt"
Options
| Option | Effet |
|---|---|
--rebuild |
reconstruit l'image (met à jour le CLI Vibe) avant de lancer |
--update |
met à jour l'image depuis le registre (repli sur l'image locale si le pull échoue) |
--build-only |
tire ou construit l'image si besoin (ou de zéro avec --rebuild) puis quitte |
--shell |
ouvre un shell bash dans le conteneur au lieu de vibe |
--include CHEMIN |
monte un dossier de plus sur /work/<nom> (lecture/écriture) et le donne à vibe (--add-dir) ; répétable |
--include-ro CHEMIN |
idem, en lecture seule ; répétable |
--kawey-help |
affiche l'aide |
Ces options doivent être placées avant les arguments destinés à vibe.
Travailler sur plusieurs projets
Pour donner à Vibe accès à d'autres dossiers que le projet courant, ajoutez-les avec --include (ou --include-ro si Vibe doit seulement les lire) :
cd ~/mon-projet
kawey --include ../ma-lib --include-ro ~/docs-api
Chaque dossier est monté à côté du projet, sur /work/<nom-du-dossier> (ici /work/ma-lib et /work/docs-api), et transmis à Vibe par son option --add-dir, qui les ajoute à son espace de travail au même titre que le projet. Le projet courant reste le dossier de travail du conteneur. Avec --shell, les dossiers sont montés mais rien n'est transmis à Vibe.
Deux dossiers de même nom sont refusés, tout comme les chemins contenant « : » ou les noms de dossier contenant « , ». Le --add-dir de Vibe reste utilisable tel quel après les options de kawey, mais il ne monte rien : il ne sert que pour un chemin déjà présent dans le conteneur.
Variables d'environnement
| Variable | Rôle |
|---|---|
KAWEY_IMAGE |
nom de l'image (défaut : localhost/kawey:latest) |
KAWEY_UPSTREAM_IMAGE |
image publique tirée si l'image locale manque (défaut : git.coopix.eu/public/kawey:latest ; vide = construire directement) |
KAWEY_CONFIG_DIR |
dossier hôte de la config Vibe (défaut : ~/.local/share/kawey) |
KAWEY_PROXY |
proxy HTTP(S) sortant, tel que vu depuis le conteneur |
MISTRAL_API_KEY |
transmise au conteneur si elle est définie |
CI/CD
La construction et la publication de l'image sont automatisées via Forgejo Actions :
- Sur pull request : construction de l'image et vérification qu'elle fonctionne
- Au merge dans main : construction et publication sur le registre public de Forgejo
git.coopix.eu
Token CI (CI_TOKEN)
Les workflows (.forgejo/workflows/) utilisent le secret CI_TOKEN du dépôt : un personal access token (PAT) du compte dédié ci-kawey sur git.coopix.eu, à renseigner dans Settings → Actions → Secrets du dépôt public/kawey.
Création du token
- Se connecter à
git.coopix.euavec le compteci-kawey, puis Settings → Applications → Generate New Token. - Choisir l'accès « All (public, private, and limited) » ou « Public only » — jamais « Specific repositories » : Forgejo n'y autorise que
read:repository,write:repository,read:issueetwrite:issue, ce qui rendread:useretread:organizationimpossibles. - Cocher les scopes du tableau ci-dessous (dans l'interface Forgejo, choisir le droit read ou write pour chaque groupe de scopes).
- Copier le token affiché une seule fois, puis mettre à jour le secret
CI_TOKENdu dépôt.
Scopes requis
Sur Forgejo, le droit write inclut read : un scope en write donne aussi la lecture.
| Scope | Droit | Utilisé par | Pourquoi |
|---|---|---|---|
user |
read | Renovate | GET /api/v1/user à l'initialisation ; sans ce scope, Renovate échoue avec « Authentication failure » |
repository |
write | CI + Renovate | lecture du dépôt et création des pull requests de mise à jour (write inclut read) |
issue |
write | Renovate | issues, labels et commentaires (exigé depuis Forgejo >= 1.20 ; write inclut read) |
organization |
read | Renovate | lecture de l'organisation public et de ses labels (exigé depuis Forgejo >= 1.20) |
package |
write | CI | connexion au registre et envoi de l'image (docker login / docker push) |
Références : scopes des tokens Forgejo et Renovate sur Forgejo.
Vérifier le token
curl -H "Authorization: token $CI_TOKEN" https://git.coopix.eu/api/v1/user
curl -H "Authorization: token $CI_TOKEN" https://git.coopix.eu/api/v1/orgs/public
La première commande doit renvoyer le compte ci-kawey, la seconde l'organisation public.
Dépannage
- Renovate échoue avec « Authentication failure » : le token manque un scope (souvent
useren read,issueen write ouorganizationen read) ou le secretCI_TOKENest vide ; passerLOG_LEVEL: debugdans.forgejo/workflows/renovate.ymldonne le détail, puis relancer le workflowrenovate(workflow_dispatch). - La CI échoue au
docker login: le scopepackageen write manque ou a expiré.
Dépôt et CI
| Élément | Emplacement |
|---|---|
| Code source | git.coopix.eu/public/kawey |
| Image publique | git.coopix.eu/public/kawey:latest |
| Workflows CI | .forgejo/workflows/ |
| Configuration Renovate | renovate.json5 |
Gestion des dépendances
Les dépendances du Containerfile (image de base Python, version épinglée de mistral-vibe) sont suivies automatiquement par Renovate : le tag de l'image via le gestionnaire dockerfile, et la version de mistral-vibe épinglée dans le pip install via un gestionnaire regex (datasource PyPI). Les pull requests de mise à jour sont créées automatiquement selon la configuration dans renovate.json5.
