◈ Local-first · Zéro serveur · Gratuit

Saisir librement.
Comprendre automatiquement.
Partager localement.

NoirBulles est un carnet de pensée augmenté : vous écrivez en langage naturel, l'application construit le graphe, détecte les foyers d'activité, infère les chaînes causales, et révèle la structure de votre monde — sans serveur, sans compte, sans IA générative.

1 fichier HTML · aucune installation IndexedDB · données locales D3 v7 · graphe interactif Yjs CRDT · collaboration P2P CC BY-NC-SA · Sébastien Kurt

Tout part d'une ligne de texte.
Le moteur fait le reste.

@alice #sprint !bureau
++idée de refactoring++
voir avec @bob !demain
Personnes alice, bob
Tag sprint
Lieu bureau
Type idea · Date demain
Rappel planifié automatiquement
--performance dégradée en prod--
@alice #infra
[ ] diagnostiquer les logs !vendredi
??cause probable??
Type problem + todo + question
Quête détectée automatiquement
CoMatrix alice×infra renforcé
CausalGraph inféré si contexte proche
Foyer potentiel si pattern récurrent
Fonctionnalités

Un moteur de connaissance.
Six couches de valeur.

Moteur analytique

CoMatrix · foyers · résonance

Chaque trace enrichit une matrice de co-occurrences (CoMatrix). Les entités qui co-apparaissent fréquemment forment des foyers. La résonance mondiale mesure la densité du réseau. Tout cela sans IA, de manière déterministe et reproductible.

0 concurrent direct
Causalité

Inférence causale automatique

CausalGraph détecte les chaînes d'événements dans une fenêtre de 30 minutes. Les messages partageant des entités et proches dans le temps créent des arêtes causales avec un score de confiance. Naviguez les ancêtres et descendants de chaque trace.

0 concurrent direct
Temporalité

Decay différentiel par type

Chaque type de trace a sa propre demi-vie : une idée reste chaude 30 jours, une note 3 jours, un problème 14 jours, une réunion monte en chaleur à l'approche de sa date. L'opacité et la chaleur reflètent cette entropie en temps réel.

0 concurrent direct
Visualisation

Graphe D3 · Mandala · Frise

Force graph avec zoom et drag-to-link. Mandala 3 anneaux (foyers, messages chauds, quêtes). Frise avec swim-lanes par type, D3 brush pour filtre temporel, seuils d'activité annotés. Minimap permanente. Constellations groupées par foyer.

🗂
Organisation

Vues · Filtres · Quêtes

Vues sauvegardées nommées comme colonnes kanban sémantiques. Filtres avancés type:todo heat:>70 hub:>3. Quêtes auto-détectées (problème → chaîne de todos). Assignation de quêtes, barre de progression, leaderboard.

📱
Mobile & UX

Swipe · Radial · Dictée

Swipe gauche pour supprimer (touch + souris). Menu radial circulaire (appui long ou clic droit). Dictée vocale SpeechRecognition. FAB avec bloom D3. Composer fixe avec safe area iOS. Mode focus plein écran. Thèmes Noir / Grimoire / Minimal / Daylight.

📷
Contenu riche

Markdown · Images · Réactions

Titres # ##, listes, citations, séparateurs en Markdown. Images inline via collage Ctrl+V, glisser-déposer ou bouton — en base64, fonctionne même en file://. Réactions emoji par message, déduplication locale, partagées via Yjs.

💾
Persistance

IndexedDB · Export · Import

IndexedDB avec migration one-shot depuis localStorage. Export JSON, Markdown, PDF. Import avec merge CRDT via /import. Partage URL hash pour petits logs. Snippets personnalisés persistés. World Seeds de démarrage en 6 domaines.

De la trace brute
au monde structuré.

01

Vous saisissez en langage naturel

Pas de formulaire, pas de champ à remplir. Une ligne de texte avec la grammaire @#! suffit. Le FSMParser tokenise en 17+ types et extrait automatiquement les entités, le type, la priorité, les dates.

@alice #projet !vendredi [ ] finaliser la démo
02

Le moteur calcule en temps réel

CoMatrix mise à jour (co-occurrences entités), CausalGraph inféré (30min window), EntityIndex indexé, heatScore et hubScore calculés par type avec decay différentiel. Tout se passe dans le navigateur, sans appel réseau.

03

La structure émerge sans effort

Les foyers apparaissent quand des entités co-occurrent suffisamment. Les quêtes se forment quand un problème est lié à des todos. Les seuils signalent les moments de rupture d'activité. Le mandala visualise tout ça.

04

Vous naviguez, filtrez, collaborez

Vues sauvegardées, filtres avancés, graphe interactif, frise temporelle, wiki par tag, fiches par personne, leaderboard. Le tout partageable entre onglets ou pairs via Yjs — sans jamais avoir configuré un serveur.

/saveview "Urgent" "type:problem heat:>60"
/wiki #projet
/assign id_message @alice

La même grammaire.
Huit mondes différents.

🕵

Investigation & OSINT

Sources, pistes, contradictions. CausalGraph trace les chaînes événementielles. Foyers = nœuds d'influence non déclarés. Offline absolu.

@sourceX #piste !terrain ??hypothèse??
heat:>70 pour les signaux chauds
🎲

Campagne RPG & MJ

PNJ, factions, quêtes, lore. Mandala = carte vivante. Fiches /char, wiki /wiki, leaderboard joueurs. Quêtes auto-détectées depuis les todos.

@Aldric #Garde !Edoras ++révélation++
/char @Aldric · /wiki #Rohirrim
🔬

Recherche académique

Auteurs, concepts, conférences. CoMatrix construit le réseau de co-occurrences. Chronicle = synthèse narrative automatique.

@Kuhn #paradigme !workshop2026
++insight++ --gap-- · /chronicle
🚀

War room & startup

Micro-décisions datées, log rejouable. Seuils signalent les périodes critiques. /delta exporte le World Delta de la semaine en HTML.

@investor #runway !pivot [ ] décider
/delta 2 · /saveview "Ouvert" "type:todo"
🏥

Suivi clinique terrain

Observations multi-soignants. CoMatrix corrèle symptômes/contextes. IndexedDB offline-first = usage terrain sans connexion.

@patient-A #hypertension !urgences
date:>2026-01-01 pour le suivi

Dossiers juridiques

Faits, témoins, dates, contradictions. Le log event-sourced est un journal non falsifiable. Causalité inférée entre pièces.

@témoin #dossier !audience ??contradiction??
Liens → chaîne causale
📡

Cellule de crise & terrain

Multi-agents. /import merge CRDT. Offline après chargement. Rappels Notification API. Seuils = alertes visuelles.

!posteX ??urgent?? · /share
Yjs WebRTC pour P2P sans serveur
🧠

Second cerveau personnel

Flux de conscience capturé, structuré après coup. Constellations groupent par foyer dominant. World Seeds pour démarrer.

@moi #projet !salon ++idée centrale++
Foyers émergent sans taxonomie

Un canal partagé
avec intelligence sémantique.

Avec Yjs actif, le fil de messages est le canal collaboratif. Chaque trace soumise est synchronisée via CRDT entre tous les pairs — onglets ou appareils — sans serveur central obligatoire.

🔄
Synchronisation CRDT
Y.Map messages, IndexedDB provider, WebSocket ou WebRTC P2P. Merge automatique, pas de conflit.
Awareness en temps réel
Indicateur de saisie par pseudo, curseurs des pairs dans le graphe SVG, compteur de membres connectés.
📋
Quêtes collaboratives
Assignation à un pseudo, barre de progression partagée, points au leaderboard à chaque todo coché.
😊
Réactions & mentions
Émojis par message, déduplication locale. Notification navigateur sur @mention quand l'onglet est en arrière-plan.
Commandes disponibles
/yjsÉtat de la connexion, configuration salle
/name PseudoDéfinir son nom d'affichage (awareness)
/wiki #tagPage wiki collaborative par tag
/char @aliceFiche personnage/contact collaborative
/assign id @pAssigner une quête à un pair
/questsPanel quêtes avec progression et assignation
/leaderboardScores par pseudo (todos cochés)
/eventsSeuils d'activité globaux partagés
/sharePartage monde via URL hash (P2P local)
/importMerge CRDT d'un export JSON

Ce que personne d'autre
ne fait encore.

Propriété NoirBulles Obsidian Notion Logseq Mem AI Slack+Yjs
Offline absolu (file://) unique
Graphe auto-émergent unique manuel manuel LLM
Decay différentiel par type unique
Inférence causale auto unique
CRDT sans serveur obligatoire unique partiel serveur requis
Zéro installation (1 fichier HTML) unique Electron compte requis Electron compte requis compte requis
Analytique sémantique sur le fil LLM
Coût Gratuit Gratuit +$4/mo $8–16/mo Gratuit $10/mo $7–15/mo

"Le quadrant local-first + émergent est vide sur le marché."

Obsidian et Logseq sont locaux mais demandent de structurer avant d'écrire. Mem et Roam sont émergents mais cloud obligatoires. NoirBulles est le seul outil qui combine les deux : saisir librement, sans serveur, sans configuration, et obtenir automatiquement une structure sémantique.

Sinapsus

Seul autre outil à générer un graphe automatiquement depuis le contenu. Cloud requis vs local-first.

Anytype

Local-first, open source, graphe. Structure définie avant d'écrire vs émergence après.

Capacities

Types sémantiques (Person, Book…). Cloud, UI premium, AI. Structure imposée vs saisie libre.

Un moteur de 6000 lignes.
Zéro dépendance obligatoire.

FSMParser17+ types de tokens · resolveDate FR/EN · intent naturel
CoMatrixCRDT-correct · decay 14j · hubScore · edgeList
CausalGraph500 arêtes · confidence scoring · chainFor(id)
EntityIndexbyPerson/Tag/Loc/Type · bisect O(log n)
MessageStoreEvent-sourced · IndexedDB · _replayFromEvents
AnalyticsdetectFoyers · detectQuests · worldResonance · detectSeuils
YjsManagerY.Map · awareness · wiki · chars · scores · P2P
D3 v7Force graph · mandala · frise brush · minimap
// CoMatrix : co-occurrence CRDT CoMatrix.apply(entities, +1); CoMatrix.hubFrom(entities); // → hubScore CoMatrix.tick(now); // → decay exp. // Analytique déterministe detectFoyers(co, minScore); detectQuests(allMessages); detectSeuils(timeline); worldResonance(co); // noirAPI console noirAPI.foyers(2); noirAPI.quests(); noirAPI.seuils(); noirAPI.ctx.resonance; // Yjs P2P YjsManager.assignQuestToSeed(id, '@alice'); runYjsTests(); // console

Prêt à voir
votre monde émerger ?

Un fichier HTML. Ouvrez-le dans votre navigateur. Commencez à écrire.

CC BY-NC-SA 4.0 · SÉBASTIEN KURT · AUCUN COMPTE · AUCUN SERVEUR · AUCUNE DONNÉE ENVOYÉE