Ekonum

sync-hub

Community Ekonum
Updated

Centralise en local, verbatim, l'historique de tes conversations IA (Claude Code, Codex, imports Claude.ai/ChatGPT) et l'expose via un dashboard et un serveur MCP.

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 desynchro, triage des sessions non rattachées) ;
  • via un serveur MCP que Claude Code, Codex et Antigravity peuvent interroger en direct pourrécupérer le contexte exact d'un autre outil, sans jamais résumer ni reconstruire — toujours letexte original.

Rien n'est jamais deviné : une session dont le dossier de travail ne correspond à aucun projetconnu part dans un bucket « Non affecté », visible et triable, plutôt que d'être rattachée parheuristique.

Pourquoi

Travailler avec plusieurs outils d'IA sur les mêmes projets fait perdre le contexte à chaquechangement d'outil. sync-hub ne synchronise rien vers les outils (il ne touche jamais austockage natif d'un autre outil) — il lit ce qui existe déjà localement et le rend interrogeablepar n'importe quel outil connecté en MCP.

Installation

Prérequis : macOS, Node.js ≥ 20 (better-sqlite3 a un prebuild pour les versions récentes — pasbesoin 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 connexion

Le dashboard est servi sur http://127.0.0.1:4000 (local uniquement par défaut). Au premierlancement 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 IAont déjà écrit sur le disque, puis pousse vers un hub commun qui sert de sauvegarde et de point departage. Rien n'y est visible par les autres tant que le projet n'a pas été explicitement partagé.

  1. Se faire créer un compte sur le hub par un administrateur (menu compte → Gérer lesutilisateurs).
  2. Créer un jeton d'appareil : se connecter au hub, menu compte → Jetons d'appareil, nommerla machine. Le jeton n'est affiché qu'une fois.
  3. Enrôler la machine : ./scripts/enroll.sh. Le script vérifie le jeton auprès du hub avantde le ranger dans le trousseau macOS — il n'est jamais écrit dans un fichier ni passé enargument 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 desautres. Une machine non enrôlée fonctionne normalement en local, simplement sans sauvegardedistante — 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 donnela lecture ; seul le propriétaire peut partager, et il peut retirer l'accès à tout moment. Pourquelqu'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'ongletSynchronisation & Appareils (ou depuis l'écran d'accueil au premier lancement).

Variables d'environnement (toutes optionnelles)

Variable Défaut Usage
SYNC_HUB_PROJECTS_ROOT ~/Projets Racine scannée pour découvrir les projets
SYNC_HUB_DATA_DIR <repo>/data Emplacement de la base SQLite et des logs
SYNC_HUB_IMPORTS_DIR <repo>/imports Dossier des exports bulk (ChatGPT, Claude.ai)
PORT 4000 Port du dashboard/API
HOST 127.0.0.1 Interface d'écoute (reste local par défaut)
SYNC_HUB_REMOTE_URL (aucun) Hub d'équipe vers lequel pousser/tirer
SYNC_HUB_REMOTE_TOKEN (trousseau) Jeton d'appareil — normalement lu du trousseau par run_daemon.sh, pas défini à la main
SYNC_HUB_DISABLE_LOCAL_INGEST 0 1 sur le hub : il reçoit, il ne scanne aucun fichier
SYNC_HUB_AUTH_DISABLED 0 1 pour désactiver l'authentification (instance mono-utilisateur)

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_transcripts
  • continuité 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    # typecheck

Architecture

  • src/core/db.ts — schéma SQLite + accès aux données.
  • src/core/registry.ts — résolution projet ↔ session (correspondance exacte uniquement, jamaisde 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).

MCP Server · Populars

MCP Server · New

    irinabuht12-oss

    Google Ads MCP + Meta Ads MCP + GA4 — one unified MCP server

    Google Ads MCP + Meta Ads MCP + GA4 in one server for Claude, ChatGPT, Cursor & n8n — 250+ tools, hosted remote MCP, OAuth login, no API keys. By Ryze AI.

    Community irinabuht12-oss
    irinabuht12-oss

    Google Ads MCP Server

    Google Ads MCP + Meta Ads MCP + GA4 in one server for Claude, ChatGPT, Cursor & n8n — 250+ tools, hosted remote MCP, OAuth login, no API keys. By Ryze AI.

    Community irinabuht12-oss
    irinabuht12-oss

    Meta Ads MCP Server (Facebook and Instagram Ads)

    Google Ads MCP + Meta Ads MCP + GA4 in one server for Claude, ChatGPT, Cursor & n8n — 250+ tools, hosted remote MCP, OAuth login, no API keys. By Ryze AI.

    Community irinabuht12-oss
    aicanvas-me

    @aicanvas/mcp

    Open-core registry of animated React components, blocks, design systems, and templates. Real, editable code: install with one shadcn CLI command or let your AI agent pull it over MCP.

    Community aicanvas-me
    aicanvas-me

    AI Canvas

    Open-core registry of animated React components, blocks, design systems, and templates. Real, editable code: install with one shadcn CLI command or let your AI agent pull it over MCP.

    Community aicanvas-me