{"id":51590721,"url":"https://github.com/hellqvio86/missing-ag-updater","last_synced_at":"2026-07-11T14:30:50.348Z","repository":{"id":364483656,"uuid":"1268099742","full_name":"hellqvio86/missing-ag-updater","owner":"hellqvio86","description":"AntiGravity updater","archived":false,"fork":false,"pushed_at":"2026-07-11T10:54:38.000Z","size":653,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-11T12:12:41.062Z","etag":null,"topics":["antigravity","antigravity-cli","antigravity-ide"],"latest_commit_sha":null,"homepage":"https://github.com/hellqvio86/missing-ag-updater","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hellqvio86.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"agents.md","dco":null,"cla":null}},"created_at":"2026-06-13T06:23:29.000Z","updated_at":"2026-07-11T10:54:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hellqvio86/missing-ag-updater","commit_stats":null,"previous_names":["hellqvio86/missing-ag-updater"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/hellqvio86/missing-ag-updater","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellqvio86%2Fmissing-ag-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellqvio86%2Fmissing-ag-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellqvio86%2Fmissing-ag-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellqvio86%2Fmissing-ag-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hellqvio86","download_url":"https://codeload.github.com/hellqvio86/missing-ag-updater/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hellqvio86%2Fmissing-ag-updater/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35365808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["antigravity","antigravity-cli","antigravity-ide"],"created_at":"2026-07-11T14:30:49.777Z","updated_at":"2026-07-11T14:30:50.342Z","avatar_url":"https://github.com/hellqvio86.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Missing-AG-Updater\n[![CI/CD](https://github.com/hellqvio86/missing-ag-updater/actions/workflows/ci.yml/badge.svg)](https://github.com/hellqvio86/missing-ag-updater/actions/workflows/ci.yml)\n[![Coverage](coverage.svg)](https://github.com/hellqvio86/missing-ag-updater/actions)\n[![PyPI Version](https://img.shields.io/pypi/v/missing-ag-updater.svg)](https://pypi.org/project/missing-ag-updater/)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/missing-ag-updater.svg)](https://pypi.org/project/missing-ag-updater/)\n[![Python Versions](https://img.shields.io/pypi/pyversions/missing-ag-updater.svg)](https://pypi.org/project/missing-ag-updater/)\n[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)\n[![Checked with mypy](https://www.mypy-lang.org/static/mypy_badge.svg)](https://mypy-lang.org/)\n[![Pydantic](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/pydantic/pydantic/main/docs/badge/v2.json)](https://pydantic.dev)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n```\n╔═════════════════════════════════════════════════════════════════════════════╗\n║ ███╗   ███╗██╗███████╗███████╗██╗███╗   ██╗ ██████╗        █████╗  ██████╗  ║\n║ ████╗ ████║██║██╔════╝██╔════╝██║████╗  ██║██╔════╝       ██╔══██╗██╔════╝  ║\n║ ██╔████╔██║██║███████╗███████╗██║██╔██╗ ██║██║  ███╗█████╗███████║██║  ███╗ ║\n║ ██║╚██╔╝██║██║╚════██║╚════██║██║██║╚██╗██║██║   ██║╚════╝██╔══██║██║   ██║ ║\n║ ██║ ╚═╝ ██║██║███████║███████║██║██║ ╚████║╚██████╔╝      ██║  ██║╚██████╔╝ ║\n║ ╚═╝     ╚═╝╚═╝╚══════╝╚══════╝╚═╝╚═╝  ╚═══╝ ╚═════╝       ╚═╝  ╚═╝ ╚═════╝  ║\n║                                                                             ║\n║         ██╗   ██╗██████╗ ██████╗  █████╗ ████████╗███████╗██████╗           ║\n║         ██║   ██║██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔════╝██╔══██╗          ║\n║         ██║   ██║██████╔╝██║  ██║███████║   ██║   █████╗  ██████╔╝          ║\n║         ██║   ██║██╔═══╝ ██║  ██║██╔══██║   ██║   ██╔══╝  ██╔══██╗          ║\n║         ╚██████╔╝██║     ██████╔╝██║  ██║   ██║   ███████╗██║  ██║          ║\n║          ╚═════╝ ╚═╝     ╚═════╝ ╚═╝  ╚═╝   ╚═╝   ╚══════╝╚═╝  ╚═╝          ║\n╚═════════════════════════════════════════════════════════════════════════════╝\n                             Missing-AG-Updater\n```\n\n\u003e [!IMPORTANT]\n\u003e **Disclaimer:** This project is an unofficial, community-maintained utility. It is **NOT** affiliated with, sponsored by, or supported by Google LLC.\n\n\u003e [!WARNING]\n\u003e **Alpha Software:** This utility is currently in an early **alpha** stage of development. Features may change without notice, and bugs may occur. Use with caution.\n\nThis repository contains a Python utility to check for and apply updates to the Google Antigravity developer suite on Linux, macOS, and Windows.\n\n---\n\n## Why This Project Exists\n\nThe Google Antigravity developer suite (incorporating the IDE, Hub, and CLI) is standard tooling for AI agent engineering. However, Google does not provide an official, centralized auto-updater utility to manage upgrades for all three applications under a single interface. \n\nThis leads to several developer pain points that this project solves:\n* **Manual Cross-Platform Workflows**: Developers have to manually fetch Linux tarballs, mount macOS `.dmg` bundles, or run Windows installer `.exe` files for each component.\n* **Corrupted Active Installs**: Attempting to upgrade files while the IDE or Hub is running in the background causes file corruption and locked processes. This tool checks and warns of active processes before writing files.\n* **Lack of Automation for AI Agents**: AI coding agents operating in dev containers or headless environments need a simple CLI command (`antigravity-updater`) to verify and configure their tooling without manual browser navigation.\n\n---\n\n## Features\n\n- **Component Support:** Independently check and upgrade:\n  - **Antigravity IDE** (VS Code-based AI Editor)\n  - **Antigravity Hub** (Standalone Agent Desktop Application)\n  - **Antigravity CLI** (`agy` command line tool)\n- **Cross-Platform:** Supports Linux (`.tar.gz`), macOS (`.dmg` mount installation), and Windows (`.exe` silent installation).\n- **Safe Installation:** Warns if the target application is running before attempting to overwrite files.\n- **Verification:** Downloads the CLI directly and verifies SHA512 checksums prior to installation.\n- **Rich Terminal UI:** Displays download progress bars and clear success/warning logs.\n- **Dry Run Support:** Check if any updates are available without changing any files.\n- **Development Tooling:** Complete with linter, test coverage, and environment creation via `uv`.\n\n## Installation\n\n### For Users (via pipx)\n\nThe recommended way to install and run the tool in an isolated environment is via `pipx`:\n\n```bash\n# Install the stable release from PyPI (recommended):\npipx install missing-ag-updater\n\n# Alternatively, install the development version directly from GitHub:\npipx install git+https://github.com/hellqvio86/missing-ag-updater.git\n```\n\nOnce installed, the `antigravity-updater` command will be globally available.\n\n### For Developers\n\nCreate the local virtual environment and install development tools (`pytest`, `ruff`) using `uv` and the provided `Makefile`:\n```bash\nmake venv\n```\n\n## Usage\n\nRun the package directly to check and update all components:\n```bash\npython -m missing_ag_updater\n# or using the installed entrypoint:\nantigravity-updater\n```\n\n### Example Output\n\n```text\n$ antigravity-updater\n\n=== Unofficial Antigravity Applications Auto-Updater (missing-ag-updater) ===\n⚠ This project is a community tool and is NOT affiliated with, sponsored by, or supported by Google.\n  Target Platform: linux (x64)\n\n⠋ Checking for Antigravity IDE updates...\n  Local IDE Version:  2.0.4\n  Latest IDE Version: 2.0.4\n✓ Antigravity IDE is up to date.\n\n⠋ Checking for Antigravity Hub updates...\n  Local Hub Version:  2.1.4\n  Latest Hub Version: 2.1.4\n✓ Antigravity Hub is up to date.\n\n⠋ Checking for Antigravity CLI updates...\n  Local CLI Version:  1.0.8\n  Latest CLI Version: 1.0.8\n✓ Antigravity CLI is up to date.\n\n✓ Operation completed successfully.\n```\n\n### Options\n\n```text\nusage: python -m missing_ag_updater [-h] [--check] [--ide] [--hub] [--cli] [--force]\n                 [--dir-ide DIR_IDE] [--dir-hub DIR_HUB] [--path-cli PATH_CLI]\n                 [--no-desktop] [--no-nautilus]\n\nAuto-updater utility for Google Antigravity developer tools (Cross-Platform).\n\noptions:\n  -h, --help         show this help message and exit\n  --check            Check for available updates without installing (dry run)\n  --ide              Update only the Antigravity IDE\n  --hub              Update only the Antigravity Hub\n  --cli              Update only the Antigravity CLI\n  --force            Bypass version checks and active process warnings\n  --dir-ide DIR_IDE  Override path to Antigravity IDE folder/bundle\n  --dir-hub DIR_HUB  Override path to Antigravity Hub folder/bundle\n  --path-cli PATH_CLI Override path to Antigravity CLI binary\n  --no-desktop       Skip installing local .desktop files and application icons on Linux\n  --no-nautilus      Skip installing Nautilus context-menu integration on Linux\n```\n\n### Environment Variables\n\nYou can configure the behavior of the auto-updater using environment variables. These act as fallbacks if the corresponding CLI options are not explicitly provided:\n\n| CLI Option | Environment Variables | Type | Description |\n| :--- | :--- | :--- | :--- |\n| `--check` | `ANTIGRAVITY_CHECK` or `AG_CHECK` | Boolean | Check for available updates without installing (dry run) |\n| `--ide` | `ANTIGRAVITY_IDE` or `AG_IDE` | Boolean | Update only the Antigravity IDE |\n| `--hub` | `ANTIGRAVITY_HUB` or `AG_HUB` | Boolean | Update only the Antigravity Hub |\n| `--cli` | `ANTIGRAVITY_CLI` or `AG_CLI` | Boolean | Update only the Antigravity CLI |\n| `--force` | `ANTIGRAVITY_FORCE` or `AG_FORCE` | Boolean | Bypass version checks and active process warnings |\n| `--dir-ide` | `ANTIGRAVITY_DIR_IDE` or `AG_DIR_IDE` | String | Override path to Antigravity IDE folder/bundle |\n| `--dir-hub` | `ANTIGRAVITY_DIR_HUB` or `AG_DIR_HUB` | String | Override path to Antigravity Hub folder/bundle |\n| `--path-cli` | `ANTIGRAVITY_PATH_CLI` or `AG_PATH_CLI` | String | Override path to Antigravity CLI binary |\n| `--no-desktop` | `ANTIGRAVITY_DESKTOP` / `AG_DESKTOP` (Boolean, default `true`) or `ANTIGRAVITY_NO_DESKTOP` / `AG_NO_DESKTOP` (Boolean, default `false`) | Boolean | Set to `false` or `1` (for `NO_DESKTOP`) to skip installing local `.desktop` launcher and application icons on Linux |\n| `--no-nautilus` | `ANTIGRAVITY_NAUTILUS` / `AG_NAUTILUS` (Boolean, default `true`) or `ANTIGRAVITY_NO_NAUTILUS` / `AG_NO_NAUTILUS` (Boolean, default `false`) | Boolean | Set to `false` or `1` (for `NO_NAUTILUS`) to skip installing the Nautilus context-menu extension |\n\n\u003e [!NOTE]\n\u003e Boolean environment variables accept `1`, `true`, `yes`, or `on` as `True`, and any other value (or unset) as `False`.\n\n### Configuration File (TOML)\n\nYou can also use a TOML configuration file to save your settings persistently. By default, the updater looks for a configuration file in the following standard user directories:\n\n- **Linux**: `~/.config/missing-ag-updater/config.toml` (honors `XDG_CONFIG_HOME`)\n- **macOS**: `~/Library/Application Support/missing-ag-updater/config.toml`\n- **Windows**: `%APPDATA%\\missing-ag-updater\\config.toml`\n\nYou can override the config file location using the `--config PATH` option or the `ANTIGRAVITY_CONFIG` / `AG_CONFIG` environment variables.\n\n#### Settings Resolution Hierarchy\n\nValues are resolved in the following priority order (highest to lowest):\n1. **CLI Arguments** (explicitly passed)\n2. **Environment Variables**\n3. **TOML Configuration File**\n4. **Default Values**\n\n#### Example TOML Configuration\n\n```toml\ncheck = false\nide = true\nhub = true\ncli = true\nforce = false\ndir_ide = \"/home/user/opt/Antigravity IDE\"\ndesktop = true\nnautilus = true\n```\n\n### Examples\n\n- **Dry run check for all tools:**\n  ```bash\n  python -m missing_ag_updater --check\n  ```\n\n- **Force update the Hub application only:**\n  ```bash\n  python -m missing_ag_updater --hub --force\n  ```\n\n- **Update only the CLI tool:**\n  ```bash\n  python -m missing_ag_updater --cli\n  ```\n\n## Default Installation Paths\n\nWhen running an update, the tool first downloads the application packages (such as `.tar.gz`, `.dmg`, or `.exe` installers) to a **temporary system directory** (e.g. `/tmp` on Linux/macOS, or `%TEMP%` on Windows). Once the extraction and installation are complete, these temporary files are automatically deleted.\n\nAfter the update finishes, the permanent application files are stored in the following default paths:\n\n| Platform | Antigravity IDE Path | Antigravity Hub Path | Antigravity CLI Path | Launcher/Symlink Path |\n| :--- | :--- | :--- | :--- | :--- |\n| **Linux** | `~/opt/Antigravity IDE` | `~/opt/Antigravity-x64` | `~/.local/bin/agy` | `~/.local/bin/antigravity-ide`\u003cbr\u003e`~/.local/bin/antigravity` |\n| **macOS** | `/Applications/Antigravity IDE.app` | `/Applications/Antigravity.app` | `~/.local/bin/agy` | *N/A (installed in Applications)* |\n| **Windows** | `%LOCALAPPDATA%\\Programs\\antigravity-ide` | `%LOCALAPPDATA%\\Programs\\antigravity` | `%LOCALAPPDATA%\\Microsoft\\WindowsApps\\agy.exe` | *N/A (added to PATH)* |\n\nYou can override these default paths at execution time using the `--dir-ide`, `--dir-hub`, and `--path-cli` flags.\n\n---\n\n## Upstream Sources (Where Google Stores the Binaries)\n\nAll application packages are fetched directly from official Google distribution servers:\n\n* **Antigravity IDE**: Downloaded from Google's stable release CDN domains (`dl.google.com` and `edgedl.me.gvt1.com`).\n* **Antigravity Hub**: Downloaded from Google's public Google Cloud Storage bucket (`storage.googleapis.com/antigravity-public`).\n* **Antigravity CLI**: Downloaded from URLs specified in the official updates manifests hosted on Google Cloud.\n\n---\n\n## How It Works\n\nThe auto-updater acts as a secure, cross-platform layer to keep your local developer environment up to date:\n\n1. **Update Resolution**:\n   Queries the unofficial update API endpoints to parse the latest version info. For the IDE and Hub, this resolves to Google release manifests. For the CLI, it parses the architecture-specific manifest.\n\n2. **Process Integrity Check**:\n   Before writing any files, the utility checks if the IDE or Hub is currently running. If active PIDs are detected, the update will abort (unless bypassed with `--force`) to prevent file lockups and corruption.\n\n3. **Secure CLI Checksum Verification**:\n   When updating the CLI, the manifest provides a SHA-512 checksum. The tool computes the hash of the downloaded zip or tarball locally and compares them to ensure integrity before extraction.\n\n4. **Platform-Specific Installation**:\n   - **Linux**: Extracts the tarball to a temporary directory, replaces the target directory under `~/opt`, and creates/updates symbolic links under `~/.local/bin`.\n   - **macOS**: Mounts the downloaded `.dmg` file securely via `hdiutil attach`, replaces the `.app` bundle under `/Applications`, and unmounts the volume.\n   - **Windows**: Executes the installer binary with the silent installation flag (`/S`) to perform a background upgrade.\n\n---\n\n## Launching the Applications\n\nOnce updated, you can launch the Antigravity tools using their standard terminal commands:\n\n- **Antigravity IDE** (VS Code-based AI Editor):\n  ```bash\n  antigravity-ide\n  ```\n- **Antigravity Hub** (Standalone agent desktop application):\n  ```bash\n  antigravity\n  ```\n- **Antigravity CLI** (Terminal utility):\n  ```bash\n  agy\n  ```\n\n## Nautilus Context Menu Integration (Linux)\n\nOn Linux systems running GNOME, the installer automatically writes a context menu extension for the Nautilus file manager, allowing you to right-click folders or files and select **\"Open in Antigravity IDE\"**.\n\nFor Nautilus to load this extension, you must have the `nautilus-python` package installed on your system.\n\n### Prerequisites\n\nInstall the `nautilus-python` bindings using your distribution's package manager:\n\n- **Fedora**:\n  ```bash\n  sudo dnf install nautilus-python\n  ```\n- **Ubuntu / Debian**:\n  ```bash\n  sudo apt install python3-nautilus\n  ```\n- **Arch Linux**:\n  ```bash\n  sudo pacman -S python-nautilus\n  ```\n\n### Activating the Context Menu\n\nAfter installing the package, restart Nautilus to reload all python extensions:\n```bash\nnautilus -q\n```\n\n## Development\n\nThe project includes a `Makefile` to simplify development tasks:\n\n- **Run the updater (via module):**\n  ```bash\n  make run\n  # Pass options via the ARGS variable\n  make run ARGS=\"--check\"\n  ```\n- **Lint check (Ruff):**\n  ```bash\n  make lint\n  ```\n- **Run unit tests (Pytest):**\n  ```bash\n  make test\n  ```\n- **Clean virtual environment \u0026 cache:**\n  ```bash\n  make clean\n  ```\n\n### Git Hooks\n\nA local Git `pre-push` hook is configured to automatically run formatting, linting checks, and the unit test suite before code can be pushed to remote branches:\n\n- To run the pre-push checks manually:\n  ```bash\n  .git/hooks/pre-push\n  ```\n## Other update antigravity projects\n[Opensnap Antigravity updater](https://github.com/opensnap/antigravity)\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhellqvio86%2Fmissing-ag-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhellqvio86%2Fmissing-ag-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhellqvio86%2Fmissing-ag-updater/lists"}