How to Install Google Antigravity 2.0 on Linux – Desktop, IDE & CLI

Share

You can install Google Antigravity 2.0 on Linux and Ubuntu by choosing from three separate, independent products: the standalone Google Antigravity 2.0 Desktop App for workspace and task orchestration, the custom Antigravity IDE visual editor, and the lightweight Antigravity CLI (agy) command-line agent engine.

Since version 2.0, the platform splits background execution from frontend visual workflows, allowing developers to choose only the components that fit their local setups.

This comprehensive installation guide covers step-by-step setup guides for all three tools on Ubuntu 24.04 and 26.04 LTS, details automated helper scripts for tarball deployments, and provides solutions to common keyring loops and AppArmor crashes.

If any of these steps fail on your system, please drop a comment below or contact us and we will help you get it resolved.

Requirements at a Glance
Supported OS: Ubuntu 24.04 / 26.04 LTS, Debian 12, Fedora 40+, RHEL 9+
Desktop App: Antigravity 2.0 (requires glibc 2.35+, libsecret, and X11 or Wayland)
IDE Editor: Antigravity IDE (VS Code Fork, amd64 or arm64 architecture)
CLI Engine: agy (requires internet access for OAuth browser authentication)
Disk Space: ~150 MB for the CLI, ~450 MB for the Desktop App, ~450 MB for the IDE
System Secrets: D-Bus, Gnome Keyring, or libsecret for credential persistence

Ubuntu 26.04 & 24.04  ·  Developer Guide
Install Google Antigravity 2.0 on Linux
Desktop App, IDE & CLI Setup

Set up Google’s decoupled agentic AI development environment on your Linux system. Learn how to configure the standalone Desktop App, the visual IDE editor, and the command-line engine.

Target OS: Ubuntu 24.04 / 26.04 LTS
Arch Support: amd64 / arm64
Ecosystem: Decoupled 2.0
License: Proprietary / Free

Google Antigravity vs. Other AI Coding Agents

Unlike single-turn chat completion assistants, Google Antigravity 2.0 relies on a multi-agent tree architecture. These agents work recursively to plan files, execute system tests, and resolve compiler warnings before reporting back. Below is a comparison table showing how the Antigravity engine differs from other popular developer AI tools:

AI Coding Platform Google Antigravity 2.0 Claude Code Cursor / Windsurf GitHub Copilot
Execution Model Runs multiple automated agents that work together in a tree structure Runs a single automated helper inside your terminal Runs automated tasks inside custom editor sidebars Offers code suggestions and a side-panel chat helper
Terminal Interface Yes, standalone background command engine Yes, standard command-line utility No (requires a visual editor window) No (operates only as a panel inside standard editors)
Editor Integration Separate tool (works alongside any editor, compiler, or IDE) Separate tool (runs independently inside your terminal) Built directly into custom versions of the VS Code editor Installs as an add-on plugin for standard editors

Google Antigravity 2.0 Product Ecosystem

Google Antigravity 2.0 splits operations into a standalone desktop application, a custom VS Code editor fork, and a terminal command-line runner. Use the comparison table below to determine which components match your local setup:

Criterion Antigravity 2.0 Desktop App Antigravity IDE Antigravity CLI (agy)
Interface Type Standalone Desktop App (GUI) Visual Code Editor (VS Code Fork) Command-line Interface (CLI)
Primary Purpose Project orchestration, subagent monitoring, and scheduled coding tasks Direct file writing, visual debugging, and extensions management Lightweight background agent runner and terminal automation
Best For Visual task planning and multi-repository management Standard programming sessions needing direct file editing Headless servers, terminal-centric developers, and SSH scripts
Installation Method Linux tarball extraction with helper script Linux tarball extraction with helper script Official shell installer script (curl download)
Target Audience Desktop developers, architects, and product managers Full-stack software engineers and desktop programmers DevOps engineers, sysadmins, and terminal users

Google Antigravity 2.0 Decoupled Architecture Diagram
Figure 1: The decoupled architecture of Google Antigravity 2.0 showing how the agy CLI engine serves as the background runner for the frontend interfaces.

Section 1: Install the Antigravity 2.0 Desktop App

The standalone Google Antigravity 2.0 Desktop App provides the workspace dashboard, subagent view panels, and scheduled task manager. Because Google distributes this app via standalone tarballs rather than APT repositories, you can install and update it using a custom bash helper script.

Refresh your local system repositories and install the utility commands required by the installer script:

sudo apt update
sudo apt install curl tar desktop-file-utils python3 -y

Next, write the desktop helper script. This script detects your processor architecture (x64 or ARM64), scrapes Google’s download page for the latest tarball bundle, extracts the files under /opt/antigravity, configures the Chromium sandbox helper, extracts the application icon, and registers the launcher in the application menu:

sudo tee /usr/local/bin/update-antigravity > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

if [ "$(id -u)" -ne 0 ]; then
	echo "Run with sudo: sudo update-antigravity" >&2
	exit 1
fi

download_page="https://antigravity.google/download"
install_root="/opt/antigravity"
command_link="/usr/local/bin/antigravity"
desktop_file="/usr/share/applications/antigravity.desktop"
icon_file="/usr/share/icons/hicolor/512x512/apps/antigravity.png"
old_icon_file="/usr/share/icons/hicolor/scalable/apps/antigravity.svg"

case "$(uname -m)" in
x86_64 | amd64) platform="linux-x64" ;;
aarch64 | arm64) platform="linux-arm" ;;
*)
	echo "Unsupported architecture: $(uname -m)" >&2
	exit 1
	;;
esac

for required_command in curl tar python3; do
	if ! command -v "$required_command" >/dev/null 2>&1; then
		echo "$required_command is required to install Antigravity." >&2
		exit 1
	fi
done

if [ -L "$command_link" ]; then
	command_target=$(readlink -f "$command_link" || true)
	case "$command_target" in
	"$install_root"/*) ;;
	*)
		echo "$command_link points to $command_target. Move it before rerunning this helper." >&2
		exit 1
		;;
	esac
elif [ -e "$command_link" ]; then
	echo "$command_link exists and is not a symlink. Move it before rerunning this helper." >&2
	exit 1
fi

tmp_parent="${TMPDIR:-/var/tmp}"
mkdir -p "$tmp_parent"
tmpdir=$(mktemp -d "$tmp_parent/antigravity.XXXXXX")
trap 'rm -rf "$tmpdir"' EXIT
download_html="$tmpdir/download.html"
download_js="$tmpdir/download.js"
archive="$tmpdir/Antigravity.tar.gz"
archive_list="$tmpdir/archive-list.txt"
icon_staged="$tmpdir/antigravity.png"

curl -fsSL --compressed --retry 3 -o "$download_html" "$download_page"
main_js_url=$(
	python3 - "$download_html" "$download_page" <<'PY'
import re
import sys
from pathlib import Path
from urllib.parse import urljoin

html = Path(sys.argv[1]).read_text()
page_url = sys.argv[2]
matches = re.findall(r'(?:src|href)="([^"]*main-[^"]+\.js)"', html)
if not matches:
    raise SystemExit("Could not find the Antigravity download bundle")
print(urljoin(page_url, matches[-1]))
PY
)

curl -fsSL --compressed --retry 3 -o "$download_js" "$main_js_url"
download_fields=$(
	python3 - "$download_js" "$platform" <<'PY'
import re
import sys
from pathlib import Path

bundle = Path(sys.argv[1]).read_text(errors="replace")
platform = sys.argv[2]
start = bundle.find('id:"antigravity-2"')
end = bundle.find('},{name:"command",id:"antigravity-cli"', start)
if start == -1 or end == -1:
    raise SystemExit("Could not find Antigravity 2.0 downloads")

section = bundle[start:end]
match = re.search(r'href:"([^"]+/' + re.escape(platform) + r'/Antigravity\.tar\.gz)"', section)
if not match:
    raise SystemExit(f"Could not find a download for {platform}")

url = match.group(1)
version_match = re.search(r'/antigravity-hub/([^/]+)/', url)
if not version_match:
    raise SystemExit("Could not parse Antigravity version from download URL")

print(version_match.group(1).split("-", 1)[0], url)
PY
)
read -r version download_url <<<"$download_fields"

if [ -z "$version" ] || [ -z "$download_url" ]; then
	echo "Could not parse the Antigravity download page." >&2
	exit 1
fi

case "$platform" in
linux-x64) expected_top_dir="Antigravity-x64" ;;
linux-arm) expected_top_dir="Antigravity-arm64" ;;
esac

expected_target="$install_root/$expected_top_dir/antigravity"
sandbox_path="$install_root/$expected_top_dir/chrome-sandbox"
installed_version=$(cat "$install_root/.linuxcapable-version" 2>/dev/null || true)
desktop_matches=no
if [ -f "$desktop_file" ] &&
	grep -q '^Icon=antigravity$' "$desktop_file" &&
	grep -q '^StartupWMClass=Antigravity$' "$desktop_file"; then
	desktop_matches=yes
fi
if [ "$installed_version" = "$version" ] &&
	[ -x "$expected_target" ] &&
	[ -L "$command_link" ] &&
	[ "$(readlink -f "$command_link")" = "$expected_target" ] &&
	[ "$desktop_matches" = yes ] &&
	[ -f "$icon_file" ]; then
	if [ ! -e "$sandbox_path" ] || [ "$(stat -c '%U:%G:%a' "$sandbox_path")" = "root:root:4755" ]; then
		printf 'Antigravity %s is already installed at %s\n' "$version" "$install_root/$expected_top_dir"
		exit 0
	fi
fi

printf 'Downloading Antigravity %s for %s...\n' "$version" "$platform"
curl -fsSL --retry 3 -o "$archive" "$download_url"
tar -tzf "$archive" >"$archive_list"
top_dir=$(sed -n '1{s#/.*##;p;q}' "$archive_list")
case "$top_dir" in
Antigravity-*) ;;
*)
	echo "Unexpected archive layout: $top_dir" >&2
	exit 1
	;;
esac
if [ "$top_dir" != "$expected_top_dir" ]; then
	echo "Unexpected archive directory: $top_dir" >&2
	exit 1
fi

tar -xzf "$archive" -C "$tmpdir"
if [ ! -x "$tmpdir/$top_dir/antigravity" ]; then
	echo "The Antigravity launcher was not found in the archive." >&2
	exit 1
fi

python3 - "$tmpdir/$top_dir/resources/app.asar" "$icon_staged" <<'PY'
import json
import struct
import sys
from pathlib import Path

asar = Path(sys.argv[1])
output = Path(sys.argv[2])
with asar.open("rb") as archive:
    archive.read(4)
    header_size = struct.unpack("<I", archive.read(4))[0]
    archive.read(4)
    json_size = struct.unpack("<I", archive.read(4))[0]
    header = json.loads(archive.read(json_size).decode())

icon = header["files"]["icon.png"]
with asar.open("rb") as archive:
    archive.seek(8 + header_size + int(icon["offset"]))
    output.write_bytes(archive.read(int(icon["size"])))
PY

rm -rf "${install_root}.new"
mkdir -p "${install_root}.new"
cp -a "$tmpdir/$top_dir" "${install_root}.new/"
printf '%s\n' "$version" >"${install_root}.new/.linuxcapable-version"
if [ -f "${install_root}.new/$top_dir/chrome-sandbox" ]; then
	chown root:root "${install_root}.new/$top_dir/chrome-sandbox"
	chmod 4755 "${install_root}.new/$top_dir/chrome-sandbox"
fi
if [ -d "$install_root" ]; then
	rm -rf "${install_root}.previous"
	mv "$install_root" "${install_root}.previous"
fi
mv "${install_root}.new" "$install_root"
ln -sfn "$install_root/$top_dir/antigravity" "$command_link"

mkdir -p "$(dirname "$icon_file")"
install -m 0644 "$icon_staged" "$icon_file"
rm -f "$old_icon_file"

tee "$desktop_file" >/dev/null <<DESKTOP
[Desktop Entry]
Name=Antigravity
Comment=Google Antigravity 2.0 agent platform
Exec=$command_link %U
Icon=antigravity
Terminal=false
Type=Application
Categories=Development;IDE;
StartupNotify=true
StartupWMClass=Antigravity
DESKTOP

if command -v update-desktop-database >/dev/null 2>&1; then
	update-desktop-database /usr/share/applications >/dev/null 2>&1 || true
fi

if command -v gtk-update-icon-cache >/dev/null 2>&1; then
	gtk-update-icon-cache -q /usr/share/icons/hicolor 2>/dev/null || true
fi

printf 'Installed Antigravity %s at %s\n' "$version" "$install_root/$top_dir"
EOF
sudo chmod +x /usr/local/bin/update-antigravity

Run the helper script to complete the Desktop App installation:

sudo update-antigravity

Verify that the launcher symlink, desktop configuration, and icons are in place:

readlink -f /usr/local/bin/antigravity
grep -E '^(Name|Exec|Icon|Categories|StartupWMClass)=' /usr/share/applications/antigravity.desktop
test -f /usr/share/icons/hicolor/512x512/apps/antigravity.png && echo "Icon verified"

Verify AppArmor and Sandbox State

Modern Ubuntu distributions restrict unprivileged user namespaces. The helper script automatically sets up the Chromium sandbox helper (chrome-sandbox) with root ownership and 4755 permissions to allow processes to run securely without disabling AppArmor system-wide. Verify the file ownership and permissions using the following commands:

sysctl -n kernel.apparmor_restrict_unprivileged_userns 2>/dev/null || echo "Not restricted"
stat -c '%U %G %a %n' /opt/antigravity/Antigravity-*/chrome-sandbox

Section 2: Install the Antigravity IDE (VS Code Fork)

The Antigravity IDE is a visual editor specifically built as a fork of VS Code. It offers traditional editor workflows, extensions, and a visual layout to verify and audit agent actions. The IDE helper script installs the latest archive under /opt/antigravity-ide/Antigravity-IDE, resolving the space-in-path issue found in older configurations.

Create the automated IDE setup and update helper script:

sudo tee /usr/local/bin/update-antigravity-ide > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

if [ "$(id -u)" -ne 0 ]; then
	echo "Run with sudo: sudo update-antigravity-ide" >&2
	exit 1
fi

download_page="https://antigravity.google/download"
install_root="/opt/antigravity-ide"
command_link="/usr/local/bin/antigravity-ide"
desktop_file="/usr/share/applications/antigravity-ide.desktop"
icon_file="/usr/share/icons/hicolor/512x512/apps/antigravity-ide.png"
archive_top_dir="Antigravity IDE"
install_dir="Antigravity-IDE"

case "$(uname -m)" in
x86_64 | amd64) platform="linux-x64" ;;
aarch64 | arm64) platform="linux-arm" ;;
*)
	echo "Unsupported architecture: $(uname -m)" >&2
	exit 1
	;;
esac

for required_command in curl tar python3; do
	if ! command -v "$required_command" >/dev/null 2>&1; then
		echo "$required_command is required to install Antigravity IDE." >&2
		exit 1
	fi
done

if [ -L "$command_link" ]; then
	command_target=$(readlink -f "$command_link" || true)
	case "$command_target" in
	"$install_root"/*) ;;
	*)
		echo "$command_link points to $command_target. Move it before rerunning this helper." >&2
		exit 1
		;;
	esac
elif [ -e "$command_link" ]; then
	echo "$command_link exists and is not a symlink. Move it before rerunning this helper." >&2
	exit 1
fi

tmp_parent="${TMPDIR:-/var/tmp}"
mkdir -p "$tmp_parent"
tmpdir=$(mktemp -d "$tmp_parent/antigravity-ide.XXXXXX")
trap 'rm -rf "$tmpdir"' EXIT
download_html="$tmpdir/download.html"
download_js="$tmpdir/download.js"
archive="$tmpdir/Antigravity-IDE.tar.gz"
archive_list="$tmpdir/archive-list.txt"

curl -fsSL --compressed --retry 3 -o "$download_html" "$download_page"
main_js_url=$(
	python3 - "$download_html" "$download_page" <<'PY'
import re
import sys
from pathlib import Path
from urllib.parse import urljoin

html = Path(sys.argv[1]).read_text()
page_url = sys.argv[2]
matches = re.findall(r'(?:src|href)="([^"]*main-[^"]+\.js)"', html)
if not matches:
    raise SystemExit("Could not find the Antigravity download bundle")
print(urljoin(page_url, matches[-1]))
PY
)

curl -fsSL --compressed --retry 3 -o "$download_js" "$main_js_url"
download_fields=$(
	python3 - "$download_js" "$platform" <<'PY'
import re
import sys
from pathlib import Path

bundle = Path(sys.argv[1]).read_text(errors="replace")
platform = sys.argv[2]
start = bundle.find('id:"antigravity-ide"')
end = bundle.find('},{name:"download",id:"antigravity-sdk"', start)
if start == -1 or end == -1:
    raise SystemExit("Could not find Antigravity IDE downloads")

section = bundle[start:end]
match = re.search(r'href:"([^"]+/' + re.escape(platform) + r'/Antigravity%20IDE\.tar\.gz)"', section)
if not match:
    raise SystemExit(f"Could not find an IDE download for {platform}")

url = match.group(1)
version_match = re.search(r'/stable/([^/]+)/', url)
if not version_match:
    raise SystemExit("Could not parse Antigravity IDE version from download URL")

print(version_match.group(1).split("-", 1)[0], url)
PY
)
read -r version download_url <<<"$download_fields"

if [ -z "$version" ] || [ -z "$download_url" ]; then
	echo "Could not parse the Antigravity IDE download page." >&2
	exit 1
fi

expected_target="$install_root/$install_dir/antigravity-ide"
sandbox_path="$install_root/$install_dir/chrome-sandbox"
installed_version=$(cat "$install_root/.linuxcapable-version" 2>/dev/null || true)
desktop_matches=no
if [ -f "$desktop_file" ] &&
	grep -q '^Icon=antigravity-ide$' "$desktop_file" &&
	grep -q '^StartupWMClass=antigravity-ide$' "$desktop_file"; then
	desktop_matches=yes
fi
if [ "$installed_version" = "$version" ] &&
	[ -x "$expected_target" ] &&
	[ -L "$command_link" ] &&
	[ "$(readlink -f "$command_link")" = "$expected_target" ] &&
	[ "$desktop_matches" = yes ] &&
	[ -f "$icon_file" ]; then
	if [ ! -e "$sandbox_path" ] || [ "$(stat -c '%U:%G:%a' "$sandbox_path")" = "root:root:4755" ]; then
		printf 'Antigravity IDE %s is already installed at %s\n' "$version" "$install_root/$install_dir"
		exit 0
	fi
fi

printf 'Downloading Antigravity IDE %s for %s...\n' "$version" "$platform"
curl -fsSL --retry 3 -o "$archive" "$download_url"
tar -tzf "$archive" >"$archive_list"
top_dir=$(sed -n '1{s#/.*##;p;q}' "$archive_list")
if [ "$top_dir" != "$archive_top_dir" ]; then
	echo "Unexpected archive directory: $top_dir" >&2
	exit 1
fi

tar -xzf "$archive" -C "$tmpdir"
if [ ! -x "$tmpdir/$archive_top_dir/antigravity-ide" ]; then
	echo "The Antigravity IDE launcher was not found in the archive." >&2
	exit 1
fi

icon_source="$tmpdir/$archive_top_dir/resources/app/resources/linux/code.png"
if [ ! -f "$icon_source" ]; then
	echo "The Antigravity IDE icon was not found in the archive." >&2
	exit 1
fi

rm -rf "${install_root}.new"
mkdir -p "${install_root}.new/$install_dir"
cp -a "$tmpdir/$archive_top_dir/." "${install_root}.new/$install_dir/"
printf '%s\n' "$version" >"${install_root}.new/.linuxcapable-version"
if [ -f "${install_root}.new/$install_dir/chrome-sandbox" ]; then
	chown root:root "${install_root}.new/$install_dir/chrome-sandbox"
	chmod 4755 "${install_root}.new/$install_dir/chrome-sandbox"
fi
if [ -d "$install_root" ]; then
	rm -rf "${install_root}.previous"
	mv "$install_root" "${install_root}.previous"
fi
mv "${install_root}.new" "$install_root"
ln -sfn "$install_root/$install_dir/antigravity-ide" "$command_link"

mkdir -p "$(dirname "$icon_file")"
install -m 0644 "$icon_source" "$icon_file"

tee "$desktop_file" >/dev/null <<DESKTOP
[Desktop Entry]
Name=Antigravity IDE
Comment=Google Antigravity IDE
Exec=$command_link %U
Icon=antigravity-ide
Terminal=false
Type=Application
Categories=Development;IDE;
MimeType=x-scheme-handler/antigravity-ide;application/x-antigravity-workspace;
StartupNotify=true
StartupWMClass=antigravity-ide
DESKTOP

if command -v update-desktop-database >/dev/null 2>&1; then
	update-desktop-database /usr/share/applications >/dev/null 2>&1 || true
fi

if command -v gtk-update-icon-cache >/dev/null 2>&1; then
	gtk-update-icon-cache -q /usr/share/icons/hicolor 2>/dev/null || true
fi

printf 'Installed Antigravity IDE %s at %s\n' "$version" "$install_root/$install_dir"
EOF
sudo chmod +x /usr/local/bin/update-antigravity-ide

Execute the installer helper to set up the Antigravity IDE on your system:

sudo update-antigravity-ide

Confirm the IDE installation state and path configuration:

readlink -f /usr/local/bin/antigravity-ide
grep -E '^(Name|Exec|Icon|Categories|StartupWMClass)=' /usr/share/applications/antigravity-ide.desktop
stat -c '%U %G %a %n' /opt/antigravity-ide/Antigravity-IDE/chrome-sandbox

Section 3: Install the Antigravity CLI (agy)

The Antigravity CLI (executable name: agy) is a lightweight agent engine runner that executes code updates inside background terminal sessions. It compiles, tests, and resolves code issues directly inside directory workspaces.

Install curl on your system if you skipped the earlier graphical setup sections:

sudo apt update
sudo apt install curl -y

Run the official Google shell script installer. This downloads the CLI binary and saves it to your local user directory at ~/.local/bin/agy:

curl -fsSL https://antigravity.google/cli/install.sh | bash

Add the local bin folder to your shell path variables so the terminal can resolve the agy command. Append the export configuration to your ~/.bashrc and apply the changes:

# Append to bash configuration file
grep -qxF 'export PATH="$HOME/.local/bin:$PATH"' "$HOME/.bashrc" || echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$HOME/.bashrc"

# Refresh path configurations in current terminal
export PATH="$HOME/.local/bin:$PATH"
source ~/.bashrc

Verify that the command resolves correctly and check the current engine version:

command -v agy
agy --version

Create an optional CLI updater helper to easily check and apply future CLI updates:

mkdir -p "$HOME/.local/bin"
tee "$HOME/.local/bin/update-antigravity-cli" > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
export PATH="$HOME/.local/bin:$PATH"
if [ ! -x "$HOME/.local/bin/agy" ]; then
	curl -fsSL https://antigravity.google/cli/install.sh | bash
else
	"$HOME/.local/bin/agy" update
fi
"$HOME/.local/bin/agy" --version
EOF
chmod +x "$HOME/.local/bin/update-antigravity-cli"

Section 4: Install Legacy Antigravity IDE APT Package (Optional)

Google maintains a legacy Artifact Registry APT repository for older versions of the Antigravity IDE (version 1.23.2). If your projects require the older editor package, configure the GPG security key and registration files:

# Set up key directory
sudo install -d -m 0755 /etc/apt/keyrings

# Register the Artifact Registry repository key
curl -fsSL https://us-central1-apt.pkg.dev/doc/repo-signing-key.gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/antigravity-repo-key.gpg

# Create the repository sources entry using modern DEB822 format
sudo tee /etc/apt/sources.list.d/google-antigravity.sources > /dev/null <<'EOF'
Types: deb
URIs: https://us-central1-apt.pkg.dev/projects/antigravity-auto-updater-dev/
Suites: antigravity-debian
Components: main
Signed-By: /etc/apt/keyrings/antigravity-repo-key.gpg
EOF

# Update indices and install the package
sudo apt update
sudo apt install antigravity -y

Section 5: Launching and Authentication

The Desktop App and IDE can be started from GNOME’s Activities application dashboard, or executed directly from any desktop terminal emulator. Use the detailed sections and screenshots below to verify your launcher configurations.

Launch Google Antigravity 2.0 Desktop App

To run the standalone desktop interface, launch the program from your desktop activities panel or type the terminal path command:

antigravity
Main new 2.0 antigravity homepage - Google Antigravity: How to install for Linux
Standalone Google Antigravity 2.0 Desktop App dashboard and workspace controls.

Launch Antigravity IDE

To run the editor interface, search for “Antigravity IDE” in your applications search bar, or run the launcher command from your desktop shell environment:

antigravity-ide

CLI Authentication Flow

Start the browser-based login flow to authenticate the agy command-line runner. If you are operating over an SSH connection, the CLI will output a web URL you can copy and paste into a browser on a different computer, then return the authorization code back to the terminal prompt:

agy auth login

You can run commands directly using a non-interactive print prompt or open an interactive prompt inside a target coding folder:

# Single print mode command
agy --print "Provide a summary of the source code files in this directory."

# Interactive CLI mode
agy --prompt-interactive "Help me debug compilation failures."

Several key operations can be triggered by typing commands directly into the active agy terminal workspace:

Command Action Description
? Shows built-in help and options list
@ Allows autocomplete tagging of local project files
! Runs a local shell command directly from the agent terminal
/agents Opens active subagent panels to track parallel work trees
/tasks Displays background task details and logs
/logout Removes and clears credentials files from your system

Google Antigravity 2.0 Screenshots

Google Antigravity 2.0 Beginners Guide

If you prefer a visual walk-through to help you get started with the platform, watch the official Google Antigravity 2.0 Beginners Guide video below, created by the Antigravity engineering team themselves:

Section 6: Troubleshooting & Fixes

Running multi-agent developer orchestration platforms on Linux environments can trigger authentication loops, AppArmor namespace restricts, or graphical display errors. Review the verified solutions below to resolve these issues.

The Keyring Authentication Loop (libsecret Failures)

If you run the CLI engine in headless SSH terminals, WSL2 containers, or lightweight window managers, the CLI will ask you to authenticate every time you launch agy. This loop happens because the Secret Service keyring is not active or accessible in the current shell session.

To resolve this authentication loop, install the required D-Bus and Gnome Keyring daemon packages:

sudo apt update
sudo apt install -y dbus-x11 libsecret-1-0 gnome-keyring

Next, configure D-Bus and the keyring daemon to launch and unlock automatically when you open a bash terminal session. Append the script block below to your ~/.bashrc file:

# Start keyring and D-Bus for session persistence
if [ -n "$BASH_VERSION" ]; then
  export $(dbus-launch)
  eval "$(echo "" | gnome-keyring-daemon --unlock)"
  eval "$(gnome-keyring-daemon --start)"
  export SSH_AUTH_SOCK
fi

AppArmor Restrictions and IDE Crashes

On Ubuntu 24.04 and 26.04, the Antigravity IDE can close immediately on startup because AppArmor moves the Electron processes into the restricted unprivileged user namespace profile. Check your system kernel logs to confirm if AppArmor is blocking the app:

sudo journalctl -k --since "10 minutes ago" --no-pager | grep -iE 'apparmor.*antigravity-ide|trap.*antigravity-ide'

If the log shows a profile="unprivileged_userns" entry for the IDE, create a dedicated AppArmor profile for the executable to allow user namespace creation safely without compromising security settings system-wide:

sudo install -d -m 0755 /etc/apparmor.d/local

if [ -f /etc/apparmor.d/abi/5.0 ]; then
  apparmor_abi="5.0"
elif [ -f /etc/apparmor.d/abi/4.0 ]; then
  apparmor_abi="4.0"
else
  apparmor_abi=""
fi

if [ -n "$apparmor_abi" ]; then
  sudo touch /etc/apparmor.d/local/antigravity-ide

  sudo tee /etc/apparmor.d/antigravity-ide > /dev/null <<EOF
abi <abi/${apparmor_abi}>,
include <tunables/global>

profile antigravity-ide "/opt/antigravity-ide/Antigravity-IDE/antigravity-ide" flags=(unconfined) {
  userns,
  "/opt/antigravity-ide/Antigravity-IDE/antigravity-ide" mr,
  include if exists <local/antigravity-ide>
}
EOF

  sudo apparmor_parser -r /etc/apparmor.d/antigravity-ide
fi

Black Desktop or IDE Window (Wayland GPU Bugs)

If the graphical window opens but displays only a black canvas, the cause is typically an Electron GPU acceleration incompatibility with your active Wayland session. Launch the apps with hardware acceleration disabled to test if the issue resolves:

antigravity --disable-gpu
antigravity-ide --disable-gpu

If Wayland still drops the graphics rendering context, force the apps to fall back to an Xwayland session:

ELECTRON_OZONE_PLATFORM_HINT=x11 antigravity --disable-gpu
ELECTRON_OZONE_PLATFORM_HINT=x11 antigravity-ide --disable-gpu

Running Inside Virtual Machines (VirtualBox, QEMU/KVM, VMware)

If you run the Antigravity Desktop App or IDE inside a virtual machine (VM), they may fail to launch, display a black screen, or perform poorly. Because Electron applications rely on GPU-accelerated rendering, VM graphics drivers can drop the rendering context. Use the following hypervisor-specific configurations to fix this:

For VirtualBox:

  • Ensure 3D Acceleration is enabled in the VM settings under Display.
  • Install the guest additions inside the guest OS: sudo apt install virtualbox-guest-x11.
  • If the window remains black, run the launchers with the software rendering override: LIBGL_ALWAYS_SOFTWARE=1 antigravity.

For QEMU/KVM (Virt-Manager & GNOME Boxes):

  • In Virt-Manager, select the VM’s Video Virtio hardware device and check the box for 3D Acceleration.
  • Under the Display Spice hardware entry, set Listen Type to None and check the box for OpenGL.
  • Install the spice guest agents: sudo apt install spice-vdagent.

For VMware Workstation & Player:

  • Enable Accelerate 3D graphics in your Virtual Machine Settings under Display.
  • Update your guest Mesa drivers, or add the override line mks.enable3d = "FALSE" to your VM’s host .vmx configuration file to disable 3D acceleration at the hypervisor level.

URI Scheme Callback Redirections (antigravity:// Conflicts)

Older desktop integrations can misdirect sign-in handshakes, preventing the antigravity:// or antigravity-ide:// protocols from returning authorization keys to the CLI. Query your desktop settings to inspect what applications are registered for these URL schemes:

xdg-settings get default-url-scheme-handler antigravity
xdg-settings get default-url-scheme-handler antigravity-ide

If the query returns a legacy configuration file, remove the stale links or update the scheme pointers under ~/.config/mimeapps.list or ~/.local/share/applications/.

How to Reset Your Authentication and Configuration State

If your configuration files become corrupted or authentication is stuck in a loop, run these commands to reset the engine workspace profiles:

1. Wipe Local CLI Configurations and Profile Paths

rm -rf ~/.config/antigravity ~/.local/share/antigravity

This command deletes cached CLI settings, subagent context configurations, and saved key profiles.

2. Trigger a Fresh Login Session

agy auth login –force

Use the force flag to start the authorization process from a clean state and register the URI callback handler.

How to Uninstall Google Antigravity

If you need to remove Google Antigravity and restore your original configuration, follow the removal sections below matching your installation choices.

Uninstall the Antigravity 2.0 Desktop App

Delete the installation directories, desktop entry, command link, icon, and helper files:

sudo rm -rf /opt/antigravity /opt/antigravity.previous /opt/antigravity.new
sudo rm -f /usr/local/bin/antigravity
sudo rm -f /usr/local/bin/update-antigravity
sudo rm -f /usr/share/applications/antigravity.desktop /usr/share/applications/antigravity-x11.desktop
sudo rm -f /usr/share/icons/hicolor/512x512/apps/antigravity.png
sudo update-desktop-database /usr/share/applications || true

Uninstall the Antigravity IDE

Remove the installation folders, symlink, helpers, app launcher, and optional AppArmor profile:

sudo rm -rf /opt/antigravity-ide /opt/antigravity-ide.previous /opt/antigravity-ide.new
sudo rm -f /usr/local/bin/antigravity-ide
sudo rm -f /usr/local/bin/update-antigravity-ide
sudo rm -f /usr/share/applications/antigravity-ide.desktop /usr/share/applications/antigravity-ide-x11.desktop
sudo rm -f /usr/share/icons/hicolor/512x512/apps/antigravity-ide.png
if [ -f /etc/apparmor.d/antigravity-ide ]; then
  sudo apparmor_parser -R /etc/apparmor.d/antigravity-ide || true
  sudo rm -f /etc/apparmor.d/antigravity-ide /etc/apparmor.d/local/antigravity-ide
fi
sudo update-desktop-database /usr/share/applications || true

Uninstall the Antigravity CLI

Remove the command binary and update script from your user-local directories:

rm -f "$HOME/.local/bin/agy" "$HOME/.local/bin/update-antigravity-cli"
hash -r

Helpful Antigravity Resources & Communities

For community help, advanced CLI customizations, or deep architectural overviews, check out these developer communities and resources:

Frequently Asked Questions

What are the three products in the Google Antigravity 2.0 ecosystem?

The Google Antigravity 2.0 ecosystem contains the standalone Desktop App for project and task management, the Antigravity IDE which is a visual editor fork of VS Code, and the Antigravity CLI (agy) which is the background agent execution engine.

How do I install the Google Antigravity 2.0 Desktop App on Linux?

Download the official Linux tarball, extract it under /opt/antigravity, register the chrome-sandbox binary with root ownership and 4755 permissions, and create a desktop launcher file under /usr/share/applications/antigravity.desktop.

Why does the Antigravity CLI keep prompting me to log in on Linux?

This authentication loop happens when the D-Bus Secret Service or Gnome Keyring is not running or accessible in your current shell session. Installing dbus-x11 and gnome-keyring, and running them in your ~/.bashrc file, resolves the loop.

How do I fix the Antigravity IDE crashing immediately on Ubuntu 24.04 or 26.04?

This crash is caused by Ubuntu’s unprivileged user namespace restrictions. You can resolve it by creating a dedicated AppArmor profile under /etc/apparmor.d/antigravity-ide with unconfined flags and userns access.

Is there an official Snap or Flatpak package for Google Antigravity 2.0?

No, Google does not maintain official Snap or Flatpak packages for Google Antigravity 2.0. You must install the products using the official CLI shell installer script, standalone tarballs, or the legacy APT package for older versions.

More Linux development guides: Visual Studio Code  ·  Docker Setup  ·  PowerShell for Linux