From 86f4ae8c1c58d4bbbaf24fba1eb9009e0cdd9466 Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Thu, 23 Jul 2026 15:39:00 -0700 Subject: [PATCH 01/14] feat: migrate from Gemini CLI to Antigravity CLI (agy) (#10) --- .gitignore | Bin 347 -> 411 bytes config/scripts/gemini-session-picker.sh | 19 ++-- gemini-terminal/DOCS.md | 24 +++-- gemini-terminal/Dockerfile | 8 +- gemini-terminal/config.yaml | 2 + .../etc/s6-overlay/s6-rc.d/init-gemini/run | 63 ++++++++----- gemini-terminal/rootfs/usr/local/bin/gemini | 12 +++ .../rootfs/usr/local/bin/gemini-session.sh | 12 +-- tests/test_config_and_scripts.py | 86 ++++++++++++++++++ 9 files changed, 173 insertions(+), 53 deletions(-) create mode 100644 gemini-terminal/rootfs/usr/local/bin/gemini create mode 100644 tests/test_config_and_scripts.py diff --git a/.gitignore b/.gitignore index 5d330c02a09d796801cdc11a96bbe0b7113ba18b..ddf072d050c93948912d4d72a89e77b45730372a 100644 GIT binary patch literal 411 zcmX|-L2kn!5Jg!daR;RABAJ{aRa13QwF_r&VKXJvhCzT`dDF9Z2x%91=4-y+d^pHg z^dQeUyIgcA@@!0pK`QHtvjGzbF8D#dqXG4m1rO8=9?iNyK9P*RGcc}JEocSbbqXD% zgsJJMr&(L*7My1K9YeFwaGD$V4J}cR&0aS>t!^>$(-B|ru?kvaC>@nLzk-jLblU$s zs`yAVRcP?=T*BrO1`l+hO(&LWtZ#RV(-JyQ_*(( gemini " + echo -n "> agy " read -r custom_args if [ -z "$custom_args" ]; then echo "No arguments provided. Starting default session..." launch_gemini_new else - echo "🚀 Running: gemini $custom_args" + echo "🚀 Running: agy $custom_args" sleep 1 - # Use eval to properly handle quoted arguments - eval "exec node \$(which gemini) $custom_args" + eval "exec agy $custom_args" fi } launch_bash_shell() { echo "🐚 Dropping to bash shell..." - echo "Tip: Run 'gemini' manually when ready, or 'gemini-logout' to clear credentials" + echo "Tip: Run 'agy' (or 'gemini') manually when ready, or 'gemini-logout' to clear credentials" sleep 1 exec bash } diff --git a/gemini-terminal/DOCS.md b/gemini-terminal/DOCS.md index 9d649d3..bd47425 100644 --- a/gemini-terminal/DOCS.md +++ b/gemini-terminal/DOCS.md @@ -1,10 +1,10 @@ # Gemini Terminal -A terminal interface for Google's Gemini CLI in Home Assistant. +A terminal interface powered by Google's **Antigravity CLI** (`agy`) in Home Assistant. ## About -This add-on provides a web-based terminal with the Google Gemini CLI pre-installed, allowing you to access Gemini's powerful AI capabilities directly from your Home Assistant dashboard. The terminal provides full access to Gemini's code generation, explanation, and problem-solving capabilities, with deep integration into Home Assistant. +This add-on provides a web-based terminal pre-installed with **Antigravity CLI** (`agy`), allowing you to access powerful AI capabilities directly from your Home Assistant dashboard. Following Google's transition from Gemini CLI to Antigravity CLI, `agy` is the official binary powering this terminal, with backward-compatible support for `gemini` command aliases and `GEMINI.md` context files. ## Installation @@ -12,37 +12,41 @@ This add-on provides a web-based terminal with the Google Gemini CLI pre-install 2. Install the **Gemini Terminal** add-on. 3. Start the add-on. 4. Click **"OPEN WEB UI"** to access the terminal. -5. On first use, follow the OAuth prompts to log in to your Google account (or enter a `gemini_api_key` in the configuration for headless login). +5. On first use, follow the prompts to log in to your Google account (or enter a `gemini_api_key` in the configuration for headless login). ## Configuration -Your authentication credentials and session data are stored in the `/data/.config/gemini` directory and will persist across add-on updates and restarts. +Your authentication credentials and session data are stored in the `/data/.config/antigravity` (and `/data/.config/gemini`) directory and will persist across add-on updates and restarts. MCP server configuration is maintained in `mcp_config.json`. ### Options | Option | Default | Description | |--------|---------|-------------| -| `gemini_api_key` | `""` | Optional Google Gemini API key for headless authentication | +| `gemini_api_key` | `""` | Optional Google API key for headless authentication | | `gemini_debug` | `false` | Enable verbose debugging and show internal logs in add-on logs | -| `auto_launch_gemini` | `true` | Automatically start Gemini when opening the terminal | +| `auto_launch_gemini` | `true` | Automatically start AI terminal session on open | -| `enable_ha_mcp` | `true` | Enable Home Assistant MCP server integration. | +| `enable_ha_mcp` | `true` | Enable Home Assistant MCP server integration (`mcp_config.json`). | | `ha_smart_context` | `true` | Automatically generate HA context (`GEMINI.md`) for AI awareness. | | `persistent_apk_packages` | `[]` | APK packages to install on every startup. | | `persistent_pip_packages` | `[]` | Python packages to install on every startup. | ## Usage -Gemini launches automatically when you open the terminal. You can also start Gemini manually with: +Antigravity CLI launches automatically when you open the terminal. You can also start the session manually with: ```bash +agy +# or legacy alias: gemini ``` ### Common Commands -- `gemini` - Start an interactive Gemini session. -- `gemini --help` - See all available commands. +- `agy` (or `gemini`) - Start an interactive session. +- `agy --help` - See all available commands. +- `agy -r latest` - Resume your most recent conversation. +- `ha-context --full` - Refresh the Home Assistant context (`GEMINI.md`) with full entity details. - `gemini -r latest` - Resume your most recent conversation. - `ha-context --full` - Refresh the Home Assistant context (`GEMINI.md`) with full entity details. diff --git a/gemini-terminal/Dockerfile b/gemini-terminal/Dockerfile index 245f5d2..91c9f50 100644 --- a/gemini-terminal/Dockerfile +++ b/gemini-terminal/Dockerfile @@ -80,8 +80,10 @@ RUN python3 -m venv /opt/zigporter-venv \ && /opt/zigporter-venv/bin/pip install --no-cache-dir zigporter \ && ln -s /opt/zigporter-venv/bin/zigporter /usr/local/bin/zigporter -# Install Gemini CLI and Prettier globally -RUN npm install -g @google/gemini-cli@latest prettier \ +# Install Antigravity CLI (agy) and Prettier globally +RUN curl -fsSL https://antigravity.google/cli/install.sh | bash \ + && ( [ -f /root/.antigravity/bin/agy ] && cp /root/.antigravity/bin/agy /usr/local/bin/agy || true ) \ + && npm install -g prettier \ && npm cache clean --force # Copy package.json files first for better layer caching @@ -100,7 +102,7 @@ RUN chmod +x /usr/local/bin/* \ && chmod +x /etc/s6-overlay/s6-rc.d/ha-gemini/run \ && chmod +x /etc/profile.d/hab-esphome.sh \ && chmod +x /etc/profile.d/zigporter-z2m.sh \ - && mkdir -p /data/.local/share/gemini /data/.config/gemini + && mkdir -p /data/.local/share/antigravity /data/.config/antigravity /data/.antigravity /data/.local/share/gemini /data/.config/gemini # Set working directory to HA config (mounted at runtime) WORKDIR /homeassistant diff --git a/gemini-terminal/config.yaml b/gemini-terminal/config.yaml index bac0079..7824ebe 100644 --- a/gemini-terminal/config.yaml +++ b/gemini-terminal/config.yaml @@ -90,5 +90,7 @@ schema: backup_exclude: - ".npm/*" - ".cache/*" + - ".local/share/antigravity/cache/*" - ".local/share/gemini/cache/*" + - ".antigravity/cache/*" - ".env_vars" diff --git a/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run b/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run index d2ffe40..c6adbbe 100644 --- a/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run +++ b/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run @@ -28,7 +28,7 @@ bashio::log.info "Configuration: MCP=${MCP_ENABLED} SCREENSHOT=${SCREENSHOT_ENAB ENV_VARS_FILE="/data/.env_vars" rm -f "${ENV_VARS_FILE}" -# Set up Gemini specific environment variables +# Set up Gemini and Antigravity specific environment variables cat >> "${ENV_VARS_FILE}" << 'EOF' export HOME="/data" export XDG_CONFIG_HOME="/data/.config" @@ -36,6 +36,9 @@ export XDG_DATA_HOME="/data/.local/share" export LANG="en_US.UTF-8" export LC_ALL="en_US.UTF-8" export TERM="xterm-256color" +export ANTIGRAVITY_CONFIG_DIR="/data/.config/antigravity" +export ANTIGRAVITY_HOME="/data" +export ANTIGRAVITY_TELEMETRY=off export GEMINI_CONFIG_DIR="/data/.config/gemini" export GEMINI_HOME="/data" export GEMINI_TELEMETRY=off @@ -48,7 +51,8 @@ EOF if [ -n "$GEMINI_API_KEY" ] && [ "$GEMINI_API_KEY" != "null" ]; then printf "export GOOGLE_API_KEY='%s'\n" "${GEMINI_API_KEY}" >> "${ENV_VARS_FILE}" printf "export GEMINI_API_KEY='%s'\n" "${GEMINI_API_KEY}" >> "${ENV_VARS_FILE}" - bashio::log.info "Gemini API key configured" + printf "export ANTIGRAVITY_API_KEY='%s'\n" "${GEMINI_API_KEY}" >> "${ENV_VARS_FILE}" + bashio::log.info "Antigravity/Gemini API key configured" fi ENV_VARS_COUNT=$(bashio::config 'env_vars | length') @@ -101,31 +105,32 @@ if [ -n "${ACCESS_TOKEN}" ]; then fi # ============================================================================== -# Setup Gemini configuration +# Setup Antigravity / Gemini configuration # ============================================================================== +ANTIGRAVITY_USER_DIR="/data/.antigravity" GEMINI_USER_DIR="/data/.gemini" -mkdir -p "$GEMINI_USER_DIR" +mkdir -p "$ANTIGRAVITY_USER_DIR" "$GEMINI_USER_DIR" mkdir -p "/data/.cache" -mkdir -p "/data/.local/share" -mkdir -p "/data/.config" +mkdir -p "/data/.local/share/antigravity" "/data/.local/share/gemini" +mkdir -p "/data/.config/antigravity" "/data/.config/gemini" -if [ ! -f "$GEMINI_USER_DIR/settings.json" ]; then - bashio::log.info "Creating default Gemini settings..." - cat > "$GEMINI_USER_DIR/settings.json" << 'EOF' +if [ ! -f "$ANTIGRAVITY_USER_DIR/settings.json" ]; then + bashio::log.info "Creating default Antigravity settings..." + cat > "$ANTIGRAVITY_USER_DIR/settings.json" << 'EOF' { "approvalMode": "default", "screenReader": false, "acp": false, - "sandbox": false, - "mcpServers": {} + "sandbox": false } EOF fi +cp "$ANTIGRAVITY_USER_DIR/settings.json" "$GEMINI_USER_DIR/settings.json" 2>/dev/null || true -if [ ! -f "$GEMINI_USER_DIR/trustedFolders.json" ]; then +if [ ! -f "$ANTIGRAVITY_USER_DIR/trustedFolders.json" ]; then bashio::log.info "Creating default trusted folders..." - cat > "$GEMINI_USER_DIR/trustedFolders.json" << 'EOF' + cat > "$ANTIGRAVITY_USER_DIR/trustedFolders.json" << 'EOF' { "/config": "TRUST_FOLDER", "/homeassistant": "TRUST_FOLDER", @@ -134,12 +139,14 @@ if [ ! -f "$GEMINI_USER_DIR/trustedFolders.json" ]; then "/opt": "TRUST_FOLDER" } EOF + cp "$ANTIGRAVITY_USER_DIR/trustedFolders.json" "$GEMINI_USER_DIR/trustedFolders.json" 2>/dev/null || true fi -if [ ! -f "/homeassistant/.geminiignore" ]; then - cat > "/homeassistant/.geminiignore" << 'EOF' +if [ ! -f "/homeassistant/.antigravityignore" ]; then + cat > "/homeassistant/.antigravityignore" << 'EOF' .storage/ .git/ +.antigravity*/ .gemini*/ backups/ addons/ @@ -153,18 +160,26 @@ node_modules/ *.db *.log EOF + cp "/homeassistant/.antigravityignore" "/homeassistant/.geminiignore" 2>/dev/null || true fi -# Set up MCP server +# Set up MCP server in mcp_config.json if [ "$MCP_ENABLED" = "true" ]; then - bashio::log.info "Configuring MCP server..." - # The ha-mcp-server built from OpenCode is located at /opt/ha-mcp-server/build/index.js - jq '.mcpServers["home-assistant"] = { - "command": "node", - "args": ["/opt/ha-mcp-server/index.js"], - "env": {"SUPERVISOR_TOKEN": "'$SUPERVISOR_TOKEN'"} - - }' "$GEMINI_USER_DIR/settings.json" > "$GEMINI_USER_DIR/settings.tmp" && mv "$GEMINI_USER_DIR/settings.tmp" "$GEMINI_USER_DIR/settings.json" + bashio::log.info "Configuring MCP server in mcp_config.json..." + cat > "$ANTIGRAVITY_USER_DIR/mcp_config.json" << EOF +{ + "mcpServers": { + "home-assistant": { + "command": "node", + "args": ["/opt/ha-mcp-server/index.js"], + "env": { + "SUPERVISOR_TOKEN": "${SUPERVISOR_TOKEN}" + } + } + } +} +EOF + cp "$ANTIGRAVITY_USER_DIR/mcp_config.json" "$GEMINI_USER_DIR/mcp_config.json" 2>/dev/null || true fi # ============================================================================== diff --git a/gemini-terminal/rootfs/usr/local/bin/gemini b/gemini-terminal/rootfs/usr/local/bin/gemini new file mode 100644 index 0000000..79293b8 --- /dev/null +++ b/gemini-terminal/rootfs/usr/local/bin/gemini @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# ============================================================================= +# gemini - Backward compatibility wrapper for Antigravity CLI (agy) +# ============================================================================= +# Gemini CLI has been transitioned to Antigravity CLI (agy). +# This wrapper routes legacy 'gemini' commands directly to 'agy'. + +if [ -z "$SILENT_MIGRATION_NOTICE" ]; then + echo "[Info] Gemini CLI transitioned to Antigravity CLI (agy). Executing: agy $*" >&2 +fi + +exec agy "$@" diff --git a/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh b/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh index 2b775d9..8f4a412 100644 --- a/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh +++ b/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh @@ -42,13 +42,13 @@ show_banner() { clear echo "" echo -e "${BLUE}${BOLD}Gemini Terminal${NC} ${GRAY}v${ADDON_VERSION}${NC}" - echo -e "${GRAY}Terminal interface for Google's Gemini CLI${NC}" + echo -e "${GRAY}Terminal interface powered by Antigravity CLI (agy)${NC}" echo "" echo -e "${GRAY}────────────────────────────────────────────────────────────${NC}" echo "" } -# Function to show shell help (after exiting gemini) +# Function to show shell help (after exiting agy) show_shell_help() { echo "" echo -e "${GRAY}────────────────────────────────────────────────────────────${NC}" @@ -56,7 +56,7 @@ show_shell_help() { echo -e "${WHITE}Dropped to shell.${NC} Working directory: ${CYAN}/homeassistant${NC}" echo "" echo -e "${BOLD}Commands${NC}" - echo -e " ${GREEN}gemini${NC} Restart the AI coding agent" + echo -e " ${GREEN}agy${NC} (or ${GREEN}gemini${NC}) Restart the AI coding agent" echo -e " ${GREEN}ha-logs${NC} ${GRAY}${NC} View logs (core, error, supervisor, host)" echo -e " ${GREEN}hab${NC} ${GRAY}${NC} HA admin CLI (entities, areas, dashboards, backups)" echo -e " ${GREEN}zigporter${NC} ${GRAY}${NC} Zigbee tools (rename, inspect, stale, mesh)" @@ -69,10 +69,10 @@ echo -e "${WHITE}Working directory:${NC} ${CYAN}/homeassistant${NC}" echo -e "${GRAY}Customize AI behavior by editing ${NC}${GREEN}AGENTS.md${NC} ${GRAY}in your config folder${NC}" echo "" -# Launch Gemini -gemini --no-acp +# Launch Antigravity CLI (agy) +agy -# When gemini exits, show help and drop to bash +# When agy exits, show help and drop to bash show_shell_help # Start interactive bash shell diff --git a/tests/test_config_and_scripts.py b/tests/test_config_and_scripts.py new file mode 100644 index 0000000..1fc6ca0 --- /dev/null +++ b/tests/test_config_and_scripts.py @@ -0,0 +1,86 @@ +import os +import json +import subprocess +import unittest + +REPO_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +class TestAddonConfigAndScripts(unittest.TestCase): + + def test_shell_script_syntax(self): + """Verify that all bash scripts in the repository have valid syntax.""" + scripts_to_check = [ + os.path.join(REPO_ROOT, "gemini-terminal", "rootfs", "etc", "s6-overlay", "s6-rc.d", "init-gemini", "run"), + os.path.join(REPO_ROOT, "gemini-terminal", "rootfs", "etc", "s6-overlay", "s6-rc.d", "ha-gemini", "run"), + os.path.join(REPO_ROOT, "gemini-terminal", "rootfs", "usr", "local", "bin", "gemini-session.sh"), + os.path.join(REPO_ROOT, "gemini-terminal", "rootfs", "usr", "local", "bin", "ha-mcp"), + os.path.join(REPO_ROOT, "config", "scripts", "gemini-session-picker.sh"), + ] + + gemini_alias = os.path.join(REPO_ROOT, "gemini-terminal", "rootfs", "usr", "local", "bin", "gemini") + if os.path.exists(gemini_alias): + scripts_to_check.append(gemini_alias) + + for script_path in scripts_to_check: + if not os.path.exists(script_path): + continue + with self.subTest(script=os.path.basename(script_path)): + res = subprocess.run(["bash", "-n", script_path], capture_output=True, text=True) + self.assertEqual(res.returncode, 0, f"Syntax error in {script_path}:\n{res.stderr}") + + def test_mcp_config_json_schema(self): + """Verify that mcp_config.json contains valid mcpServers configuration for agy.""" + sample_mcp_config = { + "mcpServers": { + "home-assistant": { + "command": "node", + "args": ["/opt/ha-mcp-server/index.js"], + "env": { + "SUPERVISOR_TOKEN": "test_token" + } + } + } + } + self.assertIn("mcpServers", sample_mcp_config) + self.assertIn("home-assistant", sample_mcp_config["mcpServers"]) + ha_server = sample_mcp_config["mcpServers"]["home-assistant"] + self.assertEqual(ha_server["command"], "node") + self.assertIn("/opt/ha-mcp-server/index.js", ha_server["args"]) + + def test_dockerfile_antigravity_installer(self): + """Verify that Dockerfile installs agy via curl and not @google/gemini-cli.""" + dockerfile_path = os.path.join(REPO_ROOT, "gemini-terminal", "Dockerfile") + with open(dockerfile_path, "r", encoding="utf-8") as f: + content = f.read() + + self.assertNotIn("@google/gemini-cli", content, "Dockerfile should not install deprecated @google/gemini-cli npm package") + self.assertIn("https://antigravity.google/cli/install.sh", content, "Dockerfile must use Antigravity CLI install script") + + def test_init_script_antigravity_vars(self): + """Verify init-gemini/run exports ANTIGRAVITY environment variables and creates mcp_config.json.""" + init_script_path = os.path.join(REPO_ROOT, "gemini-terminal", "rootfs", "etc", "s6-overlay", "s6-rc.d", "init-gemini", "run") + with open(init_script_path, "r", encoding="utf-8") as f: + content = f.read() + + self.assertIn("ANTIGRAVITY_CONFIG_DIR", content, "init-gemini script should set ANTIGRAVITY_CONFIG_DIR") + self.assertIn("mcp_config.json", content, "init-gemini script should create/configure mcp_config.json") + + def test_gemini_session_launches_agy(self): + """Verify gemini-session.sh executes agy instead of gemini --no-acp.""" + session_script_path = os.path.join(REPO_ROOT, "gemini-terminal", "rootfs", "usr", "local", "bin", "gemini-session.sh") + with open(session_script_path, "r", encoding="utf-8") as f: + content = f.read() + + self.assertIn("agy", content, "gemini-session.sh should launch agy") + + def test_gemini_alias_wrapper_exists(self): + """Verify that /usr/local/bin/gemini alias script exists and calls agy.""" + alias_path = os.path.join(REPO_ROOT, "gemini-terminal", "rootfs", "usr", "local", "bin", "gemini") + self.assertTrue(os.path.exists(alias_path), "gemini alias wrapper script should exist at rootfs/usr/local/bin/gemini") + with open(alias_path, "r", encoding="utf-8") as f: + content = f.read() + self.assertIn("agy", content, "gemini wrapper script should execute agy") + + +if __name__ == "__main__": + unittest.main() From 7073e9c9ca942cbb38f26721dae51c361deb71e6 Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Thu, 23 Jul 2026 15:45:52 -0700 Subject: [PATCH 02/14] docs: update README documentation for Antigravity CLI (agy) --- README.md | 12 ++++++------ gemini-terminal/README.md | 32 ++++++++++++++++---------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index b87d407..73421c4 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ # Gemini Terminal for Home Assistant -Bring the power of Google's **Gemini CLI** directly to your Home Assistant dashboard! +Bring the power of Google's **Antigravity CLI** (`agy`) directly to your Home Assistant dashboard! -Gemini Terminal provides an AI-driven, persistent web terminal pre-configured with the Home Assistant MCP (`ha-mcp`) server, giving Gemini native access to your smart home environment. +Gemini Terminal provides an AI-driven, persistent web terminal pre-configured with the Home Assistant MCP (`ha-mcp`) server, giving `agy` native access to your smart home environment. --- ## 🚀 Key Features -* **Google Gemini CLI Integration**: A full-featured web terminal with the official Gemini CLI pre-installed. -* **Native Home Assistant Control**: Thanks to the integrated `ha-mcp` server, Gemini can read states, call services, and interact with your entities natively. +* **Antigravity CLI Integration**: A full-featured web terminal pre-installed with Google's official `agy` binary (with backward-compatible support for `gemini` commands). +* **Native Home Assistant Control**: Thanks to the integrated `ha-mcp` server (`mcp_config.json`), the AI can read states, call services, and interact with your entities natively. * **Session Persistence**: Built-in `tmux` support means you can navigate away or refresh without losing your terminal session or AI conversation. -* **Smart Environment Context**: Automatically creates a `GEMINI.md` file loaded with system info, architecture, and recent logs to ground Gemini in your specific setup. +* **Smart Environment Context**: Automatically creates a `GEMINI.md` file loaded with system info, architecture, and recent logs to ground the AI in your specific setup. * **Seamless Authentication**: Configure your `GEMINI_API_KEY` straight from the Home Assistant add-on UI. * **Direct Config Access**: Boots directly into your `/config` directory for immediate YAML editing and troubleshooting. @@ -57,4 +57,4 @@ This project was built on the incredible work of others in the Home Assistant co ## 📜 License This repository is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. -*Note: The Gemini CLI tool itself is subject to Google's Terms of Service.* \ No newline at end of file +*Note: The Antigravity CLI tool itself is subject to Google's Terms of Service.* \ No newline at end of file diff --git a/gemini-terminal/README.md b/gemini-terminal/README.md index 3f1cdb2..39ca0d7 100644 --- a/gemini-terminal/README.md +++ b/gemini-terminal/README.md @@ -1,6 +1,6 @@ # Gemini Terminal for Home Assistant -A secure, web-based terminal with the Google Gemini CLI pre-installed for Home Assistant. +A secure, web-based terminal with Google's **Antigravity CLI** (`agy`) pre-installed for Home Assistant. ![Gemini Terminal Screenshot](https://github.com/oded996/gemini-cli-home-assistant-addons/raw/main/gemini-terminal/screenshot.png) @@ -8,18 +8,18 @@ A secure, web-based terminal with the Google Gemini CLI pre-installed for Home A ## What is Gemini Terminal? -This add-on provides a web-based terminal interface with the Google Gemini CLI pre-installed, allowing you to use Gemini's powerful AI capabilities directly from your Home Assistant dashboard. It gives you direct access to Google's Gemini AI assistant through a terminal, ideal for: +This add-on provides a web-based terminal interface pre-installed with Google's official **Antigravity CLI** (`agy`), allowing you to use powerful AI capabilities directly from your Home Assistant dashboard. It gives you direct access to the AI assistant through a terminal, ideal for: -- **Controlling your Home**: Use natural language to control devices via the built-in MCP server. +- **Controlling your Home**: Use natural language to control devices via the built-in MCP server (`mcp_config.json`). - **Writing and editing code**: Get help with Home Assistant YAML, Python scripts, and more. - **Debugging problems**: Analyze Home Assistant logs and troubleshoot automation issues. -- **Smart Context**: Gemini automatically knows about your entities, system info, and recent errors. +- **Smart Context**: Automatically knows about your entities, system info, and recent errors via `GEMINI.md`. ## Features -- **Web Terminal Interface**: Access Gemini through a browser-based terminal using `ttyd` with a polished dark theme. -- **Auto-Launch**: Gemini starts automatically when you open the terminal. -- **Home Assistant MCP**: Pre-configured [ha-mcp](https://github.com/homeassistant-ai/ha-mcp) integration for direct control of your home. +- **Web Terminal Interface**: Access the terminal using `ttyd` with a polished dark theme. +- **Auto-Launch**: `agy` starts automatically when you open the terminal. +- **Home Assistant MCP**: Pre-configured [ha-mcp](https://github.com/homeassistant-ai/ha-mcp) integration (`mcp_config.json`) for direct control of your home. - **Headless Auth**: Provide your `gemini_api_key` in the add-on configuration for zero-config startup. - **Smart Context**: Automatically generates a `GEMINI.md` file with your Home Assistant state for the AI to read. - **Direct Config Access**: Terminal starts in your `/config` directory for immediate access to all Home Assistant files. @@ -28,17 +28,17 @@ This add-on provides a web-based terminal interface with the Google Gemini CLI p ## Quick Start -The terminal automatically starts Gemini when you open it. You can immediately start using commands like: +The terminal automatically starts `agy` when you open it. You can immediately start using commands like: ```bash -# Ask Gemini a question about your home -gemini "Which lights are currently on?" +# Ask the AI a question about your home +agy "Which lights are currently on?" -# Start an interactive session -gemini +# Start an interactive session (or use 'gemini' alias) +agy # Resume a previous session -gemini -r latest +agy -r latest # Refresh your Home Assistant context ha-context --full @@ -61,9 +61,9 @@ persist-install pip requests | Option | Default | Description | |--------|---------|-------------| | `gemini_api_key` | `""` | Optional Google API key for automatic authentication. | -| `auto_launch_gemini` | `true` | Auto-start Gemini on terminal open. | +| `auto_launch_gemini` | `true` | Auto-start AI session on terminal open. | | `enable_ha_mcp` | `true` | Enable the Home Assistant MCP server integration. | -| `ha_smart_context` | `true` | Automatically generate HA context for Gemini. | +| `ha_smart_context` | `true` | Automatically generate HA context (`GEMINI.md`) for AI awareness. | | `persistent_apk_packages` | `[]` | List of APK packages to install on startup. | | `persistent_pip_packages` | `[]` | List of pip packages to install on startup. | @@ -75,4 +75,4 @@ Special thanks to the original author for the excellent foundation in containeri ## License -This project is licensed under the MIT License - see the [LICENSE](../LICENSE) file for details. Gemini CLI itself is subject to Google's Terms of Service. +This project is licensed under the MIT License - see the [LICENSE](../LICENSE) file for details. The Antigravity CLI tool itself is subject to Google's Terms of Service. From 94efe572ea82ed1fb04083aeba662618b6cd489f Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Thu, 23 Jul 2026 15:47:49 -0700 Subject: [PATCH 03/14] style: update add-on icon and logo to official Antigravity branding --- gemini-terminal/icon.png | Bin 19333 -> 71914 bytes gemini-terminal/logo.png | Bin 19333 -> 71914 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/gemini-terminal/icon.png b/gemini-terminal/icon.png index e539633a2de4b789b171867a03cda24b97e36bcc..ce40c20fb8cf3b5d4fa94888d635f6550c522deb 100644 GIT binary patch literal 71914 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 Nu<9$7a%J=2{{xI~{_6k$ literal 19333 zcmb4q`9GBJ_y5d2i?NS=$uidLTSOvb-xA4|bs~|JkwjT$hCYG!iI?JF4vu5X{n=nYJ7)6ScI zdhbLd?z&E8X=P}xZW;#^)4$Gr^ON04m9{XJ$_sp%)Putt>5JtTS-m zy!q0X@b#!yw|Csb;M;FK&cE`CxqarL{QZv7kh`nRQpKUA1!0vV?h)&4;$z3py!OP` z1m!%&-P(L9`rYaH{ByZ)jq*_!Urjwz_)@Ks8}>9hy60Pqbjj(GRfnSi6b6 zJeyA@wAyXhJ2cmt9&0)q)`XjRsPp>S{;3+Z=;vNREhk1F8;sU#Tz`QbZC0W_w7A&n zG;ze2eR=7)Bz&$a7Y^d3~4XwC9(EppRs!O1;~3Tr*uops{%rI7n~gQ=I!A8EW~*5cny z4AO5%tjP;`7@KACr0{M`QE9!cc-yH~(%Jht7vGXRbE~{whejy12Diq<-D$ixi0YG%|m51kwrOX*S{XR_cEOL^2q(B$lMaQJ9Pnf?_N%L7Le6sQ}zUx z|JXEZ!jJIAIltXGb^K&{*YVQ(E;j}&@&~#lTP}eqp?Jyt*a=A7w^_?zcR>Z?;jS|| zd7oNy7T)xwRy}U)uZjII-9LHzonfsJ1C-{*JDiMxKzK#|eV~wg_az|^48+mK(j$KA z*MszSkFOtF_X`14>Zv(uaeDmbwx(x3Jyki&!~6>;rx_!=YEexv3jQb z&VGK4!Bv|AO5*OCZ`UREOSYHtmES@AzR};*1PT|DYH=_%DO#H$>**dS^difesr%91_)T&d->fp=2HUl_` zsBt$V3RT?-ei*t6;9|D;9WUN})BNT}NA|7W?kj@(qrNCN;fwVC%gFDw3g{kCv=hFF zxFfCgI&?)>9{VCAe?iOh@Et*%_7?uWviQ(B^c5+^*XQLN5Locbjjwy+AGe+;zHqvI z&4=_D=^Q*Kqv*hYr?=b8CNCB4D5^o0QFgGZr@E)Aytqp$dCG%}xtpq@;DrN!KJ>y> z(+WmfM*hpZb1mq9cW<$eDef8fj(ukl*g81`K z9};|=8q}X7I2d(QcyRS;exAjHe)*zdRmb%J(qU;pp1_XYiY!pRlN;41I3{0N%^m`E zB`KwQ6C@Aa$nRa>lpdI8Dg0fK)$Z*@D)6}wwRTu_T)wiwAK?^yr~`hq z#v&_Ap}=RQ>(;wQ%Hk3BO6ULN8dlKk?Q;#>V;e?ot(LGC4tWdV@NdO!+Xs!=MtS-+ z1-As1wu0CP2_08DI2eO8hu}l;yziUt&sqPTC@1~X*do|8zY-`s4_#Ua?yH>4PBIzg|r^me#h@vcZeb407`n6U^1}lG>qA4f*e#kuV zMfVF=zDt(!xx>YUB@|>D<>ls}s$D_0>`|WW4-n~Hqx$LRXHR_Ub@-2*`pu`5llUPD z_Acl{+PYt%$0e>?HiUP(%qtrc9-?YDLg#i&-n1vIeIM?jTmJ|8R^#H$viGyjitKww zHb$)f%evF6LB4iuZsltreYtikAw!X;(8GqPKHFLBEg#J?-x%5bCu87m^>l6CxNApg z8v|aS&U2DIr*h@Dmt3+PAurvQRB#ktEVetl$LtZz1XP+fD1uKOu}(tvz1i$_c>hjH zo!%MFF>9Bwm7m`PMc7Z-M^w)8kgvRq(>=0#k}a3aASEm)TNd1ad}vEJD{YaewtLEk zRImY$j{-$vMLdF>tdEx~pNBq4*eq}(2pUFCx{0bex)P;kIt{a+R34+7gK8qG$2x#GUG6_zK*!FR zm?`(6**i+Wj>9Pi}zf_3*7!Qg0(?poaDyNlA=>bm@z@&C-G(%*r1AKH4k`YLKF zPWQ&2^!#CzbHNga=bvi%#Uoq%&Tm9;JkO$}+a)9@B~hHgy<7Aq<>(s2cipqj9bgs^ zwww>YIC@)oNa|Btf}>lKkVQshg$nnHX42Qje#~Tx5eK}WSl(F;Jy@yGscUM%JIC49OZ9t_? zADe7;e7Ja6uWHc*D{Lwh_(xX8(~aqjG-ap-mOyPB)IfvQ3vnyn4%WECZxq|3L7R$vKuIztDjyKI>F)z8SN6Tt6{A6 zQg;{5d8bFvNXgr?nY9)J6%&I2N2?8q$0s{k%y!PGz5MNiWcd0Yy?e?(>o6 z$Az~SwJi>h(kXiHk$12#NfY+s_KGcq)v4FS;rwYVx$x4lg=G6cEMrj@6!qAM`;d*6vI%~b09zgn za){G?yIVdC zN`m9au70v4sPsG}5CQn}eD&VZooO$s+*SfY(dsoGpPDaKKZWvvI91KTEWO#6KQB!b zqC6JVO=6HdK`^4=R|0{x58H<~*)hYnkGB;g8IL6whgtuWlz`r2rVgn2+rXIa>-6_r zXiEfc`G28SYw_0gw5U!gRB}HW&Cuv;JjG;|EVWDQG3Q3*f%t|*k2Vuflg2V7tyX65 zdgA8%FV4{B^6E?(b_kpWl1Ev0zY;^CGY2qoe2tjOf<_2|uucL|#p8+z!u$-VG5revbT zNDb76ok0o6qR$GwOmM8R7#O}z1%j|2AXZ}W64Ll0sGfA3E^W4qCb+KjLO|;+FZJ;U zS%~*9Uj+LXz`i^y3!KNk49IMX%=@U%G!25WZh?z^T zYrx1?)~CYXHrIIL<{;z4^6W3Fd@KU`dzF!)6G z!7-#En>K7d30--a&^Z`n1F{M4Ab!S`b>FsfR>_c9eA;}J*p?uojdMnxFxr-&zum6t zK(H_oR0OA8gphW@Fps)jLkXvrLf6Z5 z{5+fakv_H!Xfq0@^RA!Zg^AE^p3H(1$y>D+Z#yPO*k*QEAqUtAk~Lo-gRfp7e3~MV@FJ zlr_9=4BPU10-Ajxe%u;5&b9^NML^ziyM3D{1MP!myOilCA*ZA6{-6Z>PzdBGg0X^Q z;aTnTG75U@>?Wx98jP)d0MZa7C>Eb2Ll}LLaD(0%zmX0pRhllY`kfBkhpH4`#rhHB z6q3=td(AsxhO2>ZM&)f$S+;+7xx)I~y9MPLQJ)$@rwEhKmYwt>O2%wwJga@Gf)XQ2 zw8Gh}3O*?TvScw|S|cV5a`!k*ft`D9Y}?h9$1=OzBq0}-9{Kq&1d6Tw3^uU+=hrxl z@MJf0e%2Yp`3j3S#$OMrzF|X?vGQ~Mf8y?HQ+tCBBlRAE^*Bw?wM)Z$JKyQ+w+{i( zAq)Vun2)+UO5grtNPHf$XZv^Mm3o&q*C-eQaKbXhGZO29JM2fgL8UKm^ z;%;Kn_QulODfW|LH$;4&foDpQ)Lwm*abrOHmCdt|imRLRO+lEXV$EyR0p=zfj6Lo= zv9_bl#K}GF1FZT9&Iz{dpA{7vQvq(L7iKoRo$y(mIsN{ zi9RJH%PEc9hc#gEjnNJIqS9%C{9v4ZYcIOE(Vzdjj(j3?^fw%{ZagiH`ztSv?-atk zZ{>7dVYYEH!CZa8=@~d{HPC3GMR=A3_`gC46An+3ob8M5uf0qzbzv(I zp9#@EU4@K(Y7UX`q|0hiul%ACc#lGJKrD62FH%%!*ehKkL&DmT{%0^V4-ZqX{8)N- z05F8uZLg?29&j>!{%7#_OU@CCeZ0({QqPh$EVpKxlDXKJq;M=#UUFnz;!k@~q2iC? zk-i|=N1cMC)$>6utkCLaMp|4;TO zwvN(EPa^m+iwA?oRs-D!H&2Ulhp^r5)^poHb=EfsZ{_D(19x11_e1RVR#aY{^0CWj z=g2?XWxcawpV|4LJCKX6gur2#Uh0FT3SEo)QtQnXk* zfDTnq{LQTMP52wN0?Jy*fy{jD`Nh&3ZP`0ue;Ji_`l|pZmc8o8Av_ScH7~0=POcJ6DUHOX4W1bK} zy~Bi4?XnMEgcW})$<feBmDy8p6G3ODnGDI2m@RHr z#f9Gdsr&DJ+Z}_)OmSRfs^Jc(W7eE3NWO(0W(+qUwJKnT|14lcB189SPfjk=vU9^B zyvr*pAMM-@ro5Quxa>RRE>guGZpGGqFJ@9o*=ghG#FO)tsFm-6##RDPD@k6g@nbXY zrUCa4CQSYIB|d8cbp3i|%e84Upi70>k{A{vC0p>q3@c+Wh&I#dAeDpNisd(XCqRQR z6c1v&=%LEg&TC}{89)H>0e7X$E(l4sfAvq@p+7YP5|i(_mkVLuVKT*kg(5d!DxswF zATw>{qjq`>d1GJb8FB*m+CTA!w}Tj~>gT9uwXlq+dm-2Z#AR`ODHjEiAnkP zZ7?$jW}Rz{Q{2;@`6ZWKee+5Xk->ACtt!pQpxPp-6Yuzf;Tddm0D$kwW-T?MK_By_ zyCvHn`6J3b;xTs?&Uk+I0t|eItAV-DI1_%%`+hN2E*FjHMZ6xnsrUi^xoFrm`YoS< zi;%+!JzhOI+C&`VizY3DZYR#T&UKg4-JXzt)`YT}{8T@wh3lFCUO5Nz?5WEM6%#jN zcHoXPty^N+X+~iAkS-1n$j2QVtAQ z9>n1`z0q;H>laLdKJ80#bw0oJ-Nq();oXctm zok@eJ>|cP^gsKTt9mh ze(^2SdooVfKp-q(bJL?p$MteFddzYgP324xBj5_~C3nFpzA7g@9<-PPViGd|kvjos zrL{}s5*6-YkC$gd88z)2OmSi*K%?zOyzFKj*-|i1M$R0CHyrjSV zL)bfYCwEL><0B4@IYx^SOKFTs3ed#M2`UW8PvBe_mQNuPgR{=Q=gwC5aMw0^la2|p zJO~@|<3Tkv5f?!RZN_-LFX2SUigQlz#yI z60m_U4H@yk0f`a?N&W%A2A~mF!vS6X#m14e58B*eHEH(m}==)cr3p@iSs*6f;7;@CXgc#`k5>({)oHt~i} z!Tcki0eoHvN2sB&dXOHhYN=i?#w$5kSE}Ha>pteTlD(V}TkPAc^SuuaAB7WEM{7a{ zy|npLOL=CVWeQ=`M*8$xwt#rt6cNYJkO40>=jUHkx`3G0gClb>H5$S24iSHcU?J1Y-m z7ot+Kf}G`3`bb3ieR&({sK4?6>k$0d0hRc|vyi1BPgzEA6@?@G6XmAP9H_9*nYnZg zvawQ{`E$kgvH>)c;w9d7XYByqbtI^$^d2^pY62A|#B_?qugt$11AxRp&S&4>Lw;}R zoVc7{-hd74GwUvr9KRX}r@{YP!+(jUG|s>LCS1o%HLHd%8U^jMW@DI)(Zs?qX zbX_2smE&@ zfByv9o1}dQk^_O*mo!(2S%h%18%Y+vGtE=SXL43FmS{&BgWZ$vkkr(Z#v7Z#F%qY! zQG3Y&DY=m3vIl#gwjM`s7H|T|8J~0Rn^!hD;SosKe~|VjNE1Tl{Rc73ZARB_|5-Mc zI0RqUGV3Fb?T!k*4})i@#9PciT|T@n<%KiEtjAs8p6NV|*YS~A&8Xdsd|!D(iP~pr zj)8=ONIi1ba$6dBAcrq>XQ&YnpNV^x;iylK_*eq^Af8ZaXg(>H#M9W(AVoOE3x1BG zIuIlhLhU=l_2IoJP8_q__>@j01_hOZTJ|g#kGa!wVEpnKNVc=DG=U0-}50xCr~f=6Tf|{ z<_kwuaaStXq_g%tmT}N755~i!^3XG#p~f~+Ozp3f-M8}G%nSpDdQXr#=oQ0U56#}G z>3S(HXykk4PojV|xqJ9Iu>rcHL^4bv?)3>JJ23o1uo~11`njVRsXP`8x^f1xN%>k! z+gs#ee|qtB$Xsk}_XfwzxEA4cV|Zn{GOcg;GLa+Iiz0g(hf;N}^3Hx(3kot|v~hN! zUD3(VBZIjbw8k~K6?D4_I0uqg3mVT`cGBNZ>WpDog7f@}$}=Z_J?T34PCxz(ag5@m zGG6e*dxgBKV4mNgmJXqj|t-=XU~W( zYj!_@w-Wmc85hjkqa_?zXW=^nmU{|>BoZb1%LdvCWmW14*YQGKh|gAOD{&?tWE>Y| z9AB3g1#7EB4ZLi9eSdqARRDkKY-@D3^byDvo(sYgz&+KG=fv6PyFb-a7IPD*(YIJq zMo#S2#HW%Vrjb!f1-=3Oveo{+|5ZX;kmHv$9UbMyC z>WeN}7GJ=gqh6@9JdrwWkP^Y8023xeVpXsnm@{k7AoO#M=c#2TKyLRir(%jo#PFiU z2H?RGtS(`kBW26s0j=iv;pXq3>g=*1kdif2!6Y%1$KnF?JXaMDKB$2jNsYE)sCkoK zLX=36*u^O0-(iS&(Y3?JAjww9O5wztYf8JFW!Ef5gRts3L%~nB^WwK>^eb;1PBY02 z{|*g+TI~zZ#QVh;LKJY+=r_bKM`7W74uB29)F{3+gj%so`SKD@=myyHys3=p%^TEB zg3h*cn1$?(%gmqA+2`QOEx5u&RR(L#5$y(lF>z-x8-Kf7+j%tjg!H#q*9Z}M4DX-dK) z=(H~|N?gWTw%!0x#X}Mxg-0-DAfEl1RwNvtpAsQE=p77UY2d`4?IkBRQgpHDs8ar-nTcerv54 z+T;9LII(!w9(fvSkm{2{G5IRZOj2ehNgXjb#Z1_`@2G)z*Wt(?u8BW4pUanFG^vl% zt)Y0NOe?0SVdFr?YM=dEI!|Z}$U4B7o4qFghuEL{3}Vp)oQ4@BL}LG}yVOJ>4>*=C z&Oh7V>~#GIT{O}O|D!JgX^8+xp|fv%w@k5$ZoK6BbJ(vG2uuSaL@RP5>HbQ-!JYVn z{2k&*ToLVtmzt7L8mQp}`d9Gzj-(#?eB9gVA+zuNqmuZ0)H{8ow`Ee6SLZ%FlhB{M zQ=}J-n0ytLasYmqbsozJbU#P!X@SUFI3aC-z1`OoSA*o!RFVCL1P8{IrClGW+D52P zR?PFthJs7;F7Jrie#Tzbc;2hLDcTql(6AzPsuSsaGe~M$kQRrbtP+N-)g&0>^KnEc z=3GU(SjtZBVWbDD6bmaQvv(!^sPco%l`?N8kwjqDz%&> zWZ?EULi($D%xKKbpT18~6ga!n2JGME%C(?CpoZ7y@FiQb@x+B8NhsGi1!9b2~XDU z`#s?-HrMh57Rd|9Otjw8#J-|eaf|SQKTAO2xNM_d{1bHZF|3jGB)~g~c z=DQ#q#m6ZX`e#0Y^Jy4fhDzkx`(~t($5JIXOOgJ_y)4n7QOhEL+D6h~anis||WY;0ae)nS!VviTMa{dVMiCzOu}|TxPo!snbhN-G@g@8~s#yx(DBmNXUm>NZ3V92< zKg*r%f<<&!h*j~&L-^x;MB+C>tkAzl?Z=5hzHnX6?kd3*$!Q7>61qH-JI^EXI$myuo2KESmg2XM|Jxqa4XOz-~(SBYRr0|?N}Z4 zR8N{ZbRE@=QY694^)Wn5;)!b{Y(NT)=#fe>aRij%x<{h7R*#dYWyj0W#jg@otRa49 z_F?6$P!?0&&zHUI1ck%-mr-PGmLQ?;3i#R&GOmRc=_U0M8>@tRAFeX{MMJ5%mv~uU z9s7wzJCIAWZaAm6@!az%Vz9{2=B6q5!WHc1h7qDi5-tP$_od)SD{!w8EqjhS3if zPF}Y709+jJ&gJ1@8oi@K4a&P$Ltd3tQfC z_))-5!$|)Q$iy+9;6AiLxqEpjNl?ZLCKn7%zFP~5N zWc<|y{QhyvD?CkqS~W)|J|0ND^hmvzHe5*Oc2=bdoVg)Z-W~ND+6rj0kElYshtuVg zP&{l1Ylkt|s<2OE!5&pER`#Kf^zu zYvmy^Z~%3OZs3>PE)BaJQMvnCUQPqg(cVk zz)*#;j6({tN*)_BgC|nH@cAsFQ5%2s0Yg3m!k0qmJJAlboGLmEZO0V*x3K%|yc0MT z$AGY9Ol{zD?f{!z;YuTbj|nNYfjbhTf-a59SMhHAd&(Ha=p4_cR1XT&uQo1P`>o_# zeRk}xkIl8;p%cX9H>~5GWA_Kc7An4fpzH8fCo;P@zf(lh+_OXKJ_ZL zidKhJ(7Vc2Ef#3EGt@Mnfc3R0;hD)ilh;5jtHlaqr0{cki%}01@bwb3cahk2Iw@(H zV*LaL2P__o=Q-)22awMps;X{wbL3;|G*b4nOZgEwLcVH1;G5^3N9uDZv!Ok zV``>9;*F_Z$?G@rvO^oG-?~cJ<1QQeDO?tYxH1Ur$QNn1VGQqnHQ1Cmo}0(*x4rcM zDQSn2P%N6)zjfXVP0lXo_7L--WFCP3{q}*ktf6xZ zb(H7lg5(I3%Yv7mcAS;u)@$%da;FGxe`eK_Vt0aVw|3QdZ*+> zt(W{njbi4q>bA>$IC{`@W$_k+h`IGjeNzM#=g*IuvwtHf2QqFp)JhWLQ zYo~av0$hTJLlR3+9n0rCZ@lmsCoS3h9=!2(;@M-rZ1bRz@s~|cxi%!xoF7gIpWjPw zsSo&)vl!Q|U*O7sYalM9$xI$a&V->7Ppaqfv#N`*Pr3OpZg=#h#%80wvZ6BXn>YA9 zJNlQnc;Z`^HfG+tPplXL-neI8vE0LBW|fQaCl%?Qe1!4`7V1GN3_niHfyN>}f0IUY zCt8cd=c9da1e@yj-_DnuCZi(fl}1jHz2yOP3o(*vX$U)P&Om*HDyH!6*D^+c%>x@H z2joouDIf?51f_-TFT%Ylr*L0_7RKWG2q#Q(=|w@!S0i3cdX_g(yQHqEqFLXjK0YU^ zQNv966=6B6hQOKPS>71h;fmcs=<8vjx}t;l7+Y=$ry< zPvz5$V4PB z*`WN7ykgtwLsEDnPV2obzw>-;pY$1$I<(W+SBwPtzBrN>$qFaBXK4L`K(2M%GROT; zt>3qEM^C#7*ql>?3aszTyGj*m0TSRSmiBSvOx+`AW^qyogrcv8wZShPGrHEXS^Cvg zD1K=g-1RzMUI!air&<)BY`!{u<_1N@lqOo2Ks{24o$6+Ynq_RA+u;LDx^7idm7YT+ zbkfVA#t#8+O+>@zI!OW0$lu<)s$qMfS0ML3l5lw-jsgQv?@7Rh|7iEz;+KyqL-}^(y(we(Lp1(&i!>3AUhkMZ~ii?#V`x+$;>i*Rb)by!t&gq|sWsa+0n zk-rNITaE!;Ua`qlb7I=9?6c;wr_2iU3;(hh19J{*o{Aymoq7U<>|U4ejk;xBb{xZ< zC%P;>qQ(rkp9-a($1)BEqzX|lqCh+&3)mAWqyH8h8r={2a=o<~ z8P`99fF`nRFe$}6_iPw#f|LyxQii1fuZgRl4oQl|(;no&LS=p0)-xx{+qoja#sFB` zELjlB8j;QtTA*I90oyxwqEfU**=P4+`-I=J%zyoY2C1^cg{)Oro#zeHI!=i$n}A3S z4T-w#L;L#k*gJoiG{@`&K9ThuOGs$Tr=zSUXxT9w7RfZ1wrc5Y%0_oEjtP?f6VO_o`Vqvh zTAbnsm(2Tig8dLeq6%H+tzb=G%N4`LfeRT$^1Bb`|C+yZDercT0?rEjl|-koc0nLH z%sptDSCkx-DP}#ivfzpPaSZ@N8YQ#JGxEh^K~OCG96szmY3(e`1rt_g#SCrFTC`jU zu*Eb0x1repOvdNs4{DScS8~Ulv*#^}K6me^4&6=Rij`g1ATChWog)j! z)u@7ElXh!i&U%c^M}cr*LfJ+B&vpSAbi6h*9U}biIfxP$?!HwL@r@UJWWH1t&}rnu z4elEr86XD2UjT7l2ORc&KuRNWnrfFHtV$#1Rqe#)jFSi8FGJfZCrI9+8w>f2(?2%; zW1Z7lmB#03Qp3V|tN2YseW?$RY@;bF>`N<0c`C*AhKRcV0b(SoJgn`PxjW-v1fZ*y zOLh0ur3`lLYL*{$D1!glAxok063Ke7C4WAW z%InW@x+3dS2ln7P#oDw2!K%{l$4)~^=OL>2Q0!A|7e;1CU~;~4RRpu$iF6uULz_UN zeQJJCgZpxYett=ikO;%drSw08p6BnA>P^RS+2S@=B2dS9Hat%$k5ph?g%+jR)&zc? zcd-m_%JCVNI{ZBE@~*@EcI1X6ei^mkIyV8f3{~eF4`kDbL1BhCe+kySq&s71OAgWS z0eS5ZYfApRer4eV>D2{`Fqvp^(m1hHyIj274$bTdGZb!1JQ1})S7qdG*q=c0kYh^T zt;jq=!#QLWEcNixIamQ8mNIc6M$G5GA5?d8S-_hrsY+Ldb`}At0IlKS1D60c7?hh7 zIU($GZ(Bh51d&>1P_9G!(Ng~*%9=_HU!IU{s)i+AV_ek6p3Z|0 zuulmN#GqKi$1!M=@e1rgM*A6oQ;^ng(skTgv{=SwO`ntYZHYb?Ou(0P#@bQ&FZS@i zed!1kPbJSxz+5^US%|~rp>1G86FhLpggS!rC!5lZxi3w6^+JH{)$F6b`14qoIRg{M zZ}M4TM6v2HR*5PQNnJ6!UM&3tkmey?YynF{_z*YeOi5OH~FK2G`z?S-+1s zQ5=_U@`FFBbQNXk$XNn9|bNN@pGh&#DiX$56t(}i8e&#${oY-;? zI?L2dF&rgld4lQo9U6@~1ti2RyJ+JmF0x0t{~D4mi)0{W&SmPor8zL#f753}?qRV^ zFU*K1F24~*QU7S%Ca{yvc*v^CQbqh-F~29~V4WdUejb>f)M0WjL}}>;*8xknV55Wt zGEc1~YuqoYbKDcB-w11D-SnW_#G2qxUSLzh9#sH6T&3R@M1dm>c}@eKVn|3e{23Hv zX6Z(g8svcq61`rdQl+8i3)j{^M1o!9UOZHshCYYg(~#yHP?6+cRzv^RIfQ@k4UobX zQ56HY?)=Tn75)3ZwruSqjsnRBb&m6FNRM15)u0;vtGSgCL;XB;=k$z8t>4dI0xhEK z|Jcet)q92C`15|S`EeU0DZ6HVk|$EjFbGq2{d43sRs3+Nc?4fzdI+=e!edL5VruY7 zt~bp5DZSt$g7c@`c=3kZd7FB&+p%O9%mMHKkGOs>!)X~XH;NZjtU9NsP$lZq`vZG& z_i^!oqI25-yh?Nc1exM8mM3PP+il!p)ME|W48n^0^Ro+rt_r8I2wYPG=;d0A*sZN2gisLcdK@&RUk7aZnC9gW~?alz~( zbD<}Dq*A9Dl36VCdQH6}jo*c{;E&)h;Cm^M4YZH{4{*QCPFTkDh=ApZ6fu%)VhCPP z52L_>i=PUiHmOl>UjSpESGvPqXdooxK)UD$Q@4$xhw$`!!ZPIaQP$i6F;SF}q}b%= zV+yX4>~M)}c-QuPZ6DF5{GL_vL(%2^WXW;TBg#<~6T>yRK1p)wJxelAoGLJ@zQA2i zy{(xIdneP;ugJ=bjS%@g!8qQQH$gIBpXm~jk?k+jq1~h=Zx{&hn|S^@RgP>8HeqNjaSDyF(5-@cgPFs4o@mj@Tyg!YB2^Ol z4S=@>qDH^>IK#A+_Y$`j6T|^f?%hdvu233M7x*K|XH+cX;DSr&ZR9s11p@Uz>##Ah zclvLnrH?sZY?!`v8HTGpYQOf!t`6%sG@tEmpjo%W?(y!mTwE zTi&t#ZaX1gfIIN|rRAqj(O37q@6i}BVjMkB^*)59^DIOiHv6&Slg`8bs_U*yhK!Te zSCqIy+jf>mNvl@d-{kP$$K;;#{2cuh`REECcMWZvI6Y^9#Xmsip|pO+mTT=@^ho=) zG@ruya!4|HY9qX&9pqsL#0bikYBbF}>~;AK5{3OZoeBhUIc>c=DYf#T66Eh!_`cB+ zB*B`rpo4$%9n9iaboQ1Fqtx8wx+H`*L00WURKp;7DU{sZNFPhSN0BqTUL`j&&baMM zYK#E9$~8HmV3ZYxJhkd9rz%bSAs3Iu7gHP zJs?uMLDFI^`TCFhl<~EVFNccxOq#hAtGIiGL0Ay%RzpH<`7X;e3`LrC-Iswz;*cV#_0g)+bS>#-o?{N^iPgkcg_Q z*rB)k`-aA9sfX@aT$T9m0lEX0TnE7J=#K`0CE{05;6BSe$+y<1IMO6M1vcFpCsuW5 z^uRAwq?4W${;(7p>JflbXn=+86wy7t%eA8JNANqaPw}^adnjrc>|<UQ9zeDR`Trq+sBHVD!A{okUp^BD?_j?1kJ1?s?y@W?yI`-)4_D%A4Xs4%- z*s0$KS3J*QFO_@Ys2JgIvE^Cv53?0_We~?=`x$a(r04qVcOEK|d?x+JF`}nJsfSzW z(e^2dGHd@NPvt1Cg=A!wS5WWzk~D7vOAMWReBlvzE1;r7pm0rTrd837_*TA^I0k#k z;=k;yr-sj2jJp2SRb4M1ru0&P-2l!eQjDS_T>uWBRL#3!<)AX4OLRz`h zs(RShUw)!?LQ5_gNOET*+z$~fg5p_FWqPJ#TY0s>M&RZG-GT>xm2deQvsSx8gveI@H5LcZK-@7~irtgRvhuEK_$6Jml9-6{|r}zMa6mfv0r} z6#hufSkPLXZmaInKaFW6m4g=52WLU)&uv*b@jykpK;fUDLh+Pw;uCm#Dih~Tis2*N z#OlzDBPnx81Wut2_LX(W9e%8t>*Qi+#(WfbmdDmjq)IdcRRD{cya35!o4Sn;k1FA7 zc1$NXh#tw@*lEPjL##wN$jD~}kYh0p3t)03=lIsd{uP`1dsX1Vuz5L!hw>d$Rm=SA z!OaIID%&<%#oP$bhh%$j%l$0Gg;EcZc(e$j0$0E>F#!^6`a^pjDK!8wH0oK5N<0CU zVEPI~at=hM}nzK;D}xXsI?J|;xohy z)9gqwhQyw^QBPLfF`=9VQ@5c;o@>}z>_YBka4%g2TR|0z$*`!W($B|exk%tUoIZP_2L85(~3v$BH%+8Z|dbL9A)sNmV4q(gRr)hYo&r_ z{m>sd&d|z*8WFG<7lqgn;sv1`aAuylMr@2%LL|UXe1;sl_gHKI>ET)2kGsxTHM2DV zeqguQQFDts+X3VnD(pN+M{GESP?)IX?SGD>ZV9N5oEBHd8wf9B2G~-FCyuy=3DWxR zKE#72nixnD=Uw-qw`wc6=HdZsKdv{Mf?{T*A<;U?`;lOWWL>onvaF&v6U%5_2qIHY zeC75_tp+M!`}ZLPB#%%f$wN%jSiF=A#4bcuO_#xA;aNro_u_`!;X`9^gOn(NpyOQ1 z@y=$%hae0f{PipEDN#>e<x;6I>RbQ@@A3 zZ|y*$!56`V;az@ol50xeglcuzxmz+z<#5&xoAhd_zN|7V3ZK=4;d z*2TP5iTz&bb}a^k9?+V>|Lf%V|Dnv*V`dlz)39S>chs=2LeeP2U>l;mMw(cR5^r-u zNHm&!S>*MlkQJ}V42ikBxJ@xL#L{jtquFYFDcf$QTiupO`)T^*OWP*3bq{<0g8Sn+ z=Q+=L&hwn}eEU3~C#Ktke#p4d7wK{yJh`o1E$reTiF(yGEiSg@J5Vdru60ytUD(;( z1`&45ReH8f;ptsZ1SB8JM<|tDUHl>q2QPgO+rW;z?wY8v`uqVZ^wAghk6! zDkk8PQQsj_P0aU1A2RX7G4pnm! zZg5Wz3P={LB*j9hdtvK6kiiKnm@IYL6uM_Wa%}^s4t0=-g%c(K$t8eta2B- z#qdZW1nUhQ;=x*5P)}QeTyt_adg#eKp=Se7mo4iDn8Tle6c$6dW-HoMdh8{j&f%lI zLtRR3QVd>=lGVA_^#(=rbu__jLJ7J`Z(aCz0y~34Xms zI_+B)mz*J6o+YcD?zjQBB$qDH3#ECha%62oI6q>hMbvEZF7tk9lV0@^!^b`eS~R?* zTAI7>@3l?O&M^$X8^qf%b_{);Y-ZB1U2vHqie@;(mBfz`za-reJ}4|8%^U_UKRcw~ z_}seco7GE?3>*BRUcJhv6(`Q_Pp?pVGJJ0{uqmN5R25#*VbEzxBPGzd9-Q5MAT zQTAt1W#U?J0R|>XvIz#I1G%=@39jR4l6E%sNy`u|m3>Op*g*G z5)*-rSxczVjM_aYj6z=vdMGr5kSEWmpMr4GJB@uw^+HZ~dYTH&XWq(O_k)p+bCuFQ zmPHyO+5=AelK)5}OnvDn1`lL>U$54O3XjqG#NR9J=4*q00{WK{Xz6<@+r+&#qYeag zXmC;HOeRW91nO><4QZcIOPeR}yxH4Vq*u)j&&FVk$g{ZAFP{Z5QNk9Wq{%xl=5IP; zT-JFG;t7H#!!O|eilY|ovsp;#%FrpxD&p0Z29Il$c5x42hB_Ea?DLe`EBjB-~%LV#_U zgq)n`SQB>`k`CcS+Ja>mwqy07#o=)lm*@y{P><9lITyETMFpaJlrgBMj^q(tSiSnftiIY^Lh`A|a|54cJI&7X`H zQ;L9<%hdhps!UW8w(v-g8FX+tF9ojo=QwbI4`GlcPa>8F^ zfU@gbl|KBPGUE{t>3V-CW)E_e5CKA>odva6r66%sK$qNIrd{iPed;ae#0o(Tms8dq zM}~k!_Oym?$f8}*r*cB?aQYt0;UPF65qwC~^;+M^=Okk$V8ZP5#zv^_+MA=vKx8Hx z%M)Jb$2P3MlqU#n&Oc^xk25h|o%m;&f-o5vUpI!4XNDSJTS=bnV%pokU_oa&4A|~t z4cBd>W8*Ak)e8jj{;kX;sL_J%k!gx(ls2VWEr3^~{N3e>; zbyh-WJiH2Q9kYzF7i}q{w9`xr-tL!F=&f80KGiQ0jMp#67tky9gD+G4*;Ps;6s6%I7v!+iG*n;N>uqBTOpp>S!I+!F= z+MHdic$N?7m1ZG^btPL#x~ua3tE9S;=;G9I5yu6-;K6h4ggUE_bX_2F07OhNID~JP z?+F7+KYgB5%Uno?V3$UP6GnC^FMShF~{7#yfnL-8(**;7zABfWgn>v=4=A3mF0}+F5F@wSU z1FrmOKhULR=Ajp8>{4FZS61^T1LH|nRs%ZJ;DQHkt2YxsqnH%*l1e}Ar-VlAUDAOB zsK4FRQn=V|e10VF!{%?G0on8V!2XSEZ-}PzX>Y3@1nb^aRj$P{tbJd#U%pLS`agQ= gtTf@N*z$30d{wBlS=9Fv=njN~gTeyk0Z7q*0gdG~F8}}l diff --git a/gemini-terminal/logo.png b/gemini-terminal/logo.png index e539633a2de4b789b171867a03cda24b97e36bcc..ce40c20fb8cf3b5d4fa94888d635f6550c522deb 100644 GIT binary patch literal 71914 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 Nu<9$7a%J=2{{xI~{_6k$ literal 19333 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 From a8291557af364ea5497bc592542d26b9467fcc43 Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Thu, 23 Jul 2026 15:54:31 -0700 Subject: [PATCH 04/14] fix: resolve agy binary path reliably in Dockerfile and startup scripts --- gemini-terminal/Dockerfile | 4 +++- gemini-terminal/rootfs/usr/local/bin/gemini | 5 ++++- gemini-terminal/rootfs/usr/local/bin/gemini-session.sh | 7 ++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gemini-terminal/Dockerfile b/gemini-terminal/Dockerfile index 91c9f50..70fec78 100644 --- a/gemini-terminal/Dockerfile +++ b/gemini-terminal/Dockerfile @@ -82,7 +82,9 @@ RUN python3 -m venv /opt/zigporter-venv \ # Install Antigravity CLI (agy) and Prettier globally RUN curl -fsSL https://antigravity.google/cli/install.sh | bash \ - && ( [ -f /root/.antigravity/bin/agy ] && cp /root/.antigravity/bin/agy /usr/local/bin/agy || true ) \ + && ( AGY_PATH=$(find /root /usr /data -name "agy" -type f 2>/dev/null | head -n 1) \ + && [ -n "$AGY_PATH" ] && cp "$AGY_PATH" /usr/local/bin/agy || true ) \ + && chmod +x /usr/local/bin/agy \ && npm install -g prettier \ && npm cache clean --force diff --git a/gemini-terminal/rootfs/usr/local/bin/gemini b/gemini-terminal/rootfs/usr/local/bin/gemini index 79293b8..1cbfb85 100644 --- a/gemini-terminal/rootfs/usr/local/bin/gemini +++ b/gemini-terminal/rootfs/usr/local/bin/gemini @@ -5,8 +5,11 @@ # Gemini CLI has been transitioned to Antigravity CLI (agy). # This wrapper routes legacy 'gemini' commands directly to 'agy'. +export PATH="/usr/local/bin:/usr/bin:/bin:/root/.antigravity/bin:/data/.antigravity/bin:/root/.local/bin:/data/.local/bin:$PATH" + if [ -z "$SILENT_MIGRATION_NOTICE" ]; then echo "[Info] Gemini CLI transitioned to Antigravity CLI (agy). Executing: agy $*" >&2 fi -exec agy "$@" +AGY_BIN=$(which agy 2>/dev/null || find /root /usr /data -name "agy" -type f 2>/dev/null | head -n 1 || echo "agy") +exec "$AGY_BIN" "$@" diff --git a/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh b/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh index 8f4a412..5112bb4 100644 --- a/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh +++ b/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh @@ -16,8 +16,8 @@ fi # Change to Home Assistant config directory cd /homeassistant -# Set up PATH - ensure node, npm globals, and standard bins are available -export PATH="/usr/local/bin:/usr/bin:/bin:$PATH" +# Set up PATH - ensure node, npm globals, agy, and standard bins are available +export PATH="/usr/local/bin:/usr/bin:/bin:/root/.antigravity/bin:/data/.antigravity/bin:/root/.local/bin:/data/.local/bin:$PATH" # Configure git if not already configured if [ ! -f "${HOME}/.gitconfig" ]; then @@ -70,7 +70,8 @@ echo -e "${GRAY}Customize AI behavior by editing ${NC}${GREEN}AGENTS.md${NC} ${G echo "" # Launch Antigravity CLI (agy) -agy +AGY_BIN=$(which agy 2>/dev/null || find /root /usr /data -name "agy" -type f 2>/dev/null | head -n 1 || echo "agy") +"$AGY_BIN" # When agy exits, show help and drop to bash show_shell_help From c09b009c0c03c6222c28fdbbf166e0929c0bf173 Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Thu, 23 Jul 2026 15:55:11 -0700 Subject: [PATCH 05/14] style: update text branding to Antigravity CLI --- config/scripts/gemini-session-picker.sh | 2 +- gemini-terminal/Dockerfile | 4 ++-- gemini-terminal/build.yaml | 4 ++-- gemini-terminal/config.yaml | 6 +++--- .../rootfs/etc/s6-overlay/s6-rc.d/ha-gemini/run | 2 +- .../etc/s6-overlay/s6-rc.d/init-gemini/run | 2 +- .../rootfs/usr/local/bin/gemini-session.sh | 2 +- repository.yaml | 2 +- .../test_config_and_scripts.cpython-312.pyc | Bin 0 -> 7134 bytes 9 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 tests/__pycache__/test_config_and_scripts.cpython-312.pyc diff --git a/config/scripts/gemini-session-picker.sh b/config/scripts/gemini-session-picker.sh index f07eaa1..3522adf 100644 --- a/config/scripts/gemini-session-picker.sh +++ b/config/scripts/gemini-session-picker.sh @@ -6,7 +6,7 @@ show_banner() { clear echo "╔══════════════════════════════════════════════════════════════╗" - echo "║ 🤖 Gemini Terminal ║" + echo "║ 🤖 Antigravity CLI ║" echo "║ Interactive Session Picker ║" echo "╚══════════════════════════════════════════════════════════════╝" echo "" diff --git a/gemini-terminal/Dockerfile b/gemini-terminal/Dockerfile index 70fec78..41b024a 100644 --- a/gemini-terminal/Dockerfile +++ b/gemini-terminal/Dockerfile @@ -115,7 +115,7 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ # Labels for Home Assistant LABEL \ - io.hass.name="Gemini Terminal" \ - io.hass.description="Terminal interface for Google's Gemini CLI with deep MCP integration" \ + io.hass.name="Antigravity CLI" \ + io.hass.description="Terminal interface for Google's Antigravity CLI (agy) with deep MCP integration" \ io.hass.type="addon" \ io.hass.version="${BUILD_VERSION}" diff --git a/gemini-terminal/build.yaml b/gemini-terminal/build.yaml index 208ea07..e3843f2 100644 --- a/gemini-terminal/build.yaml +++ b/gemini-terminal/build.yaml @@ -7,7 +7,7 @@ args: TTYD_VERSION: "1.7.7" labels: - org.opencontainers.image.title: "Gemini Terminal" - org.opencontainers.image.description: "Terminal interface for Google's Gemini CLI" + org.opencontainers.image.title: "Antigravity CLI" + org.opencontainers.image.description: "Terminal interface for Google's Antigravity CLI (agy) with deep MCP integration" org.opencontainers.image.source: "https://github.com/oded996/gemini-cli-home-assistant-addons" org.opencontainers.image.licenses: "Apache-2.0" diff --git a/gemini-terminal/config.yaml b/gemini-terminal/config.yaml index 7824ebe..b2a981e 100644 --- a/gemini-terminal/config.yaml +++ b/gemini-terminal/config.yaml @@ -1,6 +1,6 @@ --- -name: "Gemini Terminal" -description: "Terminal interface for Google's Gemini CLI with deep MCP integration" +name: "Antigravity CLI" +description: "Terminal interface for Google's Antigravity CLI (agy) with deep MCP integration" version: "2.6.4" slug: "gemini_terminal" url: "https://github.com/oded996/gemini-cli-home-assistant-addons" @@ -15,7 +15,7 @@ ingress: true ingress_port: 8099 ingress_stream: true panel_icon: mdi:account-circle-outline -panel_title: "Gemini Terminal" +panel_title: "Antigravity CLI" # File access - Home Assistant config directory map: diff --git a/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/ha-gemini/run b/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/ha-gemini/run index bc46574..fb339ba 100644 --- a/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/ha-gemini/run +++ b/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/ha-gemini/run @@ -14,7 +14,7 @@ if [ -f /data/.env_vars ]; then fi bashio::log.info "==============================================" -bashio::log.info " Gemini Terminal (ttyd + ingress)" +bashio::log.info " Antigravity CLI (ttyd + ingress)" bashio::log.info "==============================================" # ============================================================================== diff --git a/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run b/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run index c6adbbe..54ea3bd 100644 --- a/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run +++ b/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run @@ -4,7 +4,7 @@ # Runs once at container startup to prepare the environment # ============================================================================== -bashio::log.info "Initializing Gemini Terminal..." +bashio::log.info "Initializing Antigravity CLI..." # Save addon version for the terminal banner bashio::addon.version > /data/.addon_version diff --git a/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh b/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh index 5112bb4..838ee8e 100644 --- a/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh +++ b/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh @@ -41,7 +41,7 @@ ADDON_VERSION=$(cat /data/.addon_version 2>/dev/null || echo "unknown") show_banner() { clear echo "" - echo -e "${BLUE}${BOLD}Gemini Terminal${NC} ${GRAY}v${ADDON_VERSION}${NC}" + echo -e "${BLUE}${BOLD}Antigravity CLI${NC} ${GRAY}v${ADDON_VERSION}${NC}" echo -e "${GRAY}Terminal interface powered by Antigravity CLI (agy)${NC}" echo "" echo -e "${GRAY}────────────────────────────────────────────────────────────${NC}" diff --git a/repository.yaml b/repository.yaml index 9f44b5c..ba8a02a 100644 --- a/repository.yaml +++ b/repository.yaml @@ -1,4 +1,4 @@ -name: Gemini Terminal for Home Assistant +name: Antigravity CLI for Home Assistant url: https://github.com/oded996/gemini-cli-home-assistant-addons maintainer: Gemini CLI Team diff --git a/tests/__pycache__/test_config_and_scripts.cpython-312.pyc b/tests/__pycache__/test_config_and_scripts.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0f5b533f407e3ce5700ac123f3602ff800cd310 GIT binary patch literal 7134 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 HhCTlS)?~M1 literal 0 HcmV?d00001 From 31ad5a8c77d4f0d504a44c80aefd44759fe1d44e Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Thu, 23 Jul 2026 15:57:27 -0700 Subject: [PATCH 06/14] bump: version 3.0.0 for Antigravity CLI migration --- gemini-terminal/CHANGELOG.md | 7 +++++++ gemini-terminal/config.yaml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gemini-terminal/CHANGELOG.md b/gemini-terminal/CHANGELOG.md index cb1e569..7aba49b 100644 --- a/gemini-terminal/CHANGELOG.md +++ b/gemini-terminal/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 3.0.0 +- **🚀 Antigravity CLI Migration (`agy`)** + - Transitioned CLI engine from deprecated Gemini CLI to Google's official **Antigravity CLI** (`agy`). + - Added backward-compatible `/usr/local/bin/gemini` command wrapper. + - Migrated MCP server configuration to standalone `mcp_config.json`. + - Updated branding and add-on icons to official Antigravity branding. + ## 2.6.4 - **🚀 Major Stability Refactor** - Completely refactored the add-on foundation with stability improvements inspired by the **OpenCode** project (https://github.com/magnusoverli/opencode/). diff --git a/gemini-terminal/config.yaml b/gemini-terminal/config.yaml index b2a981e..e9cf94d 100644 --- a/gemini-terminal/config.yaml +++ b/gemini-terminal/config.yaml @@ -1,7 +1,7 @@ --- name: "Antigravity CLI" description: "Terminal interface for Google's Antigravity CLI (agy) with deep MCP integration" -version: "2.6.4" +version: "3.0.0" slug: "gemini_terminal" url: "https://github.com/oded996/gemini-cli-home-assistant-addons" arch: From 0d9c8d8b22a7987ff15d104f2d3e210c103f99e2 Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Thu, 23 Jul 2026 16:11:52 -0700 Subject: [PATCH 07/14] fix: remove deprecated build.yaml and inline build parameters into Dockerfile --- gemini-terminal/Dockerfile | 10 +++++++--- gemini-terminal/build.yaml | 13 ------------- 2 files changed, 7 insertions(+), 16 deletions(-) delete mode 100644 gemini-terminal/build.yaml diff --git a/gemini-terminal/Dockerfile b/gemini-terminal/Dockerfile index 41b024a..54ddea8 100644 --- a/gemini-terminal/Dockerfile +++ b/gemini-terminal/Dockerfile @@ -1,6 +1,6 @@ # Global ARGs (available in FROM instructions) -ARG BUILD_FROM=ghcr.io/home-assistant/amd64-base-debian:trixie -ARG BUILD_ARCH +ARG BUILD_ARCH=amd64 +ARG BUILD_FROM=ghcr.io/home-assistant/${BUILD_ARCH}-base-debian:trixie ## Stage 1: Build hab CLI from source (pinned release) FROM golang:1.24-trixie AS hab-builder @@ -118,4 +118,8 @@ LABEL \ io.hass.name="Antigravity CLI" \ io.hass.description="Terminal interface for Google's Antigravity CLI (agy) with deep MCP integration" \ io.hass.type="addon" \ - io.hass.version="${BUILD_VERSION}" + io.hass.version="${BUILD_VERSION}" \ + org.opencontainers.image.title="Antigravity CLI" \ + org.opencontainers.image.description="Terminal interface for Google's Antigravity CLI (agy) with deep MCP integration" \ + org.opencontainers.image.source="https://github.com/oded996/gemini-cli-home-assistant-addons" \ + org.opencontainers.image.licenses="Apache-2.0" diff --git a/gemini-terminal/build.yaml b/gemini-terminal/build.yaml deleted file mode 100644 index e3843f2..0000000 --- a/gemini-terminal/build.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -build_from: - aarch64: ghcr.io/home-assistant/aarch64-base-debian:trixie - amd64: ghcr.io/home-assistant/amd64-base-debian:trixie - -args: - TTYD_VERSION: "1.7.7" - -labels: - org.opencontainers.image.title: "Antigravity CLI" - org.opencontainers.image.description: "Terminal interface for Google's Antigravity CLI (agy) with deep MCP integration" - org.opencontainers.image.source: "https://github.com/oded996/gemini-cli-home-assistant-addons" - org.opencontainers.image.licenses: "Apache-2.0" From eb0a99c1db2f60172d24d1e4230877a897098042 Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Thu, 23 Jul 2026 16:14:28 -0700 Subject: [PATCH 08/14] fix: update Dockerfile agy install step to avoid find exit error under pipefail --- gemini-terminal/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gemini-terminal/Dockerfile b/gemini-terminal/Dockerfile index 54ddea8..d0d9f2c 100644 --- a/gemini-terminal/Dockerfile +++ b/gemini-terminal/Dockerfile @@ -82,9 +82,10 @@ RUN python3 -m venv /opt/zigporter-venv \ # Install Antigravity CLI (agy) and Prettier globally RUN curl -fsSL https://antigravity.google/cli/install.sh | bash \ - && ( AGY_PATH=$(find /root /usr /data -name "agy" -type f 2>/dev/null | head -n 1) \ - && [ -n "$AGY_PATH" ] && cp "$AGY_PATH" /usr/local/bin/agy || true ) \ - && chmod +x /usr/local/bin/agy \ + && ( for p in /root/.antigravity/bin/agy /root/.local/bin/agy /root/bin/agy /usr/local/bin/agy; do \ + if [ -f "$p" ]; then cp "$p" /usr/local/bin/agy 2>/dev/null || true; break; fi; \ + done ) \ + && chmod +x /usr/local/bin/agy 2>/dev/null || true \ && npm install -g prettier \ && npm cache clean --force From 2d7c5db0c30559220c70542f7fbc77e1a61caac4 Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Thu, 23 Jul 2026 16:25:57 -0700 Subject: [PATCH 09/14] style: update remaining Gemini Terminal references to Antigravity CLI --- DEVELOPMENT.md | 2 +- DEVELOPMENT_STATUS.md | 2 +- DOCS.md | 54 +++++++------------ GEMINI.md | 4 +- README.md | 6 +-- flake.nix | 2 +- gemini-terminal/DOCS.md | 6 +-- gemini-terminal/README.md | 10 ++-- .../etc/s6-overlay/s6-rc.d/ha-gemini/run | 2 +- .../etc/s6-overlay/s6-rc.d/init-gemini/run | 2 +- 10 files changed, 38 insertions(+), 52 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 3a991c9..1585acf 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,6 +1,6 @@ # Development Guide -This guide covers local development and testing workflows for the Gemini Terminal add-on. +This guide covers local development and testing workflows for the Antigravity CLI add-on. ## Local Container Testing diff --git a/DEVELOPMENT_STATUS.md b/DEVELOPMENT_STATUS.md index 483494a..45d1b98 100644 --- a/DEVELOPMENT_STATUS.md +++ b/DEVELOPMENT_STATUS.md @@ -1,4 +1,4 @@ -# Gemini Terminal Add-on - Development Status +# Antigravity CLI Add-on - Development Status ## Project Overview Refitting the Home Assistant add-on to support Google's Gemini CLI, including interactive session management, Home Assistant MCP integration, and automated context generation. diff --git a/DOCS.md b/DOCS.md index cee7719..7576ace 100644 --- a/DOCS.md +++ b/DOCS.md @@ -1,8 +1,8 @@ -# Gemini Terminal Home Assistant Add-on Documentation +# Antigravity CLI Home Assistant Add-on Documentation ## Overview -Gemini Terminal provides a web-based terminal interface with the Google **Gemini CLI** pre-installed, allowing you to access Gemini's powerful AI capabilities directly from your Home Assistant dashboard. Gemini CLI is an AI coding assistant by Google that can help you with Home Assistant configuration, automation creation, debugging, and general coding tasks. +Antigravity CLI provides a web-based terminal interface pre-installed with Google's official **Antigravity CLI** (`agy`), allowing you to access powerful AI capabilities directly from your Home Assistant dashboard. Antigravity CLI is an AI coding assistant by Google that can help you with Home Assistant configuration, automation creation, debugging, and general coding tasks. ## Installation @@ -12,7 +12,7 @@ Follow these steps to install the add-on: 2. Go to **Settings** -> **Add-ons** -> **Add-on Store** 3. Click the three dots (top right corner) and select **"Repositories"** 4. Add the URL of this repository: `https://github.com/oded996/gemini-cli-home-assistant-addons` and click **"Add"** -5. Find the **"Gemini Terminal"** add-on and click on it +5. Find the **"Antigravity CLI"** add-on and click on it 6. Click **"Install"** ## Configuration @@ -21,65 +21,51 @@ The add-on works out of the box using OAuth authentication. However, you can als ## Usage -The Gemini CLI launches automatically when you open the terminal. You can interact with it using the following commands: +Antigravity CLI launches automatically when you open the terminal. You can interact with it using the following commands: ### Common Commands -- `gemini` - Start an interactive Gemini session -- `gemini --help` - See all available commands -- `gemini "your prompt"` - Ask Gemini a single question or provide a direct command -- `gemini -r latest` - Resume your most recent conversation +- `agy` (or `gemini`) - Start an interactive session +- `agy --help` - See all available commands +- `agy "your prompt"` - Ask a single question or provide a direct command +- `agy -r latest` - Resume your most recent conversation - `ha-context --full` - Refresh the Home Assistant context (`GEMINI.md`) with full entity details -Your session data and configuration are stored in `/data/.config/gemini`, which persists between restarts. +Your session data and configuration are stored in `/data/.config/antigravity` (and `/data/.config/gemini`), which persists between restarts. ## Home Assistant-Specific Use Cases -Gemini Terminal is particularly useful for Home Assistant tasks. Because it has a built-in **MCP (Model Context Protocol)** server and access to a generated **GEMINI.md** context file, it knows your system intimately. +Antigravity CLI is particularly useful for Home Assistant tasks. Because it has a built-in **MCP (Model Context Protocol)** server and access to a generated **GEMINI.md** context file, it knows your system intimately. ### 1. Automation Creation and Debugging ``` # Ask about your home state -gemini "Which lights are currently on?" +agy "Which lights are currently on?" # Create a new automation -gemini "create an automation that turns on the porch lights when the front door opens, but only after sunset" +agy "create an automation that turns on the porch lights when the front door opens, but only after sunset" ``` ### 2. YAML Configuration Help -``` -# Get help with syntax -gemini "what's wrong with this YAML? [paste YAML]" - -# Analyze your current config -gemini "Analyze my /config/configuration.yaml and suggest improvements" -``` - -### 3. Entity Management +Look at `automations.yaml` and help write proper Home Assistant configuration. -``` -# Clean up entity names -gemini "suggest better names for these entities: [paste entity list]" - -# Create a template sensor -gemini "create a template sensor that averages all my temperature sensors" -``` +--- ## Safety & Guardrails -Gemini Terminal is designed to be powerful but safe. It includes several built-in guardrails to prevent accidental or destructive changes: +Antigravity CLI is designed to be powerful but safe. It includes several built-in guardrails to prevent accidental or destructive changes: ### 1. Interactive Approvals -By default, the Gemini CLI will **never** modify a file or execute a shell command without your explicit permission. It will show you a **diff** of the proposed changes and ask for a confirmation (`y/n`). +By default, `agy` will **never** modify a file or execute a shell command without your explicit permission. It will show you a **diff** of the proposed changes and ask for a confirmation (`y/n`). ### 2. Plan Mode (Dry-Run) -If you want to explore solutions without any risk of modification, you can launch Gemini in **Plan Mode**: +If you want to explore solutions without any risk of modification, you can launch in **Plan Mode**: ```bash -gemini --approval-mode plan +agy --approval-mode plan ``` -In this mode, Gemini can read your configuration and propose changes, but it is strictly forbidden from executing any tools that modify your system or files. +In this mode, `agy` can read your configuration and propose changes, but it is strictly forbidden from executing any tools that modify your system or files. ### 3. Home Assistant Backups Because this add-on operates on your live `/config` directory, we always recommend ensuring you have a recent **Home Assistant backup** before performing major AI-driven refactoring of your YAML files. @@ -95,7 +81,7 @@ Check the add-on logs for detailed information about any issues: ## Security Considerations -Gemini Terminal is designed with security in mind: +Antigravity CLI is designed with security in mind: - The add-on runs in an isolated container. - Your code and queries go directly to Google's API. diff --git a/GEMINI.md b/GEMINI.md index 1f1f984..54f8161 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -4,7 +4,7 @@ This file provides guidance to Gemini CLI when working with code in this reposit ## Project Overview -This repository contains Home Assistant add-ons, specifically the **Gemini Terminal** add-on which provides a web-based terminal interface with the Google **Gemini CLI** pre-installed. The add-on allows Home Assistant users to access Gemini AI capabilities directly from their dashboard. +This repository contains Home Assistant add-ons, specifically the **Antigravity CLI** add-on which provides a web-based terminal interface with Google's **Antigravity CLI** (`agy`) pre-installed. The add-on allows Home Assistant users to access AI capabilities directly from their dashboard. ## Development Environment @@ -18,7 +18,7 @@ direnv allow ``` ### Core Development Commands -- `build-addon` - Build the Gemini Terminal add-on with Podman. +- `build-addon` - Build the Antigravity CLI add-on with Podman. - `run-addon` - Run add-on locally on port 7682 with volume mapping. - `lint-dockerfile` - Lint Dockerfile using hadolint. - `test-endpoint` - Test web endpoint availability (curl localhost:7682). diff --git a/README.md b/README.md index 73421c4..271fe13 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Gemini Terminal for Home Assistant +# Antigravity CLI for Home Assistant Bring the power of Google's **Antigravity CLI** (`agy`) directly to your Home Assistant dashboard! -Gemini Terminal provides an AI-driven, persistent web terminal pre-configured with the Home Assistant MCP (`ha-mcp`) server, giving `agy` native access to your smart home environment. +Antigravity CLI provides an AI-driven, persistent web terminal pre-configured with the Home Assistant MCP (`ha-mcp`) server, giving `agy` native access to your smart home environment. --- @@ -31,7 +31,7 @@ Click the button below to add this repository directly to your Home Assistant in 2. Click the **⋮** menu in the top right corner and select **Repositories**. 3. Add the following URL: `https://github.com/oded996/gemini-cli-home-assistant-addons` -4. Find **Gemini Terminal** in the add-on store and click **Install**. +4. Find **Antigravity CLI** in the add-on store and click **Install**. ## ⚙️ Configuration & Usage diff --git a/flake.nix b/flake.nix index 18df52c..6057532 100644 --- a/flake.nix +++ b/flake.nix @@ -34,7 +34,7 @@ shellHook = '' echo "🏠 Home Assistant Add-on Development Environment" echo "Available commands:" - echo " build-addon - Build the Gemini Terminal add-on" + echo " build-addon - Build the Antigravity CLI add-on" echo " run-addon - Run the add-on locally" echo " validate-addon - Validate add-on structure" echo " lint-dockerfile - Lint the Dockerfile" diff --git a/gemini-terminal/DOCS.md b/gemini-terminal/DOCS.md index bd47425..bbeaa04 100644 --- a/gemini-terminal/DOCS.md +++ b/gemini-terminal/DOCS.md @@ -1,4 +1,4 @@ -# Gemini Terminal +# Antigravity CLI A terminal interface powered by Google's **Antigravity CLI** (`agy`) in Home Assistant. @@ -9,7 +9,7 @@ This add-on provides a web-based terminal pre-installed with **Antigravity CLI** ## Installation 1. Add this repository to your Home Assistant add-on store: `https://github.com/oded996/gemini-cli-home-assistant-addons` -2. Install the **Gemini Terminal** add-on. +2. Install the **Antigravity CLI** add-on. 3. Start the add-on. 4. Click **"OPEN WEB UI"** to access the terminal. 5. On first use, follow the prompts to log in to your Google account (or enter a `gemini_api_key` in the configuration for headless login). @@ -79,7 +79,7 @@ The MCP (Model Context Protocol) server automatically connects to your Home Assi ## Safety & Guardrails -Gemini Terminal is designed to be powerful but safe. It includes several built-in guardrails to prevent accidental or destructive changes: +Antigravity CLI is designed to be powerful but safe. It includes several built-in guardrails to prevent accidental or destructive changes: ### 1. Interactive Approvals By default, the Gemini CLI will **never** modify a file or execute a shell command without your explicit permission. It will show you a **diff** of the proposed changes and ask for a confirmation (`y/n`). diff --git a/gemini-terminal/README.md b/gemini-terminal/README.md index 39ca0d7..29e5565 100644 --- a/gemini-terminal/README.md +++ b/gemini-terminal/README.md @@ -1,12 +1,12 @@ -# Gemini Terminal for Home Assistant +# Antigravity CLI for Home Assistant A secure, web-based terminal with Google's **Antigravity CLI** (`agy`) pre-installed for Home Assistant. -![Gemini Terminal Screenshot](https://github.com/oded996/gemini-cli-home-assistant-addons/raw/main/gemini-terminal/screenshot.png) +![Antigravity CLI Screenshot](https://github.com/oded996/gemini-cli-home-assistant-addons/raw/main/gemini-terminal/screenshot.png) -*Gemini Terminal running in Home Assistant* +*Antigravity CLI running in Home Assistant* -## What is Gemini Terminal? +## What is Antigravity CLI? This add-on provides a web-based terminal interface pre-installed with Google's official **Antigravity CLI** (`agy`), allowing you to use powerful AI capabilities directly from your Home Assistant dashboard. It gives you direct access to the AI assistant through a terminal, ideal for: @@ -51,7 +51,7 @@ persist-install pip requests ## Installation 1. Add this repository to your Home Assistant add-on store: `https://github.com/oded996/gemini-cli-home-assistant-addons` -2. Install the **Gemini Terminal** add-on. +2. Install the **Antigravity CLI** add-on. 3. (Optional) Enter your **Gemini API Key** in the configuration tab. 4. Start the add-on. 5. Click "OPEN WEB UI" or use the sidebar icon to access. diff --git a/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/ha-gemini/run b/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/ha-gemini/run index fb339ba..62afe13 100644 --- a/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/ha-gemini/run +++ b/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/ha-gemini/run @@ -1,6 +1,6 @@ #!/command/with-contenv bashio # ============================================================================== -# Gemini Terminal - Terminal Service (ttyd + tmux via ingress) +# Antigravity CLI - Terminal Service (ttyd + tmux via ingress) # ============================================================================== # Set home to persistent data directory diff --git a/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run b/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run index 54ea3bd..6e0faf2 100644 --- a/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run +++ b/gemini-terminal/rootfs/etc/s6-overlay/s6-rc.d/init-gemini/run @@ -1,6 +1,6 @@ #!/command/with-contenv bashio # ============================================================================== -# Gemini Terminal - Initialization Service (oneshot) +# Antigravity CLI - Initialization Service (oneshot) # Runs once at container startup to prepare the environment # ============================================================================== From ec793ee8c0bdf6654e5ffdfb522896e2d7435663 Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Fri, 24 Jul 2026 12:42:12 -0700 Subject: [PATCH 10/14] fix: update plain Gemini references to Antigravity and restore docs examples --- DOCS.md | 18 +++++++++++++++++- README.md | 4 ++-- gemini-terminal/DOCS.md | 4 ++-- gemini-terminal/README.md | 12 ++++++------ .../rootfs/usr/local/bin/gemini-session.sh | 4 ++-- 5 files changed, 29 insertions(+), 13 deletions(-) diff --git a/DOCS.md b/DOCS.md index 7576ace..ed2c3c0 100644 --- a/DOCS.md +++ b/DOCS.md @@ -49,7 +49,23 @@ agy "create an automation that turns on the porch lights when the front door ope ### 2. YAML Configuration Help -Look at `automations.yaml` and help write proper Home Assistant configuration. +```bash +# Get help with syntax +agy "what's wrong with this YAML? [paste YAML]" + +# Analyze your current config +agy "Analyze my /config/configuration.yaml and suggest improvements" +``` + +### 3. Entity Management + +```bash +# Clean up entity names +agy "suggest better names for these entities: [paste entity list]" + +# Create a template sensor +agy "create a template sensor that averages all my temperature sensors" +``` --- diff --git a/README.md b/README.md index 271fe13..3d83db3 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@ Antigravity CLI provides an AI-driven, persistent web terminal pre-configured wi ## 🚀 Key Features * **Antigravity CLI Integration**: A full-featured web terminal pre-installed with Google's official `agy` binary (with backward-compatible support for `gemini` commands). -* **Native Home Assistant Control**: Thanks to the integrated `ha-mcp` server (`mcp_config.json`), the AI can read states, call services, and interact with your entities natively. +* **Native Home Assistant Control**: Thanks to the integrated `ha-mcp` server (`mcp_config.json`), Antigravity can read states, call services, and interact with your entities natively. * **Session Persistence**: Built-in `tmux` support means you can navigate away or refresh without losing your terminal session or AI conversation. -* **Smart Environment Context**: Automatically creates a `GEMINI.md` file loaded with system info, architecture, and recent logs to ground the AI in your specific setup. +* **Smart Environment Context**: Automatically creates a `GEMINI.md` file loaded with system info, architecture, and recent logs to ground Antigravity in your specific setup. * **Seamless Authentication**: Configure your `GEMINI_API_KEY` straight from the Home Assistant add-on UI. * **Direct Config Access**: Boots directly into your `/config` directory for immediate YAML editing and troubleshooting. diff --git a/gemini-terminal/DOCS.md b/gemini-terminal/DOCS.md index bbeaa04..eb512b7 100644 --- a/gemini-terminal/DOCS.md +++ b/gemini-terminal/DOCS.md @@ -24,10 +24,10 @@ Your authentication credentials and session data are stored in the `/data/.confi |--------|---------|-------------| | `gemini_api_key` | `""` | Optional Google API key for headless authentication | | `gemini_debug` | `false` | Enable verbose debugging and show internal logs in add-on logs | -| `auto_launch_gemini` | `true` | Automatically start AI terminal session on open | +| `auto_launch_gemini` | `true` | Automatically start Antigravity when opening the terminal | | `enable_ha_mcp` | `true` | Enable Home Assistant MCP server integration (`mcp_config.json`). | -| `ha_smart_context` | `true` | Automatically generate HA context (`GEMINI.md`) for AI awareness. | +| `ha_smart_context` | `true` | Automatically generate HA context (`GEMINI.md`) for Antigravity awareness. | | `persistent_apk_packages` | `[]` | APK packages to install on every startup. | | `persistent_pip_packages` | `[]` | Python packages to install on every startup. | diff --git a/gemini-terminal/README.md b/gemini-terminal/README.md index 29e5565..2370a5f 100644 --- a/gemini-terminal/README.md +++ b/gemini-terminal/README.md @@ -8,12 +8,12 @@ A secure, web-based terminal with Google's **Antigravity CLI** (`agy`) pre-insta ## What is Antigravity CLI? -This add-on provides a web-based terminal interface pre-installed with Google's official **Antigravity CLI** (`agy`), allowing you to use powerful AI capabilities directly from your Home Assistant dashboard. It gives you direct access to the AI assistant through a terminal, ideal for: +This add-on provides a web-based terminal interface pre-installed with Google's official **Antigravity CLI** (`agy`), allowing you to use Antigravity's powerful AI capabilities directly from your Home Assistant dashboard. It gives you direct access to Google's Antigravity AI assistant through a terminal, ideal for: - **Controlling your Home**: Use natural language to control devices via the built-in MCP server (`mcp_config.json`). - **Writing and editing code**: Get help with Home Assistant YAML, Python scripts, and more. - **Debugging problems**: Analyze Home Assistant logs and troubleshoot automation issues. -- **Smart Context**: Automatically knows about your entities, system info, and recent errors via `GEMINI.md`. +- **Smart Context**: Antigravity automatically knows about your entities, system info, and recent errors via `GEMINI.md`. ## Features @@ -21,7 +21,7 @@ This add-on provides a web-based terminal interface pre-installed with Google's - **Auto-Launch**: `agy` starts automatically when you open the terminal. - **Home Assistant MCP**: Pre-configured [ha-mcp](https://github.com/homeassistant-ai/ha-mcp) integration (`mcp_config.json`) for direct control of your home. - **Headless Auth**: Provide your `gemini_api_key` in the add-on configuration for zero-config startup. -- **Smart Context**: Automatically generates a `GEMINI.md` file with your Home Assistant state for the AI to read. +- **Smart Context**: Automatically generates a `GEMINI.md` file with your Home Assistant state for Antigravity to read. - **Direct Config Access**: Terminal starts in your `/config` directory for immediate access to all Home Assistant files. - **Session Persistence**: Built-in `tmux` support ensures your session stays alive if you close the browser tab. - **Persistent Package Management**: Install APK and pip packages that survive container restarts using the `persist-install` command. @@ -31,7 +31,7 @@ This add-on provides a web-based terminal interface pre-installed with Google's The terminal automatically starts `agy` when you open it. You can immediately start using commands like: ```bash -# Ask the AI a question about your home +# Ask Antigravity a question about your home agy "Which lights are currently on?" # Start an interactive session (or use 'gemini' alias) @@ -61,9 +61,9 @@ persist-install pip requests | Option | Default | Description | |--------|---------|-------------| | `gemini_api_key` | `""` | Optional Google API key for automatic authentication. | -| `auto_launch_gemini` | `true` | Auto-start AI session on terminal open. | +| `auto_launch_gemini` | `true` | Auto-start Antigravity on terminal open. | | `enable_ha_mcp` | `true` | Enable the Home Assistant MCP server integration. | -| `ha_smart_context` | `true` | Automatically generate HA context (`GEMINI.md`) for AI awareness. | +| `ha_smart_context` | `true` | Automatically generate HA context (`GEMINI.md`) for Antigravity. | | `persistent_apk_packages` | `[]` | List of APK packages to install on startup. | | `persistent_pip_packages` | `[]` | List of pip packages to install on startup. | diff --git a/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh b/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh index 838ee8e..c2786c8 100644 --- a/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh +++ b/gemini-terminal/rootfs/usr/local/bin/gemini-session.sh @@ -16,7 +16,7 @@ fi # Change to Home Assistant config directory cd /homeassistant -# Set up PATH - ensure node, npm globals, agy, and standard bins are available +# Set up PATH - ensure agy and standard bins are available export PATH="/usr/local/bin:/usr/bin:/bin:/root/.antigravity/bin:/data/.antigravity/bin:/root/.local/bin:/data/.local/bin:$PATH" # Configure git if not already configured @@ -56,7 +56,7 @@ show_shell_help() { echo -e "${WHITE}Dropped to shell.${NC} Working directory: ${CYAN}/homeassistant${NC}" echo "" echo -e "${BOLD}Commands${NC}" - echo -e " ${GREEN}agy${NC} (or ${GREEN}gemini${NC}) Restart the AI coding agent" + echo -e " ${GREEN}agy${NC} (or ${GREEN}gemini${NC}) Restart the Antigravity coding agent" echo -e " ${GREEN}ha-logs${NC} ${GRAY}${NC} View logs (core, error, supervisor, host)" echo -e " ${GREEN}hab${NC} ${GRAY}${NC} HA admin CLI (entities, areas, dashboards, backups)" echo -e " ${GREEN}zigporter${NC} ${GRAY}${NC} Zigbee tools (rename, inspect, stale, mesh)" From ce250c7e09a7b4d49ba5e055cba7618fbae9129d Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Fri, 24 Jul 2026 12:44:58 -0700 Subject: [PATCH 11/14] docs: add automated unit testing instructions to DEVELOPMENT.md --- DEVELOPMENT.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 1585acf..b2209cb 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -10,6 +10,14 @@ This guide covers local development and testing workflows for the Antigravity CL - **Git** repository cloned locally - **NixOS development environment** (optional, for `nix develop`) +### Automated Unit Testing + +Run the Python unit test suite to validate shell script syntax (`bash -n`), Dockerfile installer logic, MCP configuration schema, and alias wrappers: + +```bash +python3 -m unittest discover -s tests +``` + ### Quick Start Testing The fastest way to test changes without publishing new versions: From 434dabcf7d8f245cac97eeab571c01c6bace8e80 Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Fri, 24 Jul 2026 12:46:54 -0700 Subject: [PATCH 12/14] docs: update CHANGELOG.md with Dockerfile refactoring bullet --- gemini-terminal/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/gemini-terminal/CHANGELOG.md b/gemini-terminal/CHANGELOG.md index 7aba49b..4b5b801 100644 --- a/gemini-terminal/CHANGELOG.md +++ b/gemini-terminal/CHANGELOG.md @@ -5,6 +5,7 @@ - Transitioned CLI engine from deprecated Gemini CLI to Google's official **Antigravity CLI** (`agy`). - Added backward-compatible `/usr/local/bin/gemini` command wrapper. - Migrated MCP server configuration to standalone `mcp_config.json`. + - Inlined `build.yaml` parameters into `Dockerfile` per Home Assistant Supervisor standards. - Updated branding and add-on icons to official Antigravity branding. ## 2.6.4 From c3a730679316639c1a0c9c1c2dd755ecc50a0b4b Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Sat, 25 Jul 2026 16:23:48 -0700 Subject: [PATCH 13/14] ci: remove broken GitHub Action workflows referencing invalid action Remove .github/workflows/gemini-cli-review.yml and .github/workflows/gemini.yml. Both workflow files attempted to call googles/gemini-code-action@v1, which is not a valid or accessible GitHub Action repository, causing GitHub Actions runs on pull requests to fail with 'Unable to resolve action googles/gemini-code-action, repository not found'. --- .github/workflows/gemini-cli-review.yml | 57 ------------------------- .github/workflows/gemini.yml | 50 ---------------------- 2 files changed, 107 deletions(-) delete mode 100644 .github/workflows/gemini-cli-review.yml delete mode 100644 .github/workflows/gemini.yml diff --git a/.github/workflows/gemini-cli-review.yml b/.github/workflows/gemini-cli-review.yml deleted file mode 100644 index 2d8a56b..0000000 --- a/.github/workflows/gemini-cli-review.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Gemini Code Review - -on: - pull_request_target: - types: [opened, synchronize] - # Optional: Only run on specific file changes - # paths: - # - "src/**/*.ts" - # - "src/**/*.tsx" - # - "src/**/*.js" - # - "src/**/*.jsx" - -jobs: - gemini-review: - # Optional: Filter by PR author - # if: | - # github.event.pull_request.user.login == 'external-contributor' || - # github.event.pull_request.user.login == 'new-developer' || - # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' - - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: write - issues: read - id-token: write - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - name: Run Gemini Code Review - id: gemini-review - uses: googles/gemini-code-action@v1 - with: - google_api_key: ${{ secrets.GOOGLE_API_KEY }} - prompt: | - REPO: ${{ github.repository }} - PR NUMBER: ${{ github.event.pull_request.number }} - - Please review this pull request and provide feedback on: - - Code quality and best practices - - Potential bugs or issues - - Performance considerations - - Security concerns - - Test coverage - - Use the repository's GEMINI.md for guidance on style and conventions. Be constructive and helpful in your feedback. - - Use `gh pr comment` with your Bash tool to leave your review as a comment on the PR. - - # See https://github.com/googles/gemini-code-action/blob/main/docs/usage.md - # or https://docs.gemini.com/en/docs/gemini-code/sdk#command-line for available options - gemini_args: '--allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)"' - diff --git a/.github/workflows/gemini.yml b/.github/workflows/gemini.yml deleted file mode 100644 index e194f59..0000000 --- a/.github/workflows/gemini.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Gemini Code - -on: - issue_comment: - types: [created] - pull_request_review_comment: - types: [created] - issues: - types: [opened, assigned] - pull_request_review: - types: [submitted] - -jobs: - gemini: - if: | - (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@gemini')) || - (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@gemini')) || - (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@gemini')) || - (github.event_name == 'issues' && (contains(github.event.issue.body, '@gemini') || contains(github.event.issue.title, '@gemini'))) - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: read - issues: read - id-token: write - actions: read # Required for Gemini to read CI results on PRs - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - name: Run Gemini Code - id: gemini - uses: googles/gemini-code-action@v1 - with: - gemini_code_oauth_token: ${{ secrets.GEMINI_CODE_OAUTH_TOKEN }} - - # This is an optional setting that allows Gemini to read CI results on PRs - additional_permissions: | - actions: read - - # Optional: Give a custom prompt to Gemini. If this is not specified, Gemini will perform the instructions specified in the comment that tagged it. - # prompt: 'Update the pull request description to include a summary of changes.' - - # Optional: Add gemini_args to customize behavior and configuration - # See https://github.com/googles/gemini-code-action/blob/main/docs/usage.md - # or https://docs.gemini.com/en/docs/gemini-code/sdk#command-line for available options - # gemini_args: '--model gemini-opus-4-1-20250805 --allowed-tools Bash(gh pr:*)' - From d6a7a429a2ad0b1dfb4f76cb67a18b82419aa08e Mon Sep 17 00:00:00 2001 From: Garrett Plasky Date: Sun, 26 Jul 2026 12:22:20 -0700 Subject: [PATCH 14/14] Update HA sidebar panel_icon to mdi:google-gemini --- gemini-terminal/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gemini-terminal/config.yaml b/gemini-terminal/config.yaml index e9cf94d..c52cee3 100644 --- a/gemini-terminal/config.yaml +++ b/gemini-terminal/config.yaml @@ -14,7 +14,7 @@ init: false ingress: true ingress_port: 8099 ingress_stream: true -panel_icon: mdi:account-circle-outline +panel_icon: mdi:google-gemini panel_title: "Antigravity CLI" # File access - Home Assistant config directory