You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
mureo setup gemini already exists at the CLI level (mureo/cli/setup_gemini.py) and registers mureo for Gemini CLI. The configure Web UI does not support Gemini — SUPPORTED_HOSTS = ("claude-code", "claude-desktop") only, and the wizard host step offers just Claude Code / Claude Desktop. This issue tracks extending the Web UI to Gemini.
Current state
CLI (setup_gemini.py) registers mureo as a Gemini CLI extension:
~/.gemini/extensions/mureo/gemini-extension.json — JSON with mcpServers.mureo + contextFileName: CONTEXT.md. Merges only mureo's keys; other extensions under ~/.gemini/extensions/ are untouched.
No PreToolUse-style guard surface in Gemini CLI → no credential-guard step (unlike Claude/Codex).
Custom slash commands are .toml (different from mureo's bundled .md) → currently out of scope in the CLI helper too.
The Web UI knows none of this.
Work required
Gemini needs its own registration/detection driver in the generalized host layer:
host_paths.py: add a gemini host pointing at ~/.gemini/extensions/mureo/gemini-extension.json (the MCP registry) + skills/credentials paths. It IS JSON (unlike Codex TOML) but the structure differs from Claude's root mcpServers — detection in status_collector.py must read the extension file, not ~/.claude.json.
setup_actions.py: host branch calling the Gemini extension install/remove primitives instead of claude mcp. The Gemini branch must skip the credential-guard step (no hook surface) — mirror the existing Claude-Desktop "unsupported_on_desktop" no-op pattern.
status_collector.py: detect installed mureo / official providers from the Gemini extension JSON.
Gemini extension model is one extension dir per tool — confirm whether official providers become separate extensions or entries under mureo's.
Skills/commands .md → Gemini .toml conversion: in scope here or a separate follow-up (already noted as deferred in setup_gemini.py).
Acceptance criteria
Wizard offers Gemini as a host; selecting it writes ~/.gemini/extensions/mureo/gemini-extension.json correctly and idempotently, preserving other extensions.
The credential-guard step is a clean no-op for Gemini (documented, not an error).
Dashboard status reflects what is actually registered in the Gemini extension file.
Bulk-clear / remove unregister from the Gemini extension dir only (no cross-talk with ~/.claude.json / ~/.codex).
Parity with the CLI mureo setup gemini; validated against the real extension file, not only unit tests.
References
mureo/cli/setup_gemini.py (existing CLI primitive to reuse).
Web UI host layer: mureo/web/host_paths.py, status_collector.py, setup_actions.py, mureo/_data/web/wizard.js, i18n.json.
Summary
mureo setup geminialready exists at the CLI level (mureo/cli/setup_gemini.py) and registers mureo for Gemini CLI. The configure Web UI does not support Gemini —SUPPORTED_HOSTS = ("claude-code", "claude-desktop")only, and the wizard host step offers just Claude Code / Claude Desktop. This issue tracks extending the Web UI to Gemini.Current state
CLI (
setup_gemini.py) registers mureo as a Gemini CLI extension:~/.gemini/extensions/mureo/gemini-extension.json— JSON withmcpServers.mureo+contextFileName: CONTEXT.md. Merges only mureo's keys; other extensions under~/.gemini/extensions/are untouched..toml(different from mureo's bundled.md) → currently out of scope in the CLI helper too.The Web UI knows none of this.
Work required
Gemini needs its own registration/detection driver in the generalized host layer:
host_paths.py: add ageminihost pointing at~/.gemini/extensions/mureo/gemini-extension.json(the MCP registry) + skills/credentials paths. It IS JSON (unlike Codex TOML) but the structure differs from Claude's rootmcpServers— detection instatus_collector.pymust read the extension file, not~/.claude.json.SUPPORTED_HOSTS+ wizard host step (buildStepBody_host, i18n) +wizard.jshost options.setup_actions.py: host branch calling the Gemini extension install/remove primitives instead ofclaude mcp. The Gemini branch must skip the credential-guard step (no hook surface) — mirror the existing Claude-Desktop "unsupported_on_desktop" no-op pattern.status_collector.py: detect installed mureo / official providers from the Gemini extension JSON.Decisions required
.md→ Gemini.tomlconversion: in scope here or a separate follow-up (already noted as deferred insetup_gemini.py).Acceptance criteria
~/.gemini/extensions/mureo/gemini-extension.jsoncorrectly and idempotently, preserving other extensions.~/.claude.json/~/.codex).mureo setup gemini; validated against the real extension file, not only unit tests.References
mureo/cli/setup_gemini.py(existing CLI primitive to reuse).mureo/web/host_paths.py,status_collector.py,setup_actions.py,mureo/_data/web/wizard.js,i18n.json.