Aller au contenu

Installer COGO

COGO est un conteneur (ou un binaire). Les deux seules choses qui comptent : monter un volume sur /vault pour que vos notes survivent aux mises à jour, et — sur un serveur — définir un jeton.

Avec Docker Desktop installé :

Fenêtre de terminal
docker run -d --name cogo -p 127.0.0.1:8095:8080 \
-v cogo-vault:/vault -e COGO_ALLOW_INSECURE=1 \
ghcr.io/diegoparras/cogo

Ouvrez http://localhost:8095. C’est fait — vous voyez votre coffre peint par confiance, vous capturez et modifiez des notes, le tout depuis le navigateur.

  • -p 127.0.0.1:8095:8080 ne le publie que sur votre machine — personne sur votre réseau ne le voit.
  • -v cogo-vault:/vault garde vos notes dans un volume pour qu’elles ne soient pas supprimées.
  • -e COGO_ALLOW_INSECURE=1 signifie « je sais que c’est local, ne demande pas de jeton ». Local uniquement.

Sans Docker — un seul binaire statique, sans runtime :

Fenêtre de terminal
cogo serve -http 127.0.0.1:8080 -vault ./vault

EasyPanel ne s’entend pas avec docker-compose — n’utilisez pas le type « Compose ». Utilisez le type App, plus simple, qui ajoute le HTTPS tout seul.

  1. Dans votre projet EasyPanel, + Add Service → App, nommez-le cogo.
  2. Source — soit GitHub (dépôt diegoparras/cogo, branche main, Build = Dockerfile ; fonctionne toujours), soit Docker Image ghcr.io/diegoparras/cogo:latest (exige que le paquet soit public).
  3. Environment :
    COGO_MCP_TOKEN=VOTRE-JETON
    COOKIE_SECURE=1
    (COGO_VAULT=/vault est déjà la valeur par défaut.)
  4. Mounts → Add Mount — type Volume, nom cogo-vault, chemin de montage /vault. Sautez cette étape et chaque mise à jour efface vos notes.
  5. Domains → Add Domain — votre domaine, port 8080 (le port interne de COGO). EasyPanel émet lui-même le certificat HTTPS. Chemin de health check, si demandé : /healthz.
  6. Deploy, ouvrez votre domaine, et collez VOTRE-JETON quand le visualiseur vous le demande.

Si l’application plante au démarrage, vous avez oublié COGO_MCP_TOKEN — COGO refuse, à dessein, de rester sur Internet sans protection.

La forme la plus sûre (niveau bancaire) : n’exposez pas le port du tout — liez-le au loopback et atteignez-le via un tunnel.

Fenêtre de terminal
# sur le VPS :
docker run -d --name cogo -p 127.0.0.1:8080:8080 \
-v cogo-vault:/vault -e COGO_MCP_TOKEN=VOTRE-JETON \
ghcr.io/diegoparras/cogo
# sur votre machine (tunnel SSH) :
ssh -N -L 8080:127.0.0.1:8080 user@votre-vps

Ouvrez http://localhost:8080. Le détail du déploiement durci (tunnel/VPN, TLS via proxy, limites) se trouve dans docs/seguridad.md.

Local — le plus simple : pas de réseau, chaque session démarre son propre COGO. Dans un .mcp.json :

{ "mcpServers": { "cogo": { "command": "cogo", "args": ["serve", "-vault", "./vault"] } } }

Distant — via HTTP, avec votre jeton dans l’en-tête :

{
"mcpServers": {
"cogo": {
"type": "http",
"url": "https://votre-domaine/mcp",
"headers": { "Authorization": "Bearer VOTRE-JETON" }
}
}
}

À partir de là, dans n’importe quelle session, vous demandez pack "<sujet>" et obtenez du contexte coloré, ou vous capturez une découverte avec capture. Ce que Claude apprend aujourd’hui, Cursor le lit demain : le même coffre.

  • EasyPanel : cliquez à nouveau sur Deploy (ou Rebuild). Vos notes restent, grâce au volume /vault.
  • Docker seul : docker pull ghcr.io/diegoparras/cogo et recréez le conteneur avec le même -v cogo-vault:/vault.

COGO fonctionne parfaitement sans modèle. Si vous voulez qu’il détecte des contradictions entre notes et qu’il affûte le Guard, ouvrez le visualiseur → menu → Réglages · Modèle d’IA et connectez un modèle local (Ollama) ou distant (OpenRouter, DeepSeek). La dépense en tokens s’affiche dans le même menu.

Tous sont désactivés tant que vous ne les définissez pas. Le cœur de COGO ne touche jamais au réseau.

VariableCe que ça active
COGO_GITHUB_TOKENDes preuves qui vivent dans un dépôt (github://owner/repo@main/file.go:42, ancrées au SHA du blob) et l’explorateur GitHub intégré. Un jeton en lecture seule suffit.
COGO_R2_*Stocker les artefacts sur Cloudflare R2 plutôt que sur le disque local (ACCOUNT_ID, ACCESS_KEY_ID, SECRET_ACCESS_KEY, BUCKET).
COGO_AUDIT_MAXCombien d’entrées conserve le journal d’audit MCP (5000 par défaut, 0 = illimité).

Chaque image est signée avec cosign (Sigstore sans clés) et porte une provenance SLSA : vous pouvez prouver qu’elle sort du CI de ce dépôt avant de lui confier votre vault :

Fenêtre de terminal
cosign verify ghcr.io/diegoparras/cogo \
--certificate-identity-regexp='https://github.com/diegoparras/cogo/.*' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com
Lire la documentation