murmur

Votre site répond à ses visiteurs.

murmur ajoute une bulle de chat qui répond à partir de vos propres pages, les cite et renvoie vers la bonne rubrique. Une balise script, sans backend, avec le modèle d'IA de votre choix.

Cette démo n'a pas de clé à elle : faites tourner un petit modèle dans votre navigateur (WebGPU, environ 1,1 Go une fois), utilisez votre clé (elle reste chiffrée dans votre navigateur) ou un Ollama sur votre machine.

Branchement de l'index…

  1. Chaque jack est une rubrique de ce site ; ceux qui sont cités s'allument.
  2. En attente d'une question.
Une ligne
<script type="module" src="https://maxgfr.github.io/murmur/cdn/murmur.js"></script>

Réglez, copiez une ligne.

Choisissez qui détient la clé d'IA, écrivez un message d'accueil, prenez une couleur. Le snippet se met à jour au fil des réglages ; collez-le avant </body> sur chaque page.

La clé

Comment il répond

Tout endpoint compatible OpenAI convient. Le Worker Cloudflare du dépôt fait une quarantaine de lignes et garde la clé en secret.

Le contenu

L'apparence

Fonctionne sur tout site qui accepte une balise script : GitHub Pages, Astro, Hugo, WordPress, Webflow, un simple fichier HTML.

De vos pages à une réponse, sans serveur.

Tout se passe dans le navigateur du visiteur. Votre site ne sert que des fichiers statiques.

  1. Indexer

    Au build. npx murmur-rag index lit votre HTML ou votre Markdown et écrit murmur-index.json : vos pages découpées en passages sous leurs titres. Pas d'index ? Le widget lit la page où il se trouve.

  2. Chercher

    Dans le navigateur. La question est comparée aux passages par recherche de mots-clés (BM25) : accents, pluriels et fautes de frappe sont pardonnés. Les meilleurs partent au modèle.

  3. Répondre

    Chez le fournisseur d'IA. Le modèle écrit à partir de ces passages seulement, les cite [1] [2] et renvoie vers la rubrique d'origine. Si vos pages ne le disent pas, il le dit.

Votre clé d'IA n'est jamais dans votre HTML.

Tout ce qui est dans une page web est lisible par n'importe qui. murmur vous offre trois façons de l'éviter.

Votre proxy la garde

Déployez le Worker Cloudflare d'exemple (offre gratuite) avec votre clé en secret. Il n'accepte que l'origine de votre site, fixe le modèle et plafonne chaque réponse. Le visiteur discute sans rien régler.

data-endpoint="https://murmur-proxy.you.workers.dev/v1"

Le Worker, prêt à déployer

Aucune clé, par défaut

Sans proxy, le navigateur du visiteur fait tourner LFM3 1.7B (Liquid AI, octobre 2026) sur WebGPU. Environ 1,1 Go se télécharge une fois, après accord du visiteur ; ensuite les questions ne quittent plus l'appareil. Plus lent et moins précis qu'un modèle hébergé.

<script type="module" src="…/murmur.js">

LFM3-1.7B

Ou la clé du visiteur

Dans les réglages IA, le visiteur peut brancher un fournisseur avec sa propre clé à la place. llm-connect la chiffre dans son navigateur (AES-GCM, une clé que la page ne peut pas exporter) et ne l'envoie qu'à ce fournisseur. data-local="false" ne propose que cette option.

data-provider="openrouter" data-local="false"

Comment llm-connect stocke les clés

Prenez tout, ou une seule couche.

murmur-rag est un seul paquet avec des points d'entrée séparés. Utilisez la bulle telle quelle, ou seulement la recherche, ou votre propre modèle et votre propre interface.

murmur-rag
createMurmur : posez une question, recevez une réponse en flux et ses sources. Sans interface.
murmur-rag/rag
Découpage, retriever BM25, ancrage du prompt, citations. Branchez votre propre Retriever pour des embeddings.
murmur-rag/indexer
Indexer du HTML, du Markdown ou du texte, dans Node ou dans le navigateur.
murmur-rag/llm
Le câblage llm-connect : réglages du proxy, store des réglages du visiteur.
murmur-rag/widget
L'élément <murmur-chat>, mountMurmur(), le rendu Markdown.
npx murmur-rag index
Indexer un dossier de build, des fichiers ou un sitemap.xml en ligne.
# installer, puis indexer le dossier de build
npm install murmur-rag
npx murmur-rag index ./dist --out ./dist/murmur-index.json

// la bulle, depuis votre propre bundle
import { mountMurmur } from "murmur-rag/widget";
mountMurmur({ index: "/murmur-index.json", llm: { provider: "anthropic" } });

// ou sans interface, avec n'importe quel modèle AI SDK
import { createMurmur } from "murmur-rag";
const murmur = createMurmur({ index, model });
const answer = await murmur.ask("Que comprend l'offre Pro ?");
for await (const part of answer.textStream) render(part);

Ce qu'il ne fait pas.

  • Des mots-clés, pas le sensBM25 trouve les passages qui partagent des mots avec la question. Un synonyme inconnu peut échapper ; branchez votre propre retriever pour une recherche sémantique.
  • Sites petits et moyensL'index se télécharge à la première question. Quelques centaines de pages, c'est parfait ; des dizaines de milliers méritent un service de recherche.
  • Fournisseurs qui acceptent les navigateursAvec la clé du visiteur, le navigateur appelle le fournisseur directement : OpenAI, Anthropic, Google, Mistral, OpenRouter, Groq et les serveurs locaux l'acceptent ; certains refusent.
  • La réponse vaut ce que vaut le modèleL'ancrage et les citations réduisent les réponses inventées, sans les supprimer. Vérifiez ce que dit la bulle sur les prix ou le juridique.
  • Le modèle du navigateur est petitLFM3 1.7B demande WebGPU (Chrome, Edge, Safari récents) et environ 1,1 Go au premier usage. Une fois chargé il répond en quelques secondes, avec moins de finesse qu'un modèle hébergé.

Qui a câblé ce standard.

GOLFIER MaximeIngénieur logiciel

murmur est fait par Maxime Golfier, qui l'a conçu et développé. C'est un ingénieur logiciel spécialisé dans l'architecture des systèmes d'information.

  1. IBMIl a travaillé chez IBM, où il a commencé comme architecte développeur.
  2. Sa propre entrepriseIl a lancé un réseau social pour les créateurs de contenu.
  3. FreelanceAujourd'hui avec des entreprises et des startups, de la conception d'un projet à sa mise en production.

Sa règle, tirée de son site : le logiciel progresse mieux quand il est partagé.

  • 195dépôts publics à lui
  • 442étoiles sur ces dépôts
  • 170abonnés
  • 2017sur GitHub depuis janvier

Surtout du TypeScript (68 dépôts) et du JavaScript (57), puis du Java, du Rust et du Shell. Son dépôt le plus étoilé est csv-ai-analyzer, un analyseur de CSV par IA qui tourne dans le navigateur.

Son profil GitHub s'ouvre sur une classe TypeScript, ConcreteEngineer, dont la méthode whatIDo() avoue tout : il corrige des bugs, en crée parfois, et continue d'apprendre.

Du même auteur, et proches de murmur : ephemeral, des salles en direct et un widget de présence d'une ligne pour les sites statiques ; llm-connect et llm-models, la couche modèle sur laquelle tourne murmur ; hush, une messagerie chiffrée de bout en bout ; et environ deux cents autres.

Chiffres tirés de son profil GitHub public, octobre 2026.