feat: Heimdall license integration (LNNT key format) #16
Labels
No labels
a11y
backlog
blocked
bug
cf-core-dep
design
enhancement
infrastructure
internal
privacy
tier:free
tier:paid
ux
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Circuit-Forge/linnet#16
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wire Linnet to the Heimdall license server for tier enforcement.
Requirements:
CFG-LNNT-XXXX-XXXX-XXXX/validate(standard across all CF products)Implemented
app/tiers.py— replaced naive prefix check with real Heimdall validation:LINNET_LICENSE_KEY→/v1/licenses/verifyuser_idfromX-CF-Session→/admin/cloud/resolve(requiresHEIMDALL_ADMIN_TOKEN)require_paid(byok_deepl=True)skips gate for BYOK translation pathapp/api/sessions.py—POST /session/startandGET /session/{id}now resolve and returntierin responseapp/config.py— addedHEIMDALL_ADMIN_TOKENandLINNET_LICENSE_KEYsettingscompose.cloud.yml— updated env var docs; clarified that cloud mode uses admin token, not per-instance keytests/test_tiers.py— 17 tests covering both paths, caching, BYOK bypass, and error handling; all 52 suite tests passing