Chaque service est une URL. Le proxy, c'est comment.
Un conteneur expose chaque service Hoody Kit à sa propre URL HTTPS, plus un slug http-PORT pour tout ce que vous liez vous-même. Les ports, l'auth, TLS et les vraies IP client se résolvent au niveau URL.
Le proxy s'exécute sur votre bare metal. Hoody voit les appels à l'API de gestion — le trafic des conteneurs ne quitte jamais votre serveur.
*.containers.hoody.com — wildcard TLS · no Certificate Transparency log exposure
Une grammaire, de nombreux motifs
Chaque service Kit se résout via le même proxy, mais le slug URL révèle ce qu'il est. Même grammaire, forme différente par service.
| Service | Slug URL | Notes |
|---|---|---|
| Workspaces | workspace-N | Couche de composition au-dessus d'autres URLs de service |
| Terminal | terminal-N | Shell par instance ; correspond à display-N |
| Display | display-N | Bureau GUI / X11 par instance |
| Browser | browser-N | Instance Chrome distante |
| Code | code-N | Instance VS Code par index |
| Files | files | Singleton — pas d'index d'instance |
| SQLite | sqlite-N | Un slug par service de base de données |
| Exec | exec-N | Scripts en tant qu'APIs |
| Agent | agent-N | Instance LLM par agent |
| cURL | curl-N | Proxy HTTP sortant |
| Daemon | hoody-daemon-N | Gestionnaire de processus |
| Cron | — (via cURL aujourd'hui) | Service placeholder ; la planification vit dans cURL |
| Notifications | n-N · notification-server-N | Pont navigateur + API |
| Pipe | — (via d'autres services) | Service placeholder ; streaming distribué entre Files/Terminal/Exec |
Projet 24 hex × conteneur 24 hex = 2^192 combinaisons de paires. Impossible à forcer par brute-force.
Lancez un serveur sur n'importe quel port. Il obtient une URL.
Les préfixes http-PORT routent le proxy vers le port interne de votre conteneur. Pas de bloc serveur nginx. Pas de YAML d'ingress.
# listening sockets
$ ss -ltnp
https://PROJECT_ID-CONTAINER_ID-http-4000.SERVER.containers.hoody.com
https://PROJECT_ID-CONTAINER_ID-http-5173.SERVER.containers.hoody.com
https://PROJECT_ID-CONTAINER_ID-http-7070.SERVER.containers.hoody.com
— Les ports Hoody-kit sont réservés pour les propres services de la plateforme ; tout le reste est le vôtre. Du côté app, liez sur n'importe quel port et exposez-le via http-PORT.
— Les apps doivent se lier à 0.0.0.0, pas à localhost — le socket doit être accessible depuis le conteneur proxy.
— Proxifie HTTP/1.1, HTTP/2, HTTP/3 et WebSocket de bout en bout. L'UDP utilisateur arbitraire n'est pas routé — utilisez une IPv4 dédiée si vous avez besoin d'UDP brut.
L'auth est une politique JSON, pas un middleware d'application.
Le proxy valide les claims JWT, les hachages de mots de passe, les plages IP CIDR et les bearer tokens avant qu'une requête atteigne votre conteneur. Votre app reste vanilla.
{
"enable_proxy": true,
"default": "deny",
"groups": {
"dashboard": {
"type": "jwt",
"algorithm": "HS256",
"source": "header",
"key": "Authorization",
"secret": "<hmac-secret>",
"claims": { "role": ["admin", "viewer"] }
},
"office-only": {
"type": "ip",
"cidrs": ["203.0.113.0/24"]
}
},
"permissions": {
"dashboard": { "http": [4000, 5173] },
"office-only": { "ssh": true, "terminal": true }
}
}JWT
HS256 · RS256 · ES256 · header / cookie / query · validation des claims
Mot de passe
HTTP Basic · SHA-256 + sel · intégrable dans l'URL
IP
Correspondance IPv4 CIDR · IP client réelle au niveau socket
Bearer Token
Plusieurs tokens par groupe · compatible API
Les permissions au niveau conteneur remplacent les permissions au niveau projet — elles ne fusionnent pas. Définissez explicitement les deux portées si vous comptez sur l'héritage.
URLs mémorables au-dessus des URLs cryptographiques
Un appel API transforme l'URL crypto en api.macompagnie.com. Let's Encrypt provisionne en 30 à 60 secondes ; renouvelle tous les 90 jours.
https://67e89abc…-890abcdef…-http-4000.node-us.containers.hoody.com
https://api.mycompany.com
Nommage des alias : 3 à 61 caractères, alphanumériques minuscules plus tirets, doit commencer et finir par une lettre ou un chiffre. Les alias auto-générés sont en hex 48 caractères.
Ce que vous auriez sinon à assembler
Le proxy remplace une pile que la plupart des équipes assemblent from scratch : reverse proxy + gestionnaire de certificats + VPN ou tunnel + auth par app + journal d'audit. Les axiomes que la colonne auto-hébergée échoue à respecter — URL-comme-route, URL-comme-portée-d'auth, URL-comme-intégrable — sont ce que le proxy fournit nativement.
| Problématique | Hoody Proxy | Équivalent auto-hébergé |
|---|---|---|
| HTTPS wildcard | supporté nativement — Natif | certbot + cron de renouvellement + rotation de cert |
| Routage vers port interne | supporté nativement — Natif | Bloc serveur nginx par service |
| IP client réelle | supporté nativement — Natif | Parser X-Forwarded-For par app |
| Auth JWT · Basic · IP · Token | supporté nativement — Natif | Middleware par app + libs de session |
| Domaine personnalisé + TLS | supporté nativement — Natif | Cloudflare / DNS-01 / rechargement nginx |
| Audit centralisé des requêtes | supporté nativement — Natif | Logs nginx + expéditeur de logs + index |
| URLs intégrables en iframe | supporté nativement — Natif | CORS / CSP / TLS manuel par app |
| S'exécute sur votre hardware | supporté nativement — Natif | Vous le gérez vous-même de toute façon |
Si vous êtes déjà sur Kubernetes avec un contrôleur d'ingress, Cloudflare Tunnels pour le SSO vers Okta, ou Tailscale pour l'accès privé L3, ces outils restent meilleurs pour leurs niches spécifiques. Le proxy trouve sa place quand vous voulez des services de conteneurs adressables par URL comme abstraction principale.
Six workflows que le modèle URL-first rend triviaux
Tirés des patterns que les équipes déploient réellement avec Hoody Proxy.
Déployer une API sans reverse proxy
Liez à 0.0.0.0:4000. Obtenez http-4000.SERVER.containers.hoody.com. Évitez l'orchestration nginx, cert et DNS.
Domaine personnalisé avec TLS auto
POST /api/v1/proxy-aliases, définissez un CNAME, et la première requête provisionne Let's Encrypt en 30 à 60 secondes.
Blue/green via swap d'alias
Pointez api.company.com vers le conteneur B, testez, remettez l'alias. Pas de rechargement de config, pas d'interruption.
Donner à un agent IA un conteneur à piloter
L'agent obtient un JWT, le proxy valide par requête, l'agent écrit des fichiers, exécute des commandes, interroge sqlite via HTTPS.
Sous-domaines SaaS multi-tenant
Un conteneur par tenant ; alias TENANT.votrapp.com. L'isolation des tenants appliquée au niveau URL.
Révocation instantanée
Un appel DELETE au Control Plane et l'URL est morte en une seconde. Pas d'empoisonnement de cache.
Votre première URL est à un appel API.
Créez un projet, créez un conteneur, et chaque service est déjà en ligne. Pas d'infrastructure à monter au préalable.
Voir aussi — /platform/control-plane pour les APIs d'alias proxy, de permissions et de logs.