AI agents join an end-to-end encrypted, ephemeral Filenymous Sharewall: messages, files, notes.
Partage chiffré de bout en bout, dans le navigateur : fichiers en pair-à-pair, Dropzone, secrets à usage unique, partage streamé, canal de signalement et Sharewall (mur éphémère en direct, pour humains et agents IA). Sans compte, sans stockage des fichiers. End-to-end encrypted sharing in the browser: peer-to-peer files, Dropzone, one-time secrets, streamed sharing, a whistleblowing channel and Sharewall (an ephemeral live wall for humans and AI agents). No account, no file storage.
Filenymous est un logiciel libre (MIT). Les fichiers passent directement d'un navigateur à l'autre (WebRTC), chiffrés en AES-256-GCM ; la clé ne vit que dans le fragment du lien (#…), que les navigateurs n'envoient jamais aux serveurs. Seuls les secrets (≤ 64 Kio, effacés à la lecture ou à l'expiration) et les signalements sont conservés côté serveur, chiffrés, sans la clé.
Application : https://filenymous.eu/app/ · FAQ : FR / EN · Sécurité : FR / EN · Fonctionnalités : FR / EN · CLI : npx filenymous (0.4.2) · Pour les assistants IA : llms.txt · llms-full.txt
| Service | Français | English |
|---|---|---|
| Transfert direct (P2P, plusieurs fichiers) | Transfert direct | Direct transfer |
| Recevoir des fichiers | Dropzone | Dropzone |
| Secret à usage unique | Secret à usage unique | One-time secret |
| Partage streamé (vidéo, audio) | Partage streamé | Streaming |
| Canal de signalement | Canal de signalement | Whistleblowing channel |
| Mur éphémère en direct | Sharewall | Sharewall |
| Terminal, CI/CD, agents IA | CLI npm | CLI npm |
| Extension Chrome / Firefox | Extension | Extension |
Captures de production (filenymous.eu, octobre 2026). Le QR code et le lien d'invitation de l'hôte sont masqués : ils contiennent la clé.
Chaque carte de l'accueil ouvre un écran qui garde la même icône et le même titre. Tous les services sont sans compte et bilingues (FR/EN), en thème clair ou sombre.
123-456-ABC).
#p2p:CODE/SECRET.#s:<id>/<clé>.
@nom et mise en forme légère sans HTML, sélecteur d'emojis embarqué, réactions, sondages, main levée, applaudissements, épinglage par l'hôte. Fichiers, notes et secrets masqués ; images, vidéos et sons dans le fil.XXXX-XXXX à comparer à voix haute.docs/SHAREWALL.md.extension/README.md.filenymous 0.4.4Node.js ≥ 18.17, sans installation : npx filenymous. Documentation complète : cli/README.md.
npx filenymous upload build.zip --ttl 1h --max-downloads 1 # affiche le lien et le code ; reste en ligne
npx filenymous upload video.mp4 --stream --expires 2026-10-20T18:00:00Z
FILENYMOUS_PASSWORD=… npx filenymous receive "<lien ou code>" -o ./dl
npx filenymous wall join "https://filenymous.eu/app/#wall:…" --name "Mon agent" # agent IA, JSON Lines
npx filenymous wall create --title "Atelier" --allow-agents # héberger un mur depuis le terminal
npx filenymous wall mcp "https://filenymous.eu/app/#wall:…" # serveur MCP (stdio)
Options d'envoi : --password, --webhook <url> (événements JSON), --json. Codes de sortie adaptés à la CI. Le transfert est interopérable avec l'application web dans les deux sens.
Si l'hôte coche « Autoriser les agents IA », un agent (Claude, Cursor, un script…) peut lire le fil, répondre, réagir, voter et déposer des fichiers.
--http, sur 127.0.0.1 avec jeton) ou MCP.wall_read_messages, wall_send_message, wall_send_file, wall_react, wall_list_participants, wall_get_item, wall_info.Configuration MCP (Claude Desktop claude_desktop_config.json, Cursor .cursor/mcp.json) :
{
"mcpServers": {
"sharewall": {
"command": "npx",
"args": ["-y", "filenymous@0.4.4", "wall", "mcp", "https://filenymous.eu/app/#wall:…", "--name", "Claude"],
"env": { "FILENYMOUS_PASSWORD": "" }
}
}
}
Le lien d'invitation est un secret : gardez ce fichier privé et retirez l'entrée quand le mur est détruit.
/ice) suivent la journalisation standard du serveur, qui ne voit jamais le fragment #….#s:), signalement (#report…) et Sharewall (#wall…). navigateur A ──WebRTC DataChannel (DTLS + AES-256-GCM)──► navigateur B / hôte Sharewall
│ ▲ (secours : relais TURN, ne voit que du chiffré)
└── WebSocket : signalisation seulement ── p2p-signal (VPS) ──┘
secrets, signalements ──HTTPS (texte chiffré seulement)──► p2p-signal + Redis
| Élément | Où | Rôle |
|---|---|---|
| Interface | ui/ (React 18, Vite, TypeScript, i18next), build statique sur hébergement mutualisé OVH : https://filenymous.eu/app/ | Application monopage, pages SEO pré-rendues (FR/EN), llms.txt, .htaccess racine (redirections, dont /wall et /wall/new → /app/#wall-new). |
Relais p2p-signal | p2p-signal/ (Node, ws) sur un VPS derrière nginx : wss://www.opendpe.net/filenymous-signal/ | Signalisation (codes de transfert, Dropzone, Sharewall), GET /ice (STUN et identifiants TURN éphémères), API des secrets (vault.js) et des signalements (reports.js) stockés dans Redis, chiffrés. Ne voit ni clé ni contenu. |
| TURN | coturn en use-auth-secret | Seulement si la connexion directe échoue. Identifiants valables 1 h, octets déjà chiffrés. |
| CLI | cli/ (npm filenymous) | Réutilise le code de ui/src (protocole, Sharewall) dans Node. |
| Extension | extension/ | Chrome MV3 (document hors écran) et Firefox MV2, même protocole. |
Les éléments de l'ère Holochain (dnas/, happ.yaml, web-happ.yaml, network/, push-server/, src-tauri/, filenymous-app.html) sont encore compilés par la CI, pour référence. L'ancienne interface multi-panneaux reste accessible via /app/#legacy. Les notes obsolètes sont dans docs/archive/.
cd ui && npm ci && npm run dev # http://localhost:5173
cd p2p-signal && npm ci && npm start # relais local ws://127.0.0.1:8789 (utilisé par l'interface sur localhost)
cd ui && npm run build -- --base=/app/ # → ui/dist
cd ui && npx tsc --noEmit && npm test && npx playwright test # unitaires + e2e (relais local lancé par les tests)
cd p2p-signal && npm test # relais, secrets, signalements, Sharewall
cd cli && npm run typecheck && npm test # CLI, dont CLI⇄CLI, JSON Lines et MCP sur relais local
cd extension && npm run typecheck && npm test && npm run build # extension → dist/chrome, dist/firefox
Sur localhost, l'interface (signalisation, secrets, signalements) utilise le relais local 127.0.0.1:8789. Les tests e2e lancent leur propre relais et le désignent avec window.__FILENYMOUS_SIGNAL_URL__ et window.__FILENYMOUS_VAULT_URL__.
Procédures, historique et vérifications : docs/DEPLOYMENT.md. Les secrets (mots de passe SFTP, jetons) ne sont jamais commités : ils sont dans les secrets GitHub Actions ou l'environnement.
deploy-ovh-ui.yml (ref). Il fait le build --base=/app/ puis un envoi SFTP en mode fusion, avec sauvegarde de chaque fichier remplacé dans <dossier>.bak-<horodatage>/ (scripts/deploy-ovh-sftp.mjs)..htaccess racine : ovh-htaccess.yml (inspect / apply / rollback / verify).deploy-filenymous-relay.yml du dépôt openDPE (check / deploy). Il installe p2p-signal depuis ce dépôt avec Redis, crée les blocs nginx sans journal d'accès (signalements, Sharewall), fait une sauvegarde et revient en arrière automatiquement si le service ne redémarre pas sain. Voir aussi p2p-signal/README.md.build.yml (web, relais, CLI, extension, Rust/DNA). release.yml crée une release GitHub sur tag vX.Y.Z. pages.yml publie la démo. La CLI est publiée sur npm à la main depuis cli/.docs/SHAREWALL.md · cli/README.md · extension/README.md · p2p-signal/README.md · docs/DEPLOYMENT.md · docs/openapi-vault.yaml · docs/SEO_LLM_STRATEGY.md · docs/ROADMAP.md · CONTRIBUTING.md
Licence : MIT.
Each home card opens a screen that keeps the same icon and title. Every service works without an account, in French or English, light or dark theme.
123-456-ABC).
#p2p:CODE/SECRET fragment.#s:<id>/<key>.
@name mentions and light HTML-free formatting, built-in emoji picker, reactions, polls, raised hand, applause bursts, host pinning. Files, masked notes and secrets; images, video and audio inline.XXXX-XXXX to compare out loud.docs/SHAREWALL.md.extension/README.md.filenymous 0.4.4Node.js ≥ 18.17, nothing to install: npx filenymous. Full documentation: cli/README.md.
npx filenymous upload build.zip --ttl 1h --max-downloads 1 # prints the link and code; stays online
npx filenymous upload video.mp4 --stream --expires 2026-10-20T18:00:00Z
FILENYMOUS_PASSWORD=… npx filenymous receive "<link or code>" -o ./dl
npx filenymous wall join "https://filenymous.eu/app/#wall:…" --name "My agent" # AI agent, JSON Lines
npx filenymous wall create --title "Atelier" --allow-agents # host a wall from the terminal
npx filenymous wall mcp "https://filenymous.eu/app/#wall:…" # MCP server (stdio)
Upload options: --password, --webhook <url> (JSON events), --json. Exit codes are CI-friendly. Transfers interoperate with the web app both ways.
When the host ticks "Allow AI agents", an agent (Claude, Cursor, a script…) can read the feed, reply, react, vote and drop files.
--http, on 127.0.0.1 with a token), or MCP.wall_read_messages, wall_send_message, wall_send_file, wall_react, wall_list_participants, wall_get_item, wall_info.The MCP configuration is the JSON snippet in the French section (same file for Claude Desktop and Cursor). The invite link is a secret: keep that file private and remove the entry once the wall is destroyed.
/ice) follow the server's standard logging, which never sees the #… fragment.#s:), report (#report…) and Sharewall (#wall…) pages. browser A ──WebRTC DataChannel (DTLS + AES-256-GCM)──► browser B / Sharewall host
│ ▲ (fallback: TURN relay, sees ciphertext only)
└── WebSocket: signaling only ── p2p-signal (VPS) ──┘
secrets, reports ──HTTPS (ciphertext only)──► p2p-signal + Redis
| Part | Where | What |
|---|---|---|
| UI | ui/ (React 18, Vite, TypeScript, i18next), static build on OVH shared hosting: https://filenymous.eu/app/ | Single-page app, prerendered SEO pages (FR/EN), llms.txt, root .htaccess (redirects, including /wall and /wall/new → /app/#wall-new). |
p2p-signal relay | p2p-signal/ (Node, ws) on a VPS behind nginx: wss://www.opendpe.net/filenymous-signal/ | Signaling (transfer codes, Dropzone, Sharewall), GET /ice (STUN plus short-lived TURN credentials), the secrets API (vault.js) and the reports API (reports.js), stored encrypted in Redis. Sees no key and no content. |
| TURN | coturn with use-auth-secret | Only when a direct connection fails. Credentials valid for 1 h; bytes are already encrypted. |
| CLI | cli/ (npm filenymous) | Reuses the ui/src code (protocol, Sharewall) in Node. |
| Extension | extension/ | Chrome MV3 (offscreen document) and Firefox MV2, same protocol. |
Holochain-era parts (dnas/, happ.yaml, web-happ.yaml, network/, push-server/, src-tauri/, filenymous-app.html) are still built by CI, for reference. The old multi-panel UI is still reachable at /app/#legacy. Obsolete notes are in docs/archive/.
cd ui && npm ci && npm run dev # http://localhost:5173
cd p2p-signal && npm ci && npm start # local relay ws://127.0.0.1:8789 (used by the UI on localhost)
cd ui && npm run build -- --base=/app/ # → ui/dist
cd ui && npx tsc --noEmit && npm test && npx playwright test # unit + e2e (the tests start a local relay)
cd p2p-signal && npm test # relay, secrets, reports, Sharewall
cd cli && npm run typecheck && npm test # CLI, incl. CLI⇄CLI, JSON Lines and MCP over a local relay
cd extension && npm run typecheck && npm test && npm run build # extension → dist/chrome, dist/firefox
On localhost the UI (signaling, secrets, reports) uses the local relay at 127.0.0.1:8789. The e2e tests start their own relay and point to it with window.__FILENYMOUS_SIGNAL_URL__ and window.__FILENYMOUS_VAULT_URL__.
Procedures, history and checks: docs/DEPLOYMENT.md. Secrets (SFTP passwords, tokens) are never committed: they live in GitHub Actions secrets or the environment.
deploy-ovh-ui.yml (ref). It builds with --base=/app/, then uploads over SFTP in merge mode, backing up every overwritten file to <folder>.bak-<timestamp>/ (scripts/deploy-ovh-sftp.mjs)..htaccess: ovh-htaccess.yml (inspect / apply / rollback / verify).deploy-filenymous-relay.yml in the openDPE repository (check / deploy). It installs p2p-signal from this repo with Redis, adds the no-access-log nginx blocks (reports, Sharewall), takes a backup, and rolls back automatically if the service does not come back healthy. See also p2p-signal/README.md.build.yml (web, relay, CLI, extension, Rust/DNA). release.yml creates a GitHub release on vX.Y.Z tags. pages.yml publishes the demo. The CLI is published to npm by hand from cli/.docs/SHAREWALL.md · cli/README.md · extension/README.md · p2p-signal/README.md · docs/DEPLOYMENT.md · docs/openapi-vault.yaml · docs/SEO_LLM_STRATEGY.md · docs/ROADMAP.md · CONTRIBUTING.md
License: MIT.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y filenymousMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-geoking2104-filenymous": {
"command": "npx",
"args": [
"-y",
"filenymous"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencefilenymousnpmFilenymous Sharewall works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.