Skip to content

feat: Antigravity CLI (CLI error: bubbletea: error opening TTY: bubbletea: could not open TTY: open /dev/tty: no such device or address) engine support — Gemini CLI deprecates June 18 #558

Description

@downwind7clawd-ctrl

Summary

Google announced at I/O 2026 that Gemini CLI will stop serving requests for individual/free users on June 18, 2026, replaced by Antigravity CLI (agy v1.0.0, Go-based). This issue tracks the work needed to add Antigravity CLI as a supported engine in Untether.

Context

Interface Incompatibilities

The current GeminiRunner (untether/runners/gemini.py) uses CLI flags that do not exist in Antigravity CLI:

Gemini CLI flag Untether usage Antigravity CLI equivalent
--output-format stream-json Structured JSONL stream parsing ❌ No equivalent flag
--resume <id> Session resumption (line 341-343) --continue / --conversation <id>
--approval-mode yolo Auto-approve tools (line 351-353) --dangerously-skip-permissions
--model <model> Model selection (line 349) ❌ Config file only (~/.gemini/antigravity-cli/settings.json)
--prompt=<text> Non-interactive mode (line 354) --print / -p

Critical blocker: stream-json output format

Untether parses stream-json output for events: Init, Message, ToolUse, ToolResult, Result, Error. Antigravity CLI does not expose a --output-format flag in v1.0.0. This means either:

  1. Antigravity CLI has an undocumented JSON output mode (needs investigation)
  2. A new output parser needs to be written for whatever format agy --print produces
  3. Google adds --output-format support in a future version

What still works (shared context)

  • Context files: GEMINI.md, AGENTS.md — Antigravity CLI reads the same files
  • MCP servers: Supported, but config location changed to mcp_config.json (field: serverUrl instead of url)
  • Skills: ~/.gemini/skills/ (global) / .agents/skills/ (workspace)
  • Plugins: agy plugin import gemini migrates extensions
  • Authentication: OAuth-based, same Google account

Suggested approach

  1. Investigate agy --print output format — determine if it produces parseable structured output
  2. Create untether/runners/antigravity.py as a new engine runner (do not modify existing gemini.py for backward compat)
  3. Map the flag equivalences above
  4. Handle the MCP config location migration (settings.jsonmcp_config.json)

Environment

  • Antigravity CLI: agy v1.0.0 (Go binary, linux_amd64)
  • Current Gemini CLI: gemini v0.42.0 (Node.js)
  • Untether: 0.35.2
  • OS: Ubuntu 24.04 (Linux)

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