Reference
Community vs Enterprise
What's in each tier, how licensing works, and how to enable EE features.
AskAIs Customer Service ships in two tiers: the Community Edition (CE, AGPL-3.0, free) and the Enterprise Edition (EE, commercial license). Both run from a single Docker image — the difference is whether the EE packages are installed and a valid LICENSE_KEY is configured.
Feature matrix
- CE: multi-tenant inbox, AI streaming, RAG, web widget, API, webhooks, Stripe billing, all native SDKs
- EE: SSO (SAML/OIDC), white-label, smart model routing, advanced reports (CSAT/SLA/cohorts), audit log export, source-available option
How EE gating works at runtime
- Sales signs a license with the License Server's Ed25519 private key (only stored on the License Server).
- Customer receives a token they put in
LICENSE_KEY. - On boot, the web app verifies the token signature with the matching public key (
LICENSE_PUBLIC_KEY) and decodes the feature list. - For each feature,
loadEeModule()tries to dynamically import the corresponding EE package. If the package isn't installed → CE fallback.
Generating keys (License Server operator)
pnpm tsx scripts/license-keygen.ts
# Output:
# LICENSE_PRIVATE_KEY="..." # keep on the License Server
# LICENSE_PUBLIC_KEY="..." # distribute to all self-hosted instancesSigning a license
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)Verifying a license (client-side)
Self-hosted instances can call the License Server to cross-check revocation status beyond the cached signature verification:
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
EE instances ping every 24 hours so we can warn customers about over-seat usage and track which versions are deployed for security advisories. Payload is small and includes only: hostname, version, active agent count.
POST /api/v1/license/heartbeat
{
"licenseKey": "...",
"hostname": "chat.acme.internal",
"version": "1.4.2",
"activeAgents": 23
}Trademark
AGPL grants source/code permissions but nottrademark rights. If you fork the CE and operate it as a service under a different brand, please rename the product. The "AskAIs Customer Service" name and logo are reserved for our own and our Commercial License holders' use.
FAQ
- Can I run CE without contacting the License Server at all?Yes — it's only contacted if you have
LICENSE_KEYset. No telemetry. - What happens if my license expires? EE features go dark (upgrade prompts shown), CE continues running as normal.
- Can I get source access to EE? Yes, on the Source-Available plan. See pricing.