À propos du projet

Cartographer est un système de navigation local-first pour l'architecture logicielle, distribué sous forme de plugin Cursor et de CLI construit à partir du dépôt. Il cible le problème que les grandes bases de code sont des graphes déguisés en dossiers : ouvrir un fichier fait perdre l'architecture environnante. Idée centrale : `cartographer index` arpente un dépôt et écrit un Atlas persistant sous `.cartographer/` — une base SQLite (`atlas.db`) de fichiers, symboles, relations, territoires et couches cartographiques dérivées, plus un JSON optionnel pour les points de repère, parcours et état d'exploration. Toutes les autres surfaces lisent cette unique façade Atlas plutôt que de construire un second graphe. La sortie phare est le Living Atlas Briefing, imprimé par `index`, `brief`, `whereami` et `tour`. Il rapporte les comptages d'arpentage (fichiers, symboles, arêtes), un Mini Atlas des territoires avec scores de confiance, un fil d'Ariane YOU ARE HERE pour un fichier:ligne, les principaux corridors (par ex. API → Domain → Data), les hubs et ponts, et une suggestion START HERE. La surface de commandes inclut : `index` (avec `--incremental`, `--no-brief`), `brief`, `whereami`/`where` (avec `--compact`), `goto`, `route` et `explain-route` pour des chemins sensibles aux corridors entre symboles, les requêtes de voisinage `upstream`/`downstream` avec profondeur, `territories`, `hubs`, `corridors`, `landmarks` (ajout de lieux nommés épinglés à fichier:ligne, avec vérification de dérive lors de la réindexation), `journeys`, `tour`, `unexplored` pour les frontières de fog-of-war, `search`, `history` pour l'archéologie Git locale, et `status`/`doctor` pour la santé, la couverture et l'intégrité. La plupart des commandes acceptent `--json`. Les adaptateurs de langage sont déterministes et ne nécessitent aucun binaire tree-sitter natif : TypeScript/JavaScript (y compris TSX), Python (Flask/FastAPI, Click), Go (handlers, Cobra) et Rust (Axum/Actix, Clap/Tauri). Les adaptateurs extraient symboles, imports, appels et points d'entrée ; la liaison inter-fichiers, l'inférence de territoires, les hubs et corridors s'exécutent dans le cœur. Un serveur MCP expose les mêmes outils Atlas aux agents (brief, whereami, goto, route, upstream, downstream, territories, hubs, search, unexplored, tour, doctor, status, index), configuré via `mcp.json` pour exécuter le `dist/mcp/index.js` construit. Le plugin Cursor fournit aussi des slash commands, un skill, une persona d'agent, des règles et des hooks. L'installation requiert Node.js 20+ (22/24 recommandé) et utilise `node:sqlite` intégré. L'installation se fait par clone → `npm install` → `npm run build`, éventuellement `npm link`. Le projet indique qu'il n'est pas un paquet du registre npm. La configuration est optionnelle via `.cartographer/config.toml` (exclusions d'index, plafond de taille de fichier, bascule d'exploration, bascule d'historique Git) plus `.cartographerignore`. La posture de confidentialité est local-first : pas de télémétrie, pas de clés API ni de compte cloud requis pour la navigation de base, données Atlas stockées localement, historique Git lu localement uniquement. Le README note que `.cartographer/` peut refléter des chemins et noms de symboles de la base de code. La licence est notable : le projet se décrit comme propriétaire à code source disponible, la production, la redistribution et le déploiement commercial nécessitant une licence commerciale écrite ou une acquisition ; l'évaluation est permise selon le fichier LICENSE. Des directives de contribution, une politique de sécurité, une feuille de route des directions envisagées et des liens de financement (GitHub Sponsors, thanks.dev) sont inclus.