Skip to content

Add Antigravity CLI as a quorum slot (Gemini CLI deprecation) #220

Open

Description

@jobordu

Motivation

Google is deprecating the standalone Gemini CLI in favor of the Antigravity CLI (its agentic dev tool). nForma's quorum uses the Gemini CLI as a voter via the gemini-1 slot (mainTool: "gemini", display_type: "gemini-cli"). When the Gemini CLI is retired, gemini-1 will break — the Google voter needs to move to the Antigravity CLI.

Important: host-runtime support already exists, slot support does NOT

bin/install.js already treats antigravity as a host runtime — an IDE nForma installs into (config dir ~/.antigravity, MCP prefix mcp__antigravity-1__, etc.): see install.js:155,167,183,214,327-335,405,601. That is not the same as a quorum CLI slot (a subprocess voter invoked non-interactively, the role gemini-1 plays). This issue is specifically about adding Antigravity as a quorum slot / voter.

Goal

Add an Antigravity-CLI quorum slot (e.g. gemini-1 re-pointed to the Antigravity CLI, or a new antigravity-1 slot) so the Google voter survives the Gemini CLI deprecation. Keep gemini-1 working during the transition if both CLIs coexist.

Concrete integration points

The gemini-1 slot template (installed ~/.claude/nf-bin/providers.json) shows everything a CLI slot needs — mainTool, args_template (["-m", "<model>", "-p", "{prompt}"]), health_check_args (["--version"]), auth_check, oauth_rotation (creds under ~/.gemini/...), deep_probe. An Antigravity slot needs the equivalents, plus updates to the hardcoded gemini/~/.gemini references:

  • Slot template — bin/providers.json / the install-time default fleet (gemini-1 entry).
  • CLI detection & install — install.js:41 KNOWN_CLIS, install.js:76 install cmd (npm i -g @google/gemini-cli), install.js:400 keyword→prefix map, install.js:498 detectExternalClis; bin/nForma.cjs:2555 (@google/gemini-cli package).
  • CLI resolution — bin/resolve-cli.cjs (resolves bare names like gemini; needs the Antigravity binary name).
  • Auth / OAuth rotation — bin/account-manager.cjs:20-22,192,196 (creds default ~/.gemini/accounts, active ~/.gemini/oauth_creds.json) — Antigravity's credential layout.
  • Hardcoded slot/model lists — update-scoreboard.cjs:70 VALID_MODELS, verify-quorum-health.cjs:41,208 SLOTS, generate-petri-net.cjs:20 QUORUM_SLOTS, token-dashboard.cjs:18 pricing, and the slot-classification CLI_COMMANDS used by /nf:mcp-status + statusline.

Open questions (need research / confirmation of the Antigravity CLI interface)

  • Antigravity CLI binary name and install package (replacing @google/gemini-cli)?
  • Non-interactive invocation — is there a -p/--prompt one-shot equivalent (the quorum needs print-mode, not an interactive agent loop)?
  • Model selection flag (today -m gemini-3-flash-preview)?
  • Health check — does --version exist?
  • Auth model — does it reuse ~/.gemini credentials or a new ~/.antigravity layout? Does account/OAuth rotation still apply (and via which commands)?
  • Deprecation timeline for the Gemini CLI (drives urgency / whether to keep both slots).

Acceptance criteria

  • An Antigravity-CLI voter participates in /nf:quorum (responds to a non-interactive prompt, returns a verdict).
  • /nf:mcp-status shows it healthy; preflight resolves its spawn target via the shared resolver (resolve-providers.cjs / resolveSpawnTarget).
  • Health check + deep probe pass; OAuth rotation works (or is documented as N/A).
  • No hardcoded gemini-only assumptions block the new slot (lists above updated).
  • Migration path documented: what happens to existing gemini-1 installs when the Gemini CLI is removed.

Filed after the 2026-06 quorum-hardening series; the shared resolve-providers.cjs / resolveSpawnTarget plumbing from #197 should make adding the slot cleaner.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions