feat: native engine invite from the Add dialog (+ backend endpoint) - #523
Merged
Conversation
The Members panel's Add dialog only covered cold-spawn agents, and the guidance had gone stale: it pointed at the removed `mycelium agent add` picker and the deprecated openclaw adapter. - Split the dialog into Agents (cold-spawn) and Engines (first-party) tabs, keeping it read-only guidance. - Engines tab: `mycelium engine create --kind` + `engine invoke`, with a short note on the runtime model (backend-run room citizens; aligner mediates, synthesizer distills). - Agents tab: claude_code + cursor create examples, --owner/--team attribution note, and the shared cold-spawn daemon step. - Drop openclaw and `mycelium agent add` references; point the empty state at `mycelium agent create`. Closes #518 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011yvS96kxZn7VpM5SgN5i7i
Engines (aligner/synthesizer) are backend-owned — registration is a pure
manifest write with no machine-local side effects — so the UI can invite
one natively instead of punting to the CLI.
Backend: POST /api/rooms/{room}/engines builds and persists the same
agents/<handle> manifest the CLI's 'mycelium engine create' writes, so the
summon seam and the agents listing pick it up identically. Validates room,
kind, and handle slug; rejects duplicates. Covered by tests/test_engines_route.py.
Frontend: the Add dialog's Engines tab is now a real form (kind picker,
handle prefilled with the kind name, optional description) posting to the
new endpoint. The Agents tab drops the removed daemon/cold-spawn guidance
(see #526) for the resident 'mycelium await --loop --exec' model, and no
longer presents --cwd as required.
juliarvalenti
force-pushed
the
claude/github-issue-518-9wengz
branch
from
August 14, 2026 23:44
d495420 to
326e1cb
Compare
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #518.
What
Invite a first-party cognition engine (aligner / synthesizer) directly from the room's Members → Add → Engines dialog — no CLI required.
Engines are backend-owned: registration is a pure manifest write with no machine-local side effects (unlike
claude_code/cursoragents, which need a resident session + workspace assets). So the UI can do it natively.Backend
POST /api/rooms/{room}/engines(app/routes/engines.py) builds and persists the sameagents/<handle>manifest the CLI'smycelium engine createwrites (adapter: engine,kind,embed=False,agent-manifesttag), reusing the memory-create path. The aligner/synthesizer summon seam (_registered_engine_kind) andGET .../agentspick it up identically to a CLI-created engine.aligner|synthesizer) / handle slug; rejects duplicates (409), unknown kind + bad handle (422), missing room (404).tests/test_engines_route.py— 6 tests including a summon-seam-recognition assertion.Frontend
lib/api.ts:createEngine()+EngineKind, surfacing backenddetailon error.agents-panel.tsx: the Engines tab is a real form (kind picker with blurbs, handle prefilled with the kind name and tracking it until edited, optional description). On success it refreshes the roster and closes the dialog.mycelium await --loop --execmodel, and no longer presents--cwdas required.Supersedes the CLI-copy-only onboarding this PR originally shipped.