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 | bashLes 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.
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.
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.
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.
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.
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.
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 CLASSIQUE | n3t | |
|---|---|---|
| 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. |
| Commande | Ce que ça fait |
|---|---|
curl -fsSL https://n3t.ai/install.sh | bash | Installe n3t et n3t-agent (macOS/Linux). Windows : irm https://n3t.ai/install.ps1 | iex. |
n3t login | Démarre l'agent, le relance au boot, ouvre Google. L'email est l'identité. --force pour changer de compte. |
n3t status · n3t version · n3t rollback | Mesh, machines, proxies de sortie, mises à jour. Rollback restaure l'agent N-1. |
n3t create ringover | Crée ton workspace. Tu en es le premier membre. |
n3t members · n3t invite · n3t revoke | Qui est dedans. L'invité voit tous les partages. Revoke coupe les sessions ouvertes. |
n3t use ringover | Fixe le workspace pour ne plus le répéter. Ou un fichier .n3t dans le repo. n3t use --clear. |
n3t ports | Listeners locaux, type détecté. Tu choisis quoi exposer. |
n3t share 5432 | LAN sur le mesh : http://machine.ringover.n3t.ai:5432 dans un navigateur normal. unshare pour arrêter. share all relaie Bonjour. |
n3t ls | Catalogue partagé (mesh) et internet, par workspace. Le filtre matche nom, machine, kind. |
n3t routes | Routes 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 8080 | Proxy de sortie sur le mesh : SOCKS5 ou HTTP/HTTPS CONNECT. Les autres machines sortent par celle-ci. |
n3t publish 3000 | Internet, 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 chat | Fichier ou dossier éphémère (10 min), réclamation avec get --list / --id. Chat live, sans historique. |
n3t mcp · n3t mcp install · n3t setup postgres | Claude Code / Cursor voient le schéma, jamais le mot de passe. |
$ 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.