Commercial Model
Open-core packaging, tiers, and commercial licensing model.
Open-core split
| Layer | License | Delivery | Content |
|---|---|---|---|
| Core engine | Apache-2.0 | pip install agentrust-sdk | Validation engine, embedded gateway, OSS/Free tier, kill-switch, retry, OTel hooks, CLI, hash-chain audit |
| Framework adapters | Proprietary | pip install agentrust-sdk[langgraph,crewai] | LangGraph AgentTrustNode, CrewAI AgentTrustCallback — runtime tier-gated |
| Advanced analytics & review | Proprietary | Gateway feature flag | Dashboard analytics, human review queue, risk trend charts |
| Enterprise | Enterprise contract | Self-hosted gateway + optional managed | SSO/SAML, multi-tenant, SLA, SOC2 export, dedicated support |
Everything in the apache-core tag in this repository is Apache-2.0.
Framework adapters live in the same repo for developer convenience but are
runtime-gated by JWT tier claim — they will not execute without a valid
Team+ API key.
Tier enforcement
Enforcement happens in two places:
-
SDK-side (client-only, honour-system for local dev):
agentrust_sdk/tiers.py—is_allowed(capability, tier)gates adapter construction. Without a valid API key the tier defaults toOSS. -
Gateway-side (authoritative when
AUTH_ENABLED=true):middleware/auth.py— parses and verifies the JWT; returns 403 if the requested capability is not in the token's tier claim.
For self-hosted deployments with AUTH_ENABLED=false (local dev only), the
gateway accepts all requests. Never run AUTH_ENABLED=false in production.
License validation (roadmap — not yet implemented)
The recommended mechanism for paid tier enforcement is:
-
Signed JWT with short TTL (1 hour) issued by
https://auth.agentrust.io. Payload:{ "org_id", "tier", "agent_quota", "exp" }. -
Optional hourly heartbeat to
https://auth.agentrust.io/v1/heartbeat. On failure → degrade to Apache core (OSS/Free capabilities), never hard-break customer apps (unlessAGENTRUST_FAILURE_MODE=closed). -
Air-gap licence (Enterprise only): long-lived signed JWT (90 days) distributed out-of-band, validated locally with the vendor's public key.
This will be implemented in a future release. Track: GitHub issue: License server + signed JWT heartbeat
Proprietary adapter packaging (future)
To ship adapters as a separate proprietary wheel:
- Move
agentrust_sdk/agentrust_sdk/adapters/to a private repository. - Publish as
agentrust-sdk-enterpriseon a private PyPI index. - Replace the adapter imports in the open-core
__init__.pywith:try: from agentrust_sdk_enterprise.adapters.langgraph import AgentTrustNode except ImportError: raise RuntimeError("LangGraph adapter requires agentrust-sdk-enterprise. " "See agentrust.io/upgrade")
Until then, adapters ship in the open repo with runtime tier gating only.
OSS vs paid operational model
| Concern | Open source (self-host) | Paid (managed) |
|---|---|---|
| Who runs Postgres/Redis | Customer | Vendor |
| Upgrades | Customer CI/CD + Helm | Vendor rollout |
| Support | Community / GitHub issues | SLA |
| Billing | Infrastructure cost only | Per-seat or per-validation MAU |
| Data residency | Customer VPC | Vendor region + DPA |
Positioning: "Apache core you can run forever; paid tiers add adapters, analytics, and ops burden removal."