Skip to content

Web UI: add Gemini CLI as a configure host #104

@hyoshi

Description

@hyoshi

Summary

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 GeminiSUPPORTED_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.
  • SUPPORTED_HOSTS + wizard host step (buildStepBody_host, i18n) + wizard.js host options.
  • 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.

Decisions required

  • Official providers (google-ads-official etc.) on Gemini: in scope for the Web UI, or mureo-MCP-only? (Ties into Phase 2: Credential supply for official MCP providers (google-ads-official, ga4-official) #102.)
  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions