Kaneo : la gestion de projet open source qui reste simple
Kaneo, alternative open source à Jira et Linear : ce qu'il fait, l'installer avec Docker Compose, puis le piloter par API, CLI et MCP.

Quand on a lancé un nouveau projet avec mes associés, la première question n'a pas été technique. Elle a été : où est-ce qu'on note ce qu'il reste à faire ? Jira était trop lourd pour une équipe de quelques personnes. Linear, très agréable, devenait payant dès qu'on voulait garder la main sur nos données. Un tableau Trello partagé aurait tenu deux semaines.
On a fini sur Kaneo, un outil de gestion de projet open source sous licence MIT. Il propose des tableaux à colonnes, une vue liste, un calendrier et un diagramme de Gantt, et on l'héberge sur son propre serveur avec Docker. Le code source est sur GitHub : usekaneo/kaneo.
Son slogan résume bien l'idée : « Project management that doesn't become the project ». Un outil de suivi qui ne demande pas un administrateur à plein temps.
Ce que fait Kaneo
Kaneo couvre ce qu'on attend d'un gestionnaire de tâches d'équipe, sans empiler les modules. À la date de cet article, la dernière version est la 2.49.0, sortie le 2 novembre 2026, et le dépôt approche les 10 000 étoiles.
| Besoin | Ce que Kaneo propose |
|---|---|
| Voir le travail | Tableau (Kanban), liste, calendrier, Gantt, backlog, filtres et recherche |
| Détailler une tâche | Description, pièces jointes, sous-tâches, dépendances, étiquettes, commentaires, suivi du temps |
| Travailler à plusieurs | Espaces de travail, invitations, rôles personnalisés, mises à jour en direct, vue publique d'un projet |
| Adapter le flux | Colonnes et champs personnalisés, règles qui déplacent une tâche selon l'activité d'un dépôt |
| Être prévenu | Notifications dans l'appli, e-mail, ntfy, Gotify, webhooks |
| Brancher d'autres outils | GitHub et Gitea, messageries, API REST, CLI officielle, serveur MCP |
Chaque tâche reçoit un identifiant court, du type WEB-22, construit à partir du préfixe du projet. C'est un détail, mais c'est ce qui permet d'écrire « TEC-49 est bloquée » dans un message et que tout le monde sache de quoi on parle.
Kaneo sait aussi importer des projets depuis Linear, Jira, Trello, Plane et PLANKA. Pratique si l'équipe a déjà un historique ailleurs.
Kaneo face à Jira, Linear et Trello
Je ne vais pas prétendre que Kaneo remplace Jira dans une entreprise de 500 personnes avec des workflows de validation à six étapes. Ce n'est pas son terrain. Il vise les petites équipes qui veulent un outil propre, rapide, et à elles.
| Kaneo | Jira | Linear | Trello | |
|---|---|---|---|---|
| Licence | MIT (open source) | Propriétaire | Propriétaire | Propriétaire |
| Auto-hébergement | Oui, Docker Compose | Data Center uniquement | Non | Non |
| Vues | Tableau, liste, calendrier, Gantt | Toutes, et plus | Tableau, liste, timeline | Tableau, et plus en payant |
| API et MCP | API REST, CLI, MCP intégré | API REST, MCP | API GraphQL, MCP | API REST |
| Prise en main | Quelques minutes | Longue | Rapide | Immédiate |
Ce qui m'a convaincu, c'est la combinaison licence MIT et outillage pour les développeurs. La MIT est plus permissive que l'AGPL de Twenty, le CRM open source dont je reparle plus bas : on peut modifier le code sans obligation de republier ses changements. Et l'API, la CLI et le serveur MCP sont là dès l'installation, pas dans une offre entreprise.
Kaneo est-il gratuit ?
Oui en auto-hébergement : le logiciel est open source, sans limite d'utilisateurs ni de projets. Vous payez seulement le serveur.
Il existe aussi Kaneo Cloud, sur cloud.kaneo.app, pour ceux qui ne veulent rien installer. Et une offre d'instance gérée, hébergée dans l'Union européenne avec sauvegardes et mises à jour, annoncée à partir de 299 $ par mois. Pour une petite équipe technique, l'auto-hébergement reste de loin le choix le plus logique.
Installer Kaneo avec Docker Compose
Il faut un serveur avec Docker et Compose V2. Pas besoin de cloner le dépôt : une image prête à l'emploi est publiée sur le registre GitHub. Si Compose ne vous est pas familier, le guide Docker Compose pose les bases.
Créez un dossier et un fichier compose.yml :
mkdir kaneo
cd kaneoservices:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: ${POSTGRES_USER:-kaneo}
POSTGRES_DB: ${POSTGRES_DB:-kaneo}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", 'pg_isready -U "$${POSTGRES_USER}" -d "$${POSTGRES_DB}"']
interval: 10s
timeout: 5s
retries: 5
kaneo:
image: ghcr.io/usekaneo/kaneo:${KANEO_IMAGE_TAG}
ports:
- "127.0.0.1:5173:5173"
env_file:
- .env
depends_on:
postgres:
condition: service_healthy
restart: unless-stopped
volumes:
postgres_data:Deux services seulement : PostgreSQL pour les données, et Kaneo, qui embarque à la fois l'interface et l'API sur le port 5173. Le port n'est ouvert que sur 127.0.0.1 : rien n'est exposé sur Internet tant que vous ne l'avez pas décidé.
Générez ensuite deux secrets, un pour la base, un pour les sessions :
openssl rand -hex 32
openssl rand -hex 32Puis créez le fichier .env à côté du compose.yml :
KANEO_IMAGE_TAG=2.49.0
KANEO_CLIENT_URL=http://localhost:5173
POSTGRES_DB=kaneo
POSTGRES_USER=kaneo
POSTGRES_PASSWORD=premier-secret-genere
AUTH_SECRET=second-secret-genereÉpinglez une version précise plutôt que latest. Une mise à jour qui arrive toute seule un lundi matin sur l'outil où toute l'équipe travaille, ce n'est jamais le bon moment. Les versions disponibles sont listées dans les notes de version du dépôt.
Lancez et vérifiez :
chmod 600 .env
docker compose up -d
docker compose ps
curl --fail http://localhost:5173/api/healthLe premier démarrage prend une minute, le temps d'initialiser la base et de jouer les migrations. Ouvrez ensuite http://localhost:5173 : le premier compte créé devient le vôtre, puis vous créez un espace de travail et un premier projet.
Si quelque chose bloque, les journaux disent presque toujours pourquoi :
docker compose logs --tail=100 kaneo postgresMettre Kaneo en ligne pour l'équipe
Pour que vos associés y accèdent, placez Kaneo derrière un reverse proxy avec HTTPS. Nginx, Caddy ou Traefik font l'affaire, et le comparatif des reverse proxies aide à choisir. Une fois le domaine prêt, changez une seule variable :
KANEO_CLIENT_URL=https://kaneo.mondomaine.frAttention au piège classique : un docker compose restart ne relit pas le fichier .env. Il faut recréer le conteneur.
docker compose up -d --force-recreate kaneoDernier point avant d'inviter tout le monde : sauvegardez le volume postgres_data. Toutes vos tâches y vivent. Un pg_dump quotidien envoyé ailleurs que sur le serveur suffit.
Piloter Kaneo par l'API
C'est là que Kaneo m'a vraiment plu. Je tiens mon planning de la journée dans un petit outil perso, et je voulais y voir mes tâches Kaneo sans ouvrir un onglet de plus. Un script Node de cinquante lignes a suffi.
La clé d'API se crée dans Settings → Account → API Keys. On la copie une seule fois : Kaneo ne la réaffiche pas.
# Les espaces de travail auxquels vous appartenez
curl --fail-with-body 'https://kaneo.mondomaine.fr/api/workspace' \
-H "Authorization: Bearer $KANEO_API_KEY"
# Les projets d'un espace
curl --fail-with-body --get 'https://kaneo.mondomaine.fr/api/project' \
--data-urlencode 'workspaceId=WORKSPACE_ID' \
-H "Authorization: Bearer $KANEO_API_KEY"
# Le tableau d'un projet, avec ses colonnes et ses tâches
curl --fail-with-body 'https://kaneo.mondomaine.fr/api/task/tasks/PROJECT_ID' \
-H "Authorization: Bearer $KANEO_API_KEY"La dernière route ne renvoie pas une liste plate. Elle renvoie le tableau du projet, colonne par colonne, et chaque colonne indique si elle est finale (isFinal). Pour récupérer mes tâches ouvertes, je parcours les colonnes non finales et je garde celles dont assigneeId est mon identifiant.
Un retour d'expérience : sur notre instance, l'en-tête Authorization: Bearer renvoyait 401. L'en-tête x-api-key: <clé> passait, lui. La documentation actuelle donne Bearer comme méthode standard, donc testez les deux si vous tombez sur un 401 avec une clé valide.
Côté limites, chaque clé a droit à 100 requêtes par fenêtre de 60 secondes. Au-delà, l'API répond 429 Too Many Requests avec un en-tête Retry-After. Pour une synchro toutes les quelques minutes, on en est très loin.
La CLI Kaneo
Pour ceux qui vivent dans le terminal, la CLI officielle fait la même chose sans écrire de requêtes :
curl -fsSL https://kaneo.app/cli/install.sh | sh
kaneo login
kaneo task mine
kaneo task create "Corriger la redirection après connexion" -p WEB --priority high --due tomorrow
kaneo task status WEB-12 doneSous Windows, l'installation passe par PowerShell (irm https://kaneo.app/cli/install.ps1 | iex) et un paquet npm existe aussi (npm install -g @kaneo/cli). Chaque commande sait sortir du JSON, ce qui la rend facile à brancher dans un script ou un agent.
Brancher Claude ou Cursor avec le serveur MCP
Chaque instance Kaneo expose un serveur MCP sur /api/mcp, sans rien installer de plus. Si le protocole est nouveau pour vous, l'explication du Model Context Protocol montre comment un assistant appelle ce genre d'outil.
Il suffit de donner cette adresse à un client compatible :
https://kaneo.mondomaine.fr/api/mcpLe client vous redirige vers Kaneo pour vous connecter et approuver l'accès (OAuth 2.1). Ensuite, l'assistant agit avec vos droits : lister les tâches, en créer, changer un statut, commenter, saisir du temps. Pour les clients qui n'acceptent que le transport stdio, le paquet @kaneo/mcp fait le pont :
npx -y @kaneo/mcp install --target cursor-user -y --api-url https://kaneo.mondomaine.frConcrètement, ça donne des demandes du genre « passe TEC-49 en revue et ajoute un commentaire avec le lien de la PR », exécutées sans quitter l'éditeur. C'est le genre de détail qui fait qu'un outil de suivi est vraiment tenu à jour.
Kaneo ne fera pas tout ce que fait Jira, et c'est précisément son intérêt. Pour une petite équipe de développeurs qui veut un tableau clair, ses données sur son serveur et une API qu'on branche en une soirée, c'est aujourd'hui le meilleur compromis que j'ai trouvé. Si vous cherchez la même approche côté relation client, Twenty suit la même logique open source.