This beta introduces Profiles, agent-manageable Goals, conjunctive runtime routing, and ecosystem skill sources. It also consolidates task delivery into one Loop and hardens session, profile, and Loop recovery.
⚡ Performance Improvements
- Delegate full gates to pull request CI (#476)
🎉 Features
- Profiles — the who-is-working dimension (#457)
- Combine settings update actions (#461)
- Replace environment path with worktree icon (#463)
- Group session tool calls (#466)
- Restore agent-manageable Goal orchestration (#470)
- Support conjunctive runtime routing (#475)
- Expand profile identity customization (#484)
- Absorb ecosystem skill folders and expose skills back (#488)
- Merge spec-cycle task delivery loops (#491)
🐛 Bug Fixes
- Close profiles regressions after PR 457 (#459)
- Make sessions dock contextual (#468)
- Classify settled spawned TTL cleanup correctly (#469)
- Restore reliable session message copy (#460)
- Add runtime provider tooltips (#464)
- Close windows when sessions are deleted (#465)
- Route command palette entities directly (#467)
- Preserve worktree binding during reconciliation (#456)
- Harden profile-scoped runtime and web flows (#481)
- Keep inactive loop routes out of task projection (#483)
- Harden Loop recovery and expose execution truth (#492)
- Publish npm packages with trusted identity (#495)
- Accept setup-node OIDC placeholder
- Preserve web assets in release module
- Remove npm token from release recovery
🧪 Testing
- Fix failing tests
Release Notes
Profiles add an explicit owner to work, Goals become manageable by agents, and Loops gain more precise routing and recovery. This beta also adopts ecosystem skill sources and consolidates task delivery under implement-tasks.
Breaking Changes
Update requests now use an ordered targets list
The update mutation now accepts targets instead of the singular target, so one operation can apply the Runtime update, the App update, or both in that order. The contract is consistent across HTTP, UDS, generated clients, Settings, and the desktop update flow. (#461)
- Valid values are
["runtime"],["app"], and["runtime", "app"]. - Empty lists, duplicates, reversed ordering, and the removed
targetfield are rejected. - Callers using the old field must migrate to
targets; there is no compatibility alias.
Ecosystem skill folders become managed sources
CompozyOS can discover skills from .agents/skills, optional .claude/skills, configured source roots, and installed extensions, then present them through one catalog with origin and exposure state. Skills can be exposed to other tools through managed links without copying their contents. (#488)
skills.sourcesselects supported ecosystem roots andskills.custom_sourcesadds explicit roots.- The built-in
compozysource is always active;agentsis enabled by default,claudeis opt-in, and custom sources default to an empty list. Existing.agents/skillslibraries are discovered after updating without a manual migration. compozy skill sources,expose, andunexposemanage discovery and exposure through the CLI, with matching API and native-tool reads.- File watching refreshes discovered skills as source folders change.
compozy skill inspectis removed; usecompozy skill info. There is no compatibility alias.
One task-delivery Loop with two execution modes
implement-tasks now owns both task-delivery paths. Its default per-task mode keeps one isolated code_implementer session per Task; mode=orchestrated uses the bundled orchestrator agent to spawn, prompt, verify, and stop one bounded worker per Task. (#491)
- Four optional runtime inputs choose the conductor, backend workers, frontend workers, and every other worker. Task-frontmatter runtime fields still win over these run inputs.
compozy spawnnow accepts provider, model, reasoning-effort, and speed overrides, so orchestrated workers preserve the selected runtime choice.- Goal output contracts now require the runtime's
complete|blockedvocabulary, and Goal prompts receive the authored output schema. - The bundled spec-cycle extension moves to
0.5.0with the consolidated Loop inventory. - The standalone
orchestrate-tasksLoop and its docs/catalog entry are removed. Operator-side[loops.inputs.orchestrate-tasks]config blocks are now inert and should be deleted; move any desired values under[loops.inputs.implement-tasks]and setmode = "orchestrated".
Features
Profiles add a who-is-working dimension
Profiles introduce an ownership dimension across sessions, Tasks, Loops, worktrees, memory, credentials, resources, extensions, and client state. Switching profile changes the work you read without moving workspace files or restarting the daemon; All profiles provides an explicitly labeled aggregate view. Profiles separate work context and are not a security boundary. (#457, #459, #481)
- Create, rename, archive, unarchive, delete, select, list, update, and read the current profile through the CLI, HTTP, UDS, and Web.
- Agents can read the catalog and current selection through
compozy__profile_listandcompozy__profile_current. - Credentials, resources, extension enablement, notification presets, and configuration overlays resolve with profile ownership.
- Session windows, deep links, live streams, reconnects, and workspace selection retain their profile and workspace identity.
Profile identity is visible and editable
Profiles can use catalog-backed Lucide icons, searchable emoji with skin tones, and custom colors. The switcher supports direct editing, and compact owner identity now appears across sessions, the command palette, workspaces, and desktop surfaces. Unknown Lucide slugs fail validation instead of silently rendering a fallback. (#484)
Agents can manage Goals through every public runtime surface
Goal operations are now structured and agent-manageable through compozy__goal_control, HTTP, UDS, compozy session goal, and Web. The shared contract supports set, replace, status, pause, resume, and clear while enforcing same-workspace lineage and cycle checks. Spawned Goal work preserves provider, model, reasoning-effort, and speed choices. (#470)
Runtime routing can match type and complexity together
Loop runtime rules can match both Task type and complexity. Specificity is deterministic—id wins over type + complexity, then type, then complexity—and matching runtime fields merge independently, with later equal-specificity rules winning per field. (#475)
Session navigation and transcript controls are more direct
- Message copy works for text already received while generation continues and reports success or failure; before the first copyable token it remains disabled, and packaged desktop clipboard writes use a trusted Electron boundary. (#460)
- The composer shows its environment or worktree as a compact control with the full value in a tooltip. (#463)
- Provider and model identities expose accessible tooltips, including sign-in requirements. (#464)
- Consecutive tool calls are grouped in the session transcript without hiding their individual state. (#466)
- Command-palette results open the selected entity directly in the correct workspace. (#467)
- The Sessions dock action opens a new session when needed or focuses the most recently used session. (#468)
Fixes
Session ownership and cleanup preserve durable state
- Boot reconciliation preserves the persisted worktree binding for existing sessions. (#456)
- Deleting a session removes its windows from all layouts and desktop states, including pinned, minimized, stacked, and tiled windows, without affecting unrelated workspaces. (#465)
- Spawned-session cleanup treats an already settled prompt as a clean completion; only an in-flight prompt is classified as a timeout. (#469)
- Profile-scoped navigation, session streams, reconnects, and restart recovery preserve profile and workspace ownership. (#459, #481)
Loop recovery reports the execution that actually happened
Inactive routes remain visible as route_not_taken but no longer create phantom Tasks or dependencies. Recovery validates persisted executed-definition bytes, isolates an invalid snapshot instead of blocking healthy coordinators, and makes Goal cleanup and binding allocation safe under replay. (#483, #492)
reattempt_strategy = "halt"stops automatic succession after a failed generation while preserving explicit reruns.- Terminal runs record
completed_at, so their duration no longer grows after completion. - Explicit reruns understand the selected node's dependency closure and no longer treat unrelated pending cells as part of that rerun.
- Inspect, dry-run, status, CLI, HTTP, UDS, native tools, and Web expose effective configuration together with the source of each field.
- #476perf: delegate full gates to pull request CI
- #457feat: profiles — the who-is-working dimension
- #461feat: combine settings update actions
- #463feat: replace composer environment path with worktree icon
- #466feat: group session tool calls
- #470feat: restore agent-manageable Goal orchestration
- #475feat: support conjunctive runtime routing
- #484feat: expand profile identity customization
- #488feat: absorb ecosystem skill folders and expose skills back
- #491feat: merge spec-cycle task delivery loops
- #459fix: close profiles regressions after PR 457
- #468fix: make sessions dock contextual
- #469fix: classify settled spawned TTL cleanup correctly
- #460fix: restore reliable session message copy
- #464fix: add runtime provider tooltips
- #465fix: close windows when sessions are deleted
- #467fix: route command palette entities directly
- #456fix: preserve worktree binding during reconciliation
- #481fix: harden profile-scoped runtime and web flows
- #483fix: keep inactive loop routes out of task projection
- #492fix: harden Loop recovery and expose execution truth
- #495fix: publish npm packages with trusted identity
30 files published by the GitHub release workflow.
Browse downloads
- checksums.txt2.7 KB · 129 downloads
- checksums.txt.sigstore.json9.9 KB · 114 downloads
- compat.json70 B · 33 downloads
- compozy-0.3.0-beta.21.tar.gz186 MB · 4 downloads
- compozy-0.3.0-beta.21.tar.gz.sbom.json805 KB · 1 downloads
- compozy-0.3.0.beta.21-1.aarch64.rpm49 MB · 1 downloads
- compozy-0.3.0.beta.21-1.aarch64.rpm.sbom.json2.9 KB · 1 downloads
- compozy-0.3.0.beta.21-1.x86_64.rpm53 MB · 2 downloads
- compozy-0.3.0.beta.21-1.x86_64.rpm.sbom.json2.8 KB · 1 downloads
- CompozyOS-0.3.0-beta.21-linux-x64.AppImage215 MB · 12 downloads
- CompozyOS-0.3.0-beta.21-linux-x64.deb176 MB · 15 downloads
- CompozyOS-0.3.0-beta.21-mac-arm64.dmg206 MB · 27 downloads
- CompozyOS-0.3.0-beta.21-mac-arm64.zip205 MB · 12 downloads
- CompozyOS-0.3.0-beta.21-mac-x64.dmg216 MB · 5 downloads
- CompozyOS-0.3.0-beta.21-mac-x64.zip215 MB · 1 downloads
- compozy_0.3.0.beta.21_amd64.deb53 MB · 6 downloads
- compozy_0.3.0.beta.21_amd64.deb.sbom.json2.6 KB · 1 downloads
- compozy_0.3.0.beta.21_arm64.deb49 MB · 2 downloads
- compozy_0.3.0.beta.21_arm64.deb.sbom.json2.6 KB · 1 downloads
- compozy_darwin_arm64.tar.gz51 MB · 70 downloads
- compozy_darwin_arm64.tar.gz.sbom.json315 KB · 1 downloads
- compozy_darwin_x86_64.tar.gz54 MB · 6 downloads
- compozy_darwin_x86_64.tar.gz.sbom.json316 KB · 1 downloads
- compozy_linux_arm64.tar.gz49 MB · 2 downloads
- compozy_linux_arm64.tar.gz.sbom.json319 KB · 1 downloads
- compozy_linux_x86_64.tar.gz53 MB · 141 downloads
- compozy_linux_x86_64.tar.gz.sbom.json320 KB · 1 downloads
- compozy_windows_x86_64.zip54 MB · 16 downloads
- compozy_windows_x86_64.zip.sbom.json330 KB · 1 downloads
- install.sh8.0 KB · 8 downloads
- Source code (tar.gz)
- Source code (zip)