Skip to main content

Missing-AG-Updater

CI/CD Coverage PyPI Version PyPI Downloads Python Versions uv Checked with mypy Pydantic License: MIT

╔═════════════════════════════════════════════════════════════════════════════╗
║ ███╗   ███╗██╗███████╗███████╗██╗███╗   ██╗ ██████╗        █████╗  ██████╗  ║
║ ████╗ ████║██║██╔════╝██╔════╝██║████╗  ██║██╔════╝       ██╔══██╗██╔════╝  ║
║ ██╔████╔██║██║███████╗███████╗██║██╔██╗ ██║██║  ███╗█████╗███████║██║  ███╗ ║
║ ██║╚██╔╝██║██║╚════██║╚════██║██║██║╚██╗██║██║   ██║╚════╝██╔══██║██║   ██║ ║
║ ██║ ╚═╝ ██║██║███████║███████║██║██║ ╚████║╚██████╔╝      ██║  ██║╚██████╔╝ ║
║ ╚═╝     ╚═╝╚═╝╚══════╝╚══════╝╚═╝╚═╝  ╚═══╝ ╚═════╝       ╚═╝  ╚═╝ ╚═════╝  ║
║                                                                             ║
║         ██╗   ██╗██████╗ ██████╗  █████╗ ████████╗███████╗██████╗           ║
║         ██║   ██║██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔════╝██╔══██╗          ║
║         ██║   ██║██████╔╝██║  ██║███████║   ██║   █████╗  ██████╔╝          ║
║         ██║   ██║██╔═══╝ ██║  ██║██╔══██║   ██║   ██╔══╝  ██╔══██╗          ║
║         ╚██████╔╝██║     ██████╔╝██║  ██║   ██║   ███████╗██║  ██║          ║
║          ╚═════╝ ╚═╝     ╚═════╝ ╚═╝  ╚═╝   ╚═╝   ╚══════╝╚═╝  ╚═╝          ║
╚═════════════════════════════════════════════════════════════════════════════╝
                             Missing-AG-Updater

[!IMPORTANT] Disclaimer: This project is an unofficial, community-maintained utility. It is NOT affiliated with, sponsored by, or supported by Google LLC.

[!WARNING] 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.

This repository contains a Python utility to check for and apply updates to the Google Antigravity developer suite on Linux, macOS, and Windows.


Why This Project Exists

The 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.

This leads to several developer pain points that this project solves:

  • Manual Cross-Platform Workflows: Developers have to manually fetch Linux tarballs, mount macOS .dmg bundles, or run Windows installer .exe files for each component.
  • 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.
  • 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.

Features

  • Component Support: Independently check and upgrade:
    • Antigravity IDE (VS Code-based AI Editor)
    • Antigravity Hub (Standalone Agent Desktop Application)
    • Antigravity CLI (agy command line tool)
  • Cross-Platform: Supports Linux (.tar.gz), macOS (.dmg mount installation), and Windows (.exe silent installation).
  • Safe Installation: Warns if the target application is running before attempting to overwrite files.
  • Verification: Downloads the CLI directly and verifies SHA512 checksums prior to installation.
  • Rich Terminal UI: Displays download progress bars and clear success/warning logs.
  • Dry Run Support: Check if any updates are available without changing any files.
  • Development Tooling: Complete with linter, test coverage, and environment creation via uv.

Installation

For Users (via pipx)

The recommended way to install and run the tool in an isolated environment is via pipx:

# Install the stable release from PyPI (recommended):
pipx install missing-ag-updater

# Alternatively, install the development version directly from GitHub:
pipx install git+https://github.com/hellqvio86/missing-ag-updater.git

Once installed, the antigravity-updater command will be globally available.

For Developers

Create the local virtual environment and install development tools (pytest, ruff) using uv and the provided Makefile:

make venv

Usage

Run the package directly to check and update all components:

python -m missing_ag_updater
# or using the installed entrypoint:
antigravity-updater

Example Output

$ antigravity-updater

=== Unofficial Antigravity Applications Auto-Updater (missing-ag-updater) ===
⚠ This project is a community tool and is NOT affiliated with, sponsored by, or supported by Google.
  Target Platform: linux (x64)

⠋ Checking for Antigravity IDE updates...
  Local IDE Version:  2.0.4
  Latest IDE Version: 2.0.4
✓ Antigravity IDE is up to date.

⠋ Checking for Antigravity Hub updates...
  Local Hub Version:  2.1.4
  Latest Hub Version: 2.1.4
✓ Antigravity Hub is up to date.

⠋ Checking for Antigravity CLI updates...
  Local CLI Version:  1.0.8
  Latest CLI Version: 1.0.8
✓ Antigravity CLI is up to date.

✓ Operation completed successfully.

Options

usage: python -m missing_ag_updater [-h] [--check] [--ide] [--hub] [--cli] [--force]
                 [--dir-ide DIR_IDE] [--dir-hub DIR_HUB] [--path-cli PATH_CLI]
                 [--no-desktop] [--no-nautilus] [--apparmor-sandbox]

Auto-updater utility for Google Antigravity developer tools (Cross-Platform).

options:
  -h, --help         show this help message and exit
  --check            Check for available updates without installing (dry run)
  --ide              Update only the Antigravity IDE
  --hub              Update only the Antigravity Hub
  --cli              Update only the Antigravity CLI
  --force            Bypass version checks and active process warnings
  --dir-ide DIR_IDE  Override path to Antigravity IDE folder/bundle
  --dir-hub DIR_HUB  Override path to Antigravity Hub folder/bundle
  --path-cli PATH_CLI Override path to Antigravity CLI binary
  --no-desktop       Skip installing local .desktop files and application icons on Linux
  --no-nautilus      Skip installing Nautilus context-menu integration on Linux

Environment Variables

You can configure the behavior of the auto-updater using environment variables. These act as fallbacks if the corresponding CLI options are not explicitly provided:

CLI Option Environment Variables Type Description
--check ANTIGRAVITY_CHECK or AG_CHECK Boolean Check for available updates without installing (dry run)
--ide ANTIGRAVITY_IDE or AG_IDE Boolean Update only the Antigravity IDE
--hub ANTIGRAVITY_HUB or AG_HUB Boolean Update only the Antigravity Hub
--cli ANTIGRAVITY_CLI or AG_CLI Boolean Update only the Antigravity CLI
--force ANTIGRAVITY_FORCE or AG_FORCE Boolean Bypass version checks and active process warnings
--dir-ide ANTIGRAVITY_DIR_IDE or AG_DIR_IDE String Override path to Antigravity IDE folder/bundle
--dir-hub ANTIGRAVITY_DIR_HUB or AG_DIR_HUB String Override path to Antigravity Hub folder/bundle
--path-cli ANTIGRAVITY_PATH_CLI or AG_PATH_CLI String Override path to Antigravity CLI binary
--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
--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
--apparmor-sandbox ANTIGRAVITY_APPARMOR_SANDBOX or AG_APPARMOR_SANDBOX Boolean (Ubuntu only) Configure root:root 4755 permissions on chrome-sandbox for AppArmor compatibility

[!NOTE] Boolean environment variables accept 1, true, yes, or on as True, and any other value (or unset) as False.

Configuration File (TOML)

You 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:

  • Linux: ~/.config/missing-ag-updater/config.toml (honors XDG_CONFIG_HOME)
  • macOS: ~/Library/Application Support/missing-ag-updater/config.toml
  • Windows: %APPDATA%\missing-ag-updater\config.toml

You can override the config file location using the --config PATH option or the ANTIGRAVITY_CONFIG / AG_CONFIG environment variables. A template is provided in config.example.toml.

Settings Resolution Hierarchy

Values are resolved in the following priority order (highest to lowest):

  1. CLI Arguments (explicitly passed)
  2. Environment Variables
  3. TOML Configuration File
  4. Default Values

Example TOML Configuration

check = false
ide = true
hub = true
cli = true
force = false
apparmor_sandbox = false  # Ubuntu only
dir_ide = "/home/user/opt/Antigravity-IDE"
desktop = true
nautilus = true

Examples

  • Dry run check for all tools:

    python -m missing_ag_updater --check
    
  • Update only Antigravity IDE and create desktop / Nautilus integration:

    python -m missing_ag_updater --ide
    
  • Force update all components regardless of version:

    python -m missing_ag_updater --force
    

Default Installation Paths

When 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.

After the update finishes, the permanent application files are stored in the following default paths:

Platform Antigravity IDE Path Antigravity Hub Path Antigravity CLI Path Launcher/Symlink Path
Linux ~/opt/Antigravity-IDE ~/opt/Antigravity-x64 ~/.local/bin/agy ~/.local/bin/antigravity-ide
~/.local/bin/antigravity
macOS /Applications/Antigravity IDE.app /Applications/Antigravity.app ~/.local/bin/agy N/A (installed in Applications)
Windows %LOCALAPPDATA%\Programs\antigravity-ide %LOCALAPPDATA%\Programs\antigravity %LOCALAPPDATA%\Microsoft\WindowsApps\agy.exe N/A (added to PATH)

[!NOTE] Linux Path & Chromium SUID Sandbox Bug: On Linux, the IDE default directory is ~/opt/Antigravity-IDE (hyphenated without spaces). This avoids an upstream Chromium bug in zygote_host_impl_linux.cc, where binary paths containing spaces (e.g., ~/opt/Antigravity IDE) are truncated at space boundaries when executing chrome-sandbox via execvp, crashing with FATAL: Check failed: . : Invalid argument (22).

The updater automatically checks both ~/opt/Antigravity-IDE and legacy ~/opt/Antigravity IDE paths to resolve versions for existing installations.

You can override these default paths at execution time using the --dir-ide, --dir-hub, and --path-cli flags.


Upstream Sources (Where Google Stores the Binaries)

All application packages are fetched directly from official Google distribution servers:

  • Antigravity IDE: Downloaded from Google's stable release CDN domains (dl.google.com and edgedl.me.gvt1.com).
  • Antigravity Hub: Downloaded from Google's public Google Cloud Storage bucket (storage.googleapis.com/antigravity-public).
  • Antigravity CLI: Downloaded from URLs specified in the official updates manifests hosted on Google Cloud.

How It Works

The auto-updater acts as a secure, cross-platform layer to keep your local developer environment up to date:

  1. Update Resolution: 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.

  2. Process Integrity Check: 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.

  3. Secure CLI Checksum Verification: 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.

  4. Platform-Specific Installation:

    • Linux: Extracts the tarball to a temporary directory, replaces the target directory under ~/opt, and creates/updates symbolic links under ~/.local/bin.
    • macOS: Mounts the downloaded .dmg file securely via hdiutil attach, replaces the .app bundle under /Applications, and unmounts the volume.
    • Windows: Executes the installer binary with the silent installation flag (/S) to perform a background upgrade.

Launching the Applications

Once updated, you can launch the Antigravity tools using their standard terminal commands:

  • Antigravity IDE (VS Code-based AI Editor):
    antigravity-ide
    
  • Antigravity Hub (Standalone agent desktop application):
    antigravity
    
  • Antigravity CLI (Terminal utility):
    agy
    

Nautilus Context Menu Integration (Linux)

On 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".

For Nautilus to load this extension, you must have the nautilus-python package installed on your system.

Prerequisites

Install the nautilus-python bindings using your distribution's package manager:

  • Fedora:
    sudo dnf install nautilus-python
    
  • Ubuntu / Debian:
    sudo apt install python3-nautilus
    
  • Arch Linux:
    sudo pacman -S python-nautilus
    

Activating the Context Menu

After installing the package, restart Nautilus to reload all python extensions:

nautilus -q

Linux Sandbox (Ubuntu)

On Ubuntu 24.04+, the kernel restricts unprivileged user namespaces via AppArmor (apparmor_restrict_unprivileged_userns). This breaks the Chromium namespace sandbox used by Electron applications such as the Antigravity IDE and Hub.

Without a fix, the IDE will crash on launch with:

FATAL: Check failed: . : Invalid argument (22)

Why This Only Affects Ubuntu

Distro Sandbox Status Reason
Ubuntu 24.04+ ❌ Broken without fix AppArmor blocks unprivileged user namespaces
Fedora ✅ Works out of the box SELinux does not restrict user namespaces
Arch Linux ✅ Works out of the box No namespace restrictions by default
Debian 12+ ⚠ May need fix AppArmor enabled by default (not yet in allowlist)

The updater auto-detects your distro via /etc/os-release and only applies sandbox fixes on Ubuntu (and Ubuntu-based derivatives like Linux Mint and Pop!_OS via ID_LIKE). On all other distros, --apparmor-sandbox is silently skipped.

The Fix: --apparmor-sandbox

Pass the --apparmor-sandbox flag to configure the chrome-sandbox binary with SUID root permissions (root:root 4755), which allows Chromium to use the legacy setuid sandbox instead:

# During update:
antigravity-updater --apparmor-sandbox

# Or set it permanently in your config:
# ~/.config/missing-ag-updater/config.toml
apparmor_sandbox = true

This requires sudo access (or running as root). The updater will prompt for sudo if needed, or fail early with a clear error message if sudo is unavailable.

Manual Fix

If you prefer to fix the sandbox manually without using the flag:

sudo chown root:root "$HOME/opt/Antigravity-IDE/chrome-sandbox" && \
sudo chmod 4755 "$HOME/opt/Antigravity-IDE/chrome-sandbox"

Development

The project includes a Makefile to simplify development tasks:

  • Run the updater (via module):
    make run
    # Pass options via the ARGS variable
    make run ARGS="--check"
    
  • Lint check (Ruff):
    make lint
    
  • Run unit tests (Pytest):
    make test
    
  • Clean virtual environment & cache:
    make clean
    

Git Hooks

A 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:

  • To run the pre-push checks manually:
    .git/hooks/pre-push
    

Other update antigravity projects

Opensnap Antigravity updater

License

This project is licensed under the MIT License.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

missing_ag_updater-0.2.0.tar.gz (82.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

missing_ag_updater-0.2.0-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

File details

Details for the file missing_ag_updater-0.2.0.tar.gz.

File metadata

  • Download URL: missing_ag_updater-0.2.0.tar.gz
  • Upload date:
  • Size: 82.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for missing_ag_updater-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b35a0b0d655c65221635c13d8187377f9ecd108b2a95f1b66892d322c885b03d
MD5 90c9321d4c610afb9cda7dbe03521b17
BLAKE2b-256 f6537bfa2d24d4c111c391ec40202ca276ec9d36581bf47a460908f15aed296c

See more details on using hashes here.

Provenance

The following attestation bundles were made for missing_ag_updater-0.2.0.tar.gz:

Publisher: ci.yml on hellqvio86/missing-ag-updater

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file missing_ag_updater-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for missing_ag_updater-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0e5be7c0999efeb3835fd8638e5e49325066f0723f3d994f110af056140f9b9a
MD5 79a0867156cd4a3c47bdfec4b320c70a
BLAKE2b-256 9e3f0d8eced12f70be0a6f13d62a0bf75d8ddc9b7204c98d785d2cbe2f60d9e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for missing_ag_updater-0.2.0-py3-none-any.whl:

Publisher: ci.yml on hellqvio86/missing-ag-updater

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.5.1

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

2 files

This release

0.2.0 This release

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page