Referência
Community vs Enterprise
O que cada edição inclui, como funciona o licenciamento e como ativar os recursos EE.
O AskAIs Customer Service é fornecido em duas edições: a Community Edition (CE, AGPL-3.0, gratuita) e a Enterprise Edition (EE, licença comercial). Ambas são executadas a partir de uma única imagem Docker — a diferença está em se os pacotes EE estão instalados e uma LICENSE_KEY válida está configurada.
Matriz de recursos
- CE: caixa de entrada multilocatária, streaming de IA, RAG, widget web, API, webhooks, faturamento Stripe, todos os SDKs nativos
- EE: SSO (SAML/OIDC), white-label, roteamento inteligente de modelos, relatórios avançados (CSAT/SLA/coortes), exportação de log de auditoria, opção de código disponível
Como funciona o gating de EE em tempo de execução
- A equipe de vendas assina uma licença com a chave privada Ed25519 do License Server (armazenada apenas no License Server).
- O cliente recebe um token que coloca em
LICENSE_KEY. - Na inicialização, o web app verifica a assinatura do token com a chave pública correspondente (
LICENSE_PUBLIC_KEY) e decodifica a lista de recursos. - Para cada recurso,
loadEeModule()tenta importar dinamicamente o pacote EE correspondente. Se o pacote não estiver instalado → fallback para CE.
Gerar chaves (operador do License Server)
pnpm tsx scripts/license-keygen.ts
# Output:
# LICENSE_PRIVATE_KEY="..." # keep on the License Server
# LICENSE_PUBLIC_KEY="..." # distribute to all self-hosted instancesAssinar uma licença
LICENSE_PRIVATE_KEY="..." pnpm tsx scripts/license-sign.ts \
--email customer@acme.com \
--plan ENTERPRISE_PRO \
--agents 50 \
--days 365 \
--features sso,white-label,smart-model-routing
# Stdout: LICENSE_KEY="...." (paste into customer's .env)Verificar uma licença (lado do cliente)
Instâncias auto-hospedadas podem chamar o License Server para verificar o status de revogação além da verificação de assinatura em cache:
curl -X POST https://cs.askais.com/api/v1/license/verify \
-H "Content-Type: application/json" \
-d '{ "licenseKey": "..." }'
# Response:
# { "valid": true, "payload": { "plan": "ENTERPRISE_PRO", ... } }
# Or if revoked:
# { "valid": false, "reason": "revoked" }Heartbeats
As instâncias EE enviam um ping a cada 24 horas para que possamos alertar os clientes sobre uso acima do número de assentos e rastrear quais versões estão implantadas para avisos de segurança. A carga útil é pequena e inclui apenas: nome do host, versão, contagem de agentes ativos.
POST /api/v1/license/heartbeat
{
"licenseKey": "...",
"hostname": "chat.acme.internal",
"version": "1.4.2",
"activeAgents": 23
}Marca registrada
A AGPL concede permissões de fonte/código, mas nãodireitos de marca registrada. Se você fizer fork da CE e a operar como um serviço sob uma marca diferente, renomeie o produto. O nome e o logotipo "AskAIs Customer Service" são reservados para nosso próprio uso e o de nossos detentores de Licença Comercial.
Perguntas frequentes
- Posso executar a CE sem contatar o License Server? Sim — ele só é contatado se você tiver definido
LICENSE_KEY. Sem telemetria. - O que acontece se minha licença expirar? Os recursos EE são desativados (prompts de upgrade são exibidos), a CE continua funcionando normalmente.
- Posso obter acesso ao código-fonte do EE? Sim, no plano Source-Available. Veja preços.