sync-hub
sync-hub
Un petit démon local (macOS uniquement — launchd, ~/Library/...) qui centralise, verbatim, l'historique de tes conversations IA locales (Claude Code, Codex CLI, Claude Cowork, Antigravity, imports Claude.ai/ChatGPT) dans une base SQLite unique, et l'expose :
via un dashboard web (arbre de projets, recherche plein texte, vue chat, couverture de synchro, triage des sessions non rattachées) ;
via un serveur MCP que Claude Code, Codex et Antigravity peuvent interroger en direct pour récupérer le contexte exact d'un autre outil, sans jamais résumer ni reconstruire — toujours le texte original.
Rien n'est jamais deviné : une session dont le dossier de travail ne correspond à aucun projet connu part dans un bucket « Non affecté », visible et triable, plutôt que d'être rattachée par heuristique.
Pourquoi
Travailler avec plusieurs outils d'IA sur les mêmes projets fait perdre le contexte à chaque changement d'outil. sync-hub ne synchronise rien vers les outils (il ne touche jamais au stockage natif d'un autre outil) — il lit ce qui existe déjà localement et le rend interrogeable par n'importe quel outil connecté en MCP.
Related MCP server: flightlog
Installation
Prérequis : macOS, Node.js ≥ 20 (better-sqlite3 a un prebuild pour les versions récentes — pas
besoin d'outils de compilation dans le cas courant).
git clone <url-de-ce-repo>
cd sync-hub
npm install
npm run build
./scripts/enroll.sh # rattache la machine au hub d'équipe (voir ci-dessous)
./scripts/install_service.sh # service launchd macOS, démarre à la connexionLe dashboard est servi sur http://127.0.0.1:4000 (local uniquement par défaut). Au premier
lancement il affiche les applications IA détectées sur la machine, l'état d'enrôlement et où
déposer les archives cloud.
Pour désinstaller : ./scripts/uninstall_service.sh.
Rejoindre le hub d'équipe
Chaque personne installe sync-hub sur sa propre machine. Le démon local lit ce que les outils IA ont déjà écrit sur le disque, puis pousse vers un hub commun qui sert de sauvegarde et de point de partage. Rien n'y est visible par les autres tant que le projet n'a pas été explicitement partagé.
Se faire créer un compte sur le hub par un administrateur (menu compte → Gérer les utilisateurs).
Créer un jeton d'appareil : se connecter au hub, menu compte → Jetons d'appareil, nommer la machine. Le jeton n'est affiché qu'une fois.
Enrôler la machine :
./scripts/enroll.sh. Le script vérifie le jeton auprès du hub avant de le ranger dans le trousseau macOS — il n'est jamais écrit dans un fichier ni passé en argument de commande, où l'historique du shell le garderait.
Un jeton par machine : perdre un portable se règle en révoquant son jeton, sans toucher à ceux des autres. Une machine non enrôlée fonctionne normalement en local, simplement sans sauvegarde distante — l'installateur le signale plutôt que de laisser croire le contraire.
Partager un projet
Depuis l'arborescence, l'icône de partage sur un projet, puis l'email du collègue. Le partage donne la lecture ; seul le propriétaire peut partager, et il peut retirer l'accès à tout moment. Pour quelqu'un sans compte, les liens publics par conversation restent la bonne option.
Conversations cloud
Claude.ai et ChatGPT ne stockent rien sur la machine : leur historique n'arrive que par un export.
Demander l'archive dans les réglages de chaque outil, puis déposer le .zip dans l'onglet
Synchronisation & Appareils (ou depuis l'écran d'accueil au premier lancement).
Variables d'environnement (toutes optionnelles)
Variable | Défaut | Usage |
|
| Racine scannée pour découvrir les projets |
|
| Emplacement de la base SQLite et des logs |
|
| Dossier des exports bulk (ChatGPT, Claude.ai) |
|
| Port du dashboard/API |
|
| Interface d'écoute (reste local par défaut) |
| (aucun) | Hub d'équipe vers lequel pousser/tirer |
| (trousseau) | Jeton d'appareil — normalement lu du trousseau par |
|
|
|
|
|
|
Connecter le serveur MCP
# Claude Code
claude mcp add sync-hub -s user -- node <repo>/dist/server/mcp-entry.js
# Codex — dans ~/.codex/config.toml
[mcp_servers.sync-hub]
command = "node"
args = ["<repo>/dist/server/mcp-entry.js"]Outils exposés :
lecture verbatim :
get_project_timeline,get_thread,search_transcriptscontinuité entre fils :
link_threads,unlink_thread,get_thread_link_updates(delta-only)gestion de projets (mêmes actions que le dashboard) :
list_projects,list_threads,rename_project,merge_projects,assign_thread_to_project,archive_thread,archive_project
Importer un export Claude.ai / ChatGPT
Dépose le(s) fichier(s) d'export dans imports/claude/ ou imports/chatgpt/, puis relance un scan
(bouton « Rescanner » du dashboard, ou POST /api/sync/rescan).
Développement
npm run dev # client (Vite) + serveur (tsx watch) en parallèle
npm test # suite de tests (vitest)
npm run lint # typecheckArchitecture
src/core/db.ts— schéma SQLite + accès aux données.src/core/registry.ts— résolution projet ↔ session (correspondance exacte uniquement, jamais de heuristique).src/core/adapters/— un adaptateur par source (Claude Code, Codex, Cowork, Antigravity, exports bulk).src/core/watch.ts— watch temps réel des nouvelles sessions.src/core/mcp-server.ts— serveur MCP.src/server/— API REST + WebSocket (Fastify).src/client/— dashboard (React + Vite + Tailwind).
This server cannot be deployed
Maintenance
Related MCP Connectors
Persistent memory for AI agents — log and recall conversation context over MCP.
Cross-tool persistent memory and context for AI assistants over MCP.
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA single MCP server that gives Claude, ChatGPT, Codex, and any MCP-compatible AI access to the same personal context via two tools: context_get and context_log.1MIT
- AlicenseAqualityCmaintenanceAn MCP server that indexes Claude Code conversation history into SQLite, enabling full-text search across past sessions for context recovery and cross-agent observability.103MIT
- AlicenseNot gradedqualityBmaintenanceCapture, index, and search your Claude Code conversation history. Provides an MCP server for Claude Code to query its own past conversations.6 npm1MIT
- FlicenseNot gradedqualityCmaintenanceCollects session JSONL from Codex and Claude Code into local SQLite memory, exposed through MCP with tools for memory context, search, get, put, forget, sleep, and status.-