Todo serviço é uma URL. O proxy é o como.
Um contêiner expõe todo serviço do Hoody Kit em sua própria URL HTTPS, além de um slug http-PORTA para qualquer coisa que você vincular. Portas, autenticação, TLS e IPs reais de clientes são todos resolvidos na camada de URL.
O proxy roda no seu bare metal. A Hoody vê chamadas de API de gerenciamento — o tráfego do contêiner nunca sai do seu servidor.
*.containers.hoody.com — wildcard TLS · no Certificate Transparency log exposure
Uma gramática, muitos padrões
Todo serviço Kit é resolvido pelo mesmo proxy, mas o slug da URL revela o que ele é. Mesma gramática, forma diferente por serviço.
| Serviço | Slug de URL | Observações |
|---|---|---|
| Workspaces | workspace-N | Camada de composição sobre outras URLs de serviço |
| Terminal | terminal-N | Shell por instância; mapeado para display-N |
| Display | display-N | Desktop GUI / X11 por instância |
| Browser | browser-N | Instância remota do Chrome |
| Code | code-N | Instância do VS Code por índice |
| Files | files | Singleton — sem índice de instância |
| SQLite | sqlite-N | Um slug por serviço de banco de dados |
| Exec | exec-N | Scripts como APIs |
| Agent | agent-N | Instância LLM por agente |
| cURL | curl-N | Proxy HTTP de saída |
| Daemon | hoody-daemon-N | Gerenciador de processos |
| Cron | — (via cURL hoje) | Serviço placeholder; o agendamento fica no cURL |
| Notifications | n-N · notification-server-N | Bridge de browser + API |
| Pipe | — (via outros serviços) | Serviço placeholder; streaming distribuído entre Files/Terminal/Exec |
Projeto 24-hex × contêiner 24-hex = 2^192 combinações de pares. Inviável de força bruta.
Rode um servidor em qualquer porta. Ele recebe uma URL.
Os prefixos http-PORTA roteiam o proxy para a porta interna do seu contêiner. Sem bloco de servidor nginx. Sem YAML de 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
— Portas do Hoody-kit são reservadas para os próprios serviços da plataforma; tudo o mais é seu. No lado do app, vincule em qualquer porta e exponha via http-PORTA.
— Os apps devem vincular em 0.0.0.0, não em localhost — o socket precisa ser acessível a partir do contêiner do proxy.
— Faz proxy de HTTP/1.1, HTTP/2, HTTP/3 e WebSocket de ponta a ponta. UDP arbitrário de usuário não é roteado — use um IPv4 dedicado se precisar de UDP puro.
A autenticação é uma política JSON, não middleware de aplicação.
O proxy valida claims JWT, hashes de senha, faixas de IP CIDR e bearer tokens antes de uma requisição chegar ao seu contêiner. Seu app fica padrão.
{
"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 · validação de claims
Senha
HTTP Basic · SHA-256 + salt · incorporável em URL
IP
Correspondência de CIDR IPv4 · IP real do cliente no nível do socket
Bearer Token
Múltiplos tokens por grupo · amigável para API
As permissões no nível do contêiner substituem as permissões no nível do projeto — elas não se mesclam. Defina ambos os escopos explicitamente se depender de herança.
URLs memoráveis sobre URLs criptográficas
Uma chamada de API transforma a URL criptográfica em api.minhaempresa.com. A provisão do Let's Encrypt acontece em 30–60 segundos; renova a cada 90 dias.
https://67e89abc…-890abcdef…-http-4000.node-us.containers.hoody.com
https://api.mycompany.com
Nomenclatura de alias: 3–61 caracteres, alfanumérico minúsculo com hífens, deve começar e terminar com letra ou número. Aliases gerados automaticamente têm 48 caracteres em hex.
O que você teria que montar por conta própria
O proxy substitui um stack que a maioria das equipes monta do zero: proxy reverso + gerenciador de certificados + VPN ou túnel + auth por app + log de auditoria. Os axiomas que a coluna self-hosted falha — URL como rota, URL como escopo de auth, URL como incorporável — são o que o proxy fornece nativamente.
| Necessidade | Hoody Proxy | Equivalente self-hosted |
|---|---|---|
| HTTPS curinga | suportado nativamente — Nativo | certbot + cron de renovação + rotação de cert |
| Roteamento para porta interna | suportado nativamente — Nativo | bloco de servidor nginx por serviço |
| IP real do cliente | suportado nativamente — Nativo | Analisar X-Forwarded-For por app |
| JWT · Basic · IP · Token auth | suportado nativamente — Nativo | Middleware por app + libs de sessão |
| Domínio personalizado + TLS | suportado nativamente — Nativo | Cloudflare / DNS-01 / reload do nginx |
| Auditoria centralizada de requisições | suportado nativamente — Nativo | logs do nginx + shipper de logs + indexação |
| URLs incorporáveis em iframe | suportado nativamente — Nativo | CORS / CSP / TLS manual por app |
| Roda no seu hardware | suportado nativamente — Nativo | Você mesmo roda de qualquer forma |
Se você já está no Kubernetes com um controlador de ingress, Cloudflare Tunnels para SSO com Okta, ou Tailscale para acesso privado L3, essas ferramentas continuam sendo melhores em seus nichos específicos. O proxy ganha seu espaço quando você quer serviços de contêiner endereçáveis por URL como abstração primária.
Seis fluxos de trabalho que o modelo URL-first torna triviais
Baseado em padrões que equipes realmente implantam com o Hoody Proxy.
Implante uma API sem proxy reverso
Vincule em 0.0.0.0:4000. Obtenha http-4000.SERVER.containers.hoody.com. Pule o nginx, o cert e a dança do DNS.
Domínio personalizado com TLS automático
POST /api/v1/proxy-aliases, defina um CNAME, e a primeira requisição provisiona o Let's Encrypt em 30–60 segundos.
Blue/green via troca de alias
Aponte api.empresa.com para o contêiner B, teste, troque o alias de volta. Sem reload de config, sem downtime.
Dê a um agente de IA um contêiner para operar
O agente recebe um JWT, o proxy valida por requisição, o agente escreve arquivos, executa comandos, consulta o sqlite via HTTPS.
Subdomínios multi-tenant para SaaS
Um contêiner por tenant; alias TENANT.seuapp.com. Isolamento de tenant aplicado na camada de URL.
Revogação instantânea
Uma chamada DELETE para o Control Plane e a URL fica inativa em menos de um segundo. Sem envenenamento de cache.
Sua primeira URL está a uma chamada de API de distância.
Crie um projeto, crie um contêiner, e todo serviço já está online. Sem infraestrutura para configurar antes.
Veja também — /platform/control-plane para as APIs de alias de proxy, permissão e logs.