Aloje o relay do Happier você mesmo: SSO, mTLS e a sua própria base de dados
O Happier tem licença MIT, e o relay por onde todos os dispositivos falam é um contentor que pode correr você mesmo. Esta página é a lista de controlos que vêm com ele — o que o servidor impõe, o que guarda, e o que entrega aos seus clientes em tempo de execução.
Vale a pena perceber o formato antes da lista. As sessões correm nos computadores dos seus programadores, contra as CLIs dos fornecedores que eles já têm. O relay leva mensagens entre esses computadores e os telemóveis, navegadores e desktops deles. É a única peça que tem de estar acessível a partir de fora, e é a peça que lhe estamos a pedir para alojar.
Tudo o que vem abaixo é configuração do servidor: variáveis de ambiente nesse contentor, aplicadas por esse contentor, sem nenhum serviço operado pelo Happier no caminho. A postura predefinida de um servidor novo é armazenamento encriptado de ponta a ponta e registo aberto, no pressuposto de que a maioria das pessoas o põe atrás do Tailscale. Se está a ler esta página, é quase certo que quer o oposto da segunda metade dessa frase.
O que essa predefinição encriptada significa por baixo — que chave é gerada onde, o que fica no seu relay, e as colunas que ele consegue ler sem uma chave — é a arquitetura de encriptação, escrita para o programador e não para si. É a página a enviar a quem perguntar o que é que o servidor consegue ver; esta fica-se pelo que você pode impor.
SSO: organizações do GitHub, grupos OIDC e certificados de cliente
A identidade é delegada no que já tem a correr. O trabalho do Happier é impô-la em cada pedido, e não apenas no registo, e continuar a perguntar.
- Exija um fornecedor de identidade, verificado de novo em cada pedido
- O registo anónimo está ativo por predefinição porque a maioria de quem aloja o relay põe-no atrás do Tailscale e fica por aí. Desligue-o e exija antes um fornecedor de identidade, e a elegibilidade passa a ser aplicada em todas as rotas HTTP autenticadas e no handshake em tempo real — não só à porta de entrada. Um pedido de alguém que já não qualifica é recusado, não é despromovido.
- Início de sessão pelo GitHub, restrito às suas organizações
- Permita logins específicos, ou exija pertença a uma ou mais organizações do GitHub, correspondendo a qualquer uma ou a todas elas. O caminho recomendado verifica a pertença através de uma GitHub App em vez do token OAuth do próprio utilizador, para que o acesso não sobreviva a um programador revogar o consentimento — e não se quebre quando ele o faz.
- Início de sessão único por OIDC, com regras de permissão por fornecedor
- Okta, Entra ID, Auth0, Keycloak, qualquer coisa com um documento de descoberta. Cada fornecedor tem as suas próprias regras de permissão: uma lista de logins permitidos, domínios de e-mail autorizados, grupos a que o utilizador tem de pertencer a pelo menos um, grupos a que tem de pertencer a todos. Se o seu IdP omitir os grupos do token e devolver antes um ponteiro de excesso, o Happier trata o utilizador como não elegível em vez de o tratar como sem grupos.
- Certificados de cliente mTLS a partir do seu MDM
- Termine o mTLS no seu proxy inverso e encaminhe uma identidade verificada para o Happier. Mapeie-a a partir do e-mail SAN ou do UPN SAN do certificado, para que um dispositivo que rode o certificado continue a ser a mesma pessoa, e restrinja-a com listas de emissores e domínios de e-mail permitidos. Os certificados desconhecidos são rejeitados a menos que tenha ativado deliberadamente o aprovisionamento automático.
- Saída de colaboradores: pertença verificada de novo no intervalo que definir
- A pertença é verificada de novo num intervalo que define — diariamente por predefinição, até ao minuto — e o resultado fica em cache no registo de identidade. A definição interessante é o que acontece quando o seu IdP está inacessível: permissiva por predefinição, ou estrita, em que o servidor falha fechado em vez de deixar uma verificação de elegibilidade desatualizada substituir uma verificação em tempo real.
Política de armazenamento, retenção e a base de dados que você aloja
Os controlos pelos quais um auditor pergunta a seguir, depois de ter acabado com a autenticação.
- Três políticas de armazenamento, e a predefinida é a estrita
- Apenas encriptado de ponta a ponta, que rejeita escritas em texto simples e é o que um servidor novo faz. Opcional, em que uma conta ou uma sessão decide. Ou apenas texto simples, para organizações que gerem a encriptação na camada de infraestrutura e querem indexação do lado do servidor — uma troca real, dita com clareza: nessa definição o servidor consegue ler o conteúdo guardado.
- Janelas de retenção que define, aplicadas sem ler uma transcrição
- Desligado por predefinição: não defina nada e o servidor guarda as sessões para sempre. Ligue-o e a regra das sessões é conservadora de propósito — uma árvore de sessão só é eliminada quando está inativa segundo a flag persistida, mais antiga do que o limite em dois carimbos temporais distintos, e não é observada como ativa em memória, com o limite verificado de novo dentro da transação de eliminação. Nunca precisa de desencriptar uma transcrição para decidir.
- Desligue funcionalidades para toda a gente de uma vez
- Voz, social, envios de relatórios de erro, anexos, o terminal embebido, a transferência de sessões, os serviços ligados, os medidores de quota — cada um é uma variável de ambiente no servidor, anunciada aos clientes em tempo de execução. Os clientes adaptam-se ao que o servidor diz estar disponível, por isso uma capacidade desativada está ausente da interface em vez de estar presente e a falhar.
- Limites de taxa e um endpoint de diagnóstico que controla
- Um limitador global mais limites por rota, cada um com a sua própria janela e uma estratégia de chave à sua escolha — por IP, ou por utilizador com recurso ao IP, que é o que quer quando cem programadores partilham um endereço de saída de VPN. O instantâneo de diagnóstico do servidor está desligado até o ativar, e é apenas para o owner quando o ativa.
- Uma imagem Docker, com SQLite ou Postgres por trás
- A imagem publicada do relay-server corre com um utilizador não-root, com a interface web embebida, usa SQLite por predefinição num único volume montado, e aceita uma configuração Postgres documentada. O MySQL também funciona, a partir de uma imagem construída da fonte — a imagem pré-construída deixa esse cliente de fora deliberadamente. Fixe uma tag imutável; a imagem não se atualiza sozinha.
Se a sua organização tem retenção zero de dados
Se está a ler esta página, é possível que já tenha batido nesta parede pelo outro lado. A própria documentação do Remote Control da Anthropic é explícita: as organizações com requisitos de conformidade como Zero Data Retention não o podem ativar. Nesse estado, a opção na consola de administração do Claude Code está a cinzento, por isso não é algo que um Owner possa decidir de forma diferente. Também não está disponível no Amazon Bedrock, na Agent Platform da Google Cloud e no Microsoft Foundry, e é desativado quando o tráfego é apontado a um gateway de LLM em vez de api.anthropic.com.
Nada disto é uma crítica. O Remote Control mantém a transcrição da sessão em servidores da Anthropic para a poder sincronizar entre os seus dispositivos, e uma organização que contratou retenção zero excluiu isso, e bem. É simplesmente uma resposta diferente a uma pergunta diferente, e se a sua organização estiver nessa posição, um relay que aloja você mesmo é o formato de resposta que resta.
O que a aquisição recebe: uma licença MIT e uma imagem de contentor
MIT. Não é source-available, não é open-core com a camada de autenticação atrás de um plano comercial, não é AGPL. Tudo o que está nesta página está no mesmo repositório que o cliente, sob a mesma licença, e nada disto depende de um contrato connosco. Se a política da sua organização for que o copyleft não entra em casa, essa política não é travada aqui.
Nenhum dos controlos acima está atrás de uma compra: não há nenhum plano empresarial para comprar nem contagem de lugares para negociar por nenhum deles. Consoante o seu processo de aquisição, essa é a parte tranquilizadora desta página ou a parte preocupante. O que recebe em vez disso é o código-fonte, uma licença MIT e uma imagem de contentor.
Levante um relay de teste e verifique o que ele impõe
A ordem honesta é: levante o relay numa máquina descartável, aponte-lhe um programador, e leia GET /v1/features para ver exatamente o que esse servidor está a anunciar aos clientes dele. Essa resposta é o contrato, e é a forma mais rápida de confirmar que uma política que definiu é uma política que os clientes vão de facto respeitar.
curl -fsSL https://happier.dev/install | bashO guia de implantação com Docker cobre a imagem, o volume e a configuração alternativa com Postgres. A referência de autenticação do servidor cobre todas as variáveis nomeadas acima, incluindo as receitas para um servidor público que exija GitHub ou um fornecedor OIDC.

