Register cf-voice model via task assignments so Avocet Assignments UI can manage it #28
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#28
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?
Background
cf-orch #60 shipped the three-layer task-model assignment system and
POST /api/inference/task. The Avocet Assignments UI now lets operators assign models to product tasks cluster-wide.Spec:
circuitforge-plans/circuitforge-orch/superpowers/specs/2026-05-13-task-model-assignments-design.mdCurrent state
Linnet already integrates with cf-orch for session lifecycle:
app/config.pyreadsCF_ORCH_URLand uses the coordinator to allocate cf-voice sidecars per session. Theapp/api/audio.pyforwards audio chunks to the allocated cf-voice URL for SER (speech emotion recognition) inference.However, the specific voice model used by cf-voice is not managed through the assignment layer — it is selected by the cf-voice service itself (or by node catalog defaults).
What to do
1. Register
linnet.tone_annotationinassignments.yamlThis lets Avocet operators see which voice model is assigned to Linnet sessions and switch it without editing env vars or restarting containers.
2. Evaluate: should session allocation use the assigned model?
Currently cf-orch allocates a cf-voice sidecar by service type. With task assignments, the coordinator can look up
linnet.tone_annotationand prefer a node that has that specific model available. This improves placement accuracy when multiple nodes have different voice models loaded.If the coordinator session allocation path (
POST /api/sessionsor equivalent) can accept ataskparameter, plumb it through fromapp/api/sessions.py.3. Backwards compatibility
The existing cf-orch sidecar allocation flow is not affected if no task parameter is passed. Additions are opt-in.
Acceptance Criteria
assignments.yamlhaslinnet.tone_annotationentry with the correct model slugRelated
app/config.py(CF_ORCH_URL, CF_VOICE_URL)app/api/audio.py(cf-voice forwarding)app/api/sessions.py(session/sidecar allocation)circuitforge-plans/circuitforge-orch/superpowers/specs/2026-05-13-task-model-assignments-design.md