Safe network for AI.

Un sous-réseau privé dynamique pour ton équipe — chiffré de bout en bout, vivant, découpé projet par projet. Tes ports, tes bases, tes machines : joignables par ton équipe et tes agents, et par personne d'autre.

curl -fsSL https://n3t.ai/install.sh | bash
Voir la démo
ludo@mbp — n3t
n3t.ai compatible pare-feu · rien à ouvrir

FONCTIONNEMENT

Pourquoi ça passe tous les pare-feux

Les deux machines ouvrent la connexion elles-mêmes, donc il n'y a jamais de flux entrant qu'un pare-feu pourrait bloquer — et aucun agent n'accepte de connexion venant de l'extérieur du réseau. Quand un chemin direct entre deux machines est possible, il s'établit tout seul ; quand il échoue, un relay porte le trafic, et la différence reste invisible.

ludo-mbp derrière un NAT db-prod-01 pare-feu fermé relay chiffré sortant sortant aucune règle de pare-feu à ouvrir, des deux côtés

CLAUDE + n3t

Claude n'entre pas sur le réseau. Il parle à un process local.

n3t mcp install --client claude-code enregistre un serveur MCP local. Claude Code lance n3t mcp en stdio sur ton laptop. Ce process parle à n3t-agent via un socket Unix. Le mot de passe, le DSN et tout .env restent hors de ce chemin.

Claude Code stdio MCP schéma, lignes n3t mcp ton laptop socket Unix :5432 postgres machine partagée mot de passe ici local mesh le SQL ne passe jamais par n3t-server. Le control plane n'est pas sur ce chemin.
MOT DE PASSE

Il ne quitte pas la machine qui share

Référencé en file:/chemin ou env:VAR, jamais dans l'état signé, jamais sur le laptop qui a posé la question. C'est n3t-agent, là-bas, qui ouvre Postgres. Claude reçoit des lignes, pas un DSN. Un .env côté client est exactement le fichier qu'un agent lit sans demander.

RÉSEAU

Le mesh du projet, pas Internet

Les requêtes empruntent le même sous-réseau privé que tes collègues (100.64), chiffré de bout en bout. Rien n'est ouvert en entrée. Si le type du service est inconnu, les agents sont refusés — un port deviné n'est pas une base.

PÉRIMÈTRE

Le répertoire est la limite

Une session Claude Code dans un repo avec .n3t ne voit que ce projet. Staging ne voit pas la prod. L'agent hérite de l'appartenance, en lecture seule, et chaque requête est dans le journal.

LECTURE SEULE

Postgres l'impose, pas nous

On ne parse pas le SQL. n3t setup postgres sort un rôle avec default_transaction_read_only. Les écritures meurent dans le moteur. C'est plus solide qu'un regex sur DELETE.

COMPARÉ À UN VPN CLASSIQUE

Un VPN répond à une seule question : cette personne a-t-elle le droit d'être sur le réseau. Une fois dedans, elle atteint tout ce que le réseau route — et personne ne détient la liste de ce que ça représente.

VPN CLASSIQUEn3t
PÉRIMÈTRE Tu es dans le tunnel, donc tu atteins tout ce qui est routé en face. Uniquement les cibles des projets dont tu es membre. Un port à la fois.
DONNER / RETIRER Un ticket, une règle de pare-feu, des clés SSH qui restent. n3t share, n3t invite, n3t revoke — y compris les connexions déjà ouvertes.
SECRETS Des .env copiés sur des laptops. Le secret ne quitte jamais la machine qui expose. L'agent reçoit un accès, pas un mot de passe.
AGENTS IA L'agent hérite de tout ton tunnel, plus tes fichiers. Il hérite du projet où il tourne, en lecture seule, et chaque requête est dans le journal.

COMMANDES

CommandeCe que ça fait
curl -fsSL https://n3t.ai/install.sh | bashInstalle n3t et n3t-agent (macOS/Linux). Windows : irm https://n3t.ai/install.ps1 | iex.
n3t loginDémarre l'agent, le relance au boot, ouvre Google. L'email est l'identité. --force pour changer de compte.
n3t status · n3t version · n3t rollbackMesh, machines, proxies de sortie, mises à jour. Rollback restaure l'agent N-1.
n3t create ringoverCrée ton workspace. Tu en es le premier membre.
n3t members · n3t invite · n3t revokeQui est dedans. L'invité voit tous les partages. Revoke coupe les sessions ouvertes.
n3t use ringoverFixe le workspace pour ne plus le répéter. Ou un fichier .n3t dans le repo. n3t use --clear.
n3t portsListeners locaux, type détecté. Tu choisis quoi exposer.
n3t share 5432LAN sur le mesh : http://machine.ringover.n3t.ai:5432 dans un navigateur normal. unshare pour arrêter. share all relaie Bonjour.
n3t lsCatalogue partagé (mesh) et internet, par workspace. Le filtre matche nom, machine, kind.
n3t routesRoutes mesh comme ip route. n3t route add 8.8.8.8 --via machine / route del via un proxy de sortie.
n3t sock 1080 · n3t proxy 8080Proxy de sortie sur le mesh : SOCKS5 ou HTTP/HTTPS CONNECT. Les autres machines sortent par celle-ci.
n3t publish 3000Internet, HTTP par défaut. --udp pour un port public dédié. Séparé de share, pour ne pas publier une base par erreur. unpublish pour arrêter.
n3t file ./dist · n3t get · n3t chatFichier ou dossier éphémère (10 min), réclamation avec get --list / --id. Chat live, sans historique.
n3t mcp · n3t mcp install · n3t setup postgresClaude Code / Cursor voient le schéma, jamais le mot de passe.

DÉMARRER

$ curl -fsSL https://n3t.ai/install.sh | bash
$ n3t login
      ✓ ludx@eternite.org · the agent joins the mesh
          projects: eternite

$ n3t ports
  process        bind          port    kind        shared   note
  postgres       127.0.0.1     5432    postgres
  Ringover       0.0.0.0       3000    http                 listening on all interfaces

$ n3t share 3000
sharing http://macbook-ludo.eternite.n3t.ai:3000
  http · web

$ n3t sock 1080
sharing macbook-ludo.eternite.n3t.ai:1080
  socks · exit proxy
  other machines: SOCKS5 macbook-ludo.eternite.n3t.ai:1080

$ n3t proxy 8080
sharing macbook-ludo.eternite.n3t.ai:8080
  http-proxy · exit proxy
  other machines: HTTP/HTTPS proxy macbook-ludo.eternite.n3t.ai:8080

$ n3t file ./dump.sql
✓ offered dump.sql (482193 bytes) for 10 minutes
id 8f2c1a9e
from ludx@macbook-ludo/eternite
announced to 4 machines

$ n3t get --list
8f2c1a9e  ludx@macbook-ludo/eternite  file  dump.sql  482193 bytes

$ n3t get --id 8f2c1a9e
✓ received /Users/kev/dump.sql

$ n3t ls
eternite.n3t.ai
  shared
   ├─ api-1.eternite.n3t.ai:8080  http  deploy@api-1  web
   ├─ db-prod.eternite.n3t.ai:5432  postgres  deploy@db-prod  database
   ├─ kev-mbp.eternite.n3t.ai:5173  http  kev@kev-mbp  web
   ├─ macbook-ludo.eternite.n3t.ai:1080  socks  ludx@macbook-ludo  exit proxy
   ├─ macbook-ludo.eternite.n3t.ai:3000  http  ludx@macbook-ludo  web
   ├─ macbook-ludo.eternite.n3t.ai:8080  http-proxy  ludx@macbook-ludo  exit proxy
   └─ studio.eternite.n3t.ai:3000  http  lea@studio  web

Open source. Agent Apache-2.0, serveur AGPL. La spec est dans le dépôt.