Summary
We can start shipping the Replicated SDK as part of our existing Helm charts today, without waiting for the full Replicated Helm install migration. This enables license enforcement immediately for all customers.
Background
Currently we have two deployment paths:
- Regular Helm Install - Customer downloads chart, runs
helm install
- Replicated Helm Install (in progress) - Customer uses
helm install oci://registry.replicated.com/openhands/...
The assumption was that license enforcement requires the Replicated Helm install flow. This is incorrect.
Key Insight
The Replicated SDK is a standalone Helm subchart that:
- Deploys a small service at
http://replicated:3000
- Authenticates with Replicated's backend using a license ID
- Caches license data locally
- Exposes license/entitlement APIs
The "Replicated Helm install" is just a convenience that auto-injects the license ID. We can achieve the same result by having customers manually provide their license ID.
Proposed Approach
1. Add Replicated SDK as Subchart
# charts/openhands/Chart.yaml
dependencies:
- name: replicated
repository: oci://registry.replicated.com/library
version: 1.9.0
condition: replicated.enabled
2. Configure for Manual License ID
# charts/openhands/values.yaml
replicated:
enabled: true
integration:
enabled: true # SDK fetches license from Replicated backend
licenseID: "" # Customer MUST provide this
3. Customer Installation Flow
# Customer receives license ID from sales process (via Vendor Portal email)
# Install with license ID
helm install openhands ./openhands-chart \
--set replicated.integration.licenseID=abc123def456 \
--set replicated.integration.enabled=true
Migration Path
| Phase |
Install Method |
License Enforcement |
| Phase 1 (Now) |
Regular Helm + SDK subchart |
✅ Customer provides license ID |
| Phase 2 (Future) |
Replicated Helm install |
✅ License auto-injected |
Both phases use the same SDK API (http://replicated:3000), so application code doesn't change.
Benefits
- Immediate enforcement - Don't wait for Replicated Helm migration
- Same codebase - No special handling for "Replicated vs non-Replicated"
- Smooth migration - Phase 2 is just removing
--set flags
- Full SDK features - Custom metrics, instance tracking, entitlements all work
Open Questions
Q1: How do customers get their license ID?
- Vendor Portal sends email with license ID when customer is created (already supported)
Q2: What happens if customer doesn't provide license ID?
- SDK should start, app should check and enforce at runtime
Q3: What about airgapped/offline customers?
- SDK has airgap mode where license is provided as a file
Q4: Does this expose our license enforcement to bypass?
- No more than full Replicated install. With signature verification using our vendor public key, customers cannot forge license data.
Implementation Tasks
OpenHands-Cloud (Helm Charts)
OpenHands/OpenHands (Enterprise Server)
Related
This issue was created by an AI agent (OpenHands) on behalf of the user.
Summary
We can start shipping the Replicated SDK as part of our existing Helm charts today, without waiting for the full Replicated Helm install migration. This enables license enforcement immediately for all customers.
Background
Currently we have two deployment paths:
helm installhelm install oci://registry.replicated.com/openhands/...The assumption was that license enforcement requires the Replicated Helm install flow. This is incorrect.
Key Insight
The Replicated SDK is a standalone Helm subchart that:
http://replicated:3000The "Replicated Helm install" is just a convenience that auto-injects the license ID. We can achieve the same result by having customers manually provide their license ID.
Proposed Approach
1. Add Replicated SDK as Subchart
2. Configure for Manual License ID
3. Customer Installation Flow
Migration Path
Both phases use the same SDK API (
http://replicated:3000), so application code doesn't change.Benefits
--setflagsOpen Questions
Q1: How do customers get their license ID?
Q2: What happens if customer doesn't provide license ID?
Q3: What about airgapped/offline customers?
Q4: Does this expose our license enforcement to bypass?
Implementation Tasks
OpenHands-Cloud (Helm Charts)
replicatedsubchart dependency toChart.yamlreplicated.*values tovalues.yamlwith sensible defaultsreplicated.integration.licenseIDis providedOpenHands/OpenHands (Enterprise Server)
/api/license-statusendpoint for UIRelated
This issue was created by an AI agent (OpenHands) on behalf of the user.