Translation BYOK: assisted setup flow for self-hosters using their own DeepL account #1
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#1
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?
Problem
Translation (DeepL) cannot be Free-tier without either CF absorbing per-character costs or the user providing their own DeepL key. The tension:
The BYOK gap
Standard BYOK assumes a technically capable user who knows what an API key is. That's not the primary linnet translation audience. Asking a non-technical user to "enter your DeepL API key" without guidance is a soft failure — the feature exists but is inaccessible in practice.
Two onboarding paths
The setup flow should detect which path the user wants and offer both at the entry point.
Path A: Guided (non-technical users)
When the user first enables translation on a Free account:
The flow should feel like onboarding, not configuration. No jargon. No assumed knowledge. Completable on a phone screen without leaving the app.
Path B: Developer / self-hoster
For users who already have a key or are deploying linnet programmatically:
DEEPL_API_KEYenvironment variable — picked up automatically, no UI required~/.config/circuitforge/linnet.yamlkey (translation.deepl_api_key) — persistent, survives restarts--deepl-key <key>— for scripted/automated useThe developer path should be documented in the README and the self-hosting guide. No wizard friction for users who know what they're doing.
Path detection
At first translation use, linnet checks in order:
Tier paths
Design constraints
What NOT to do
Related
has_byokabstraction needs per-service variant (has_byok_translation) — file separately on circuitforge-core