How to Install Google Antigravity on Fedora 44

Install Google Antigravity on Fedora 44 with 2.0 desktop, IDE tarball, agy CLI, update helpers, legacy RPM notes, and cleanup

UpdatedPublished AuthorJoshua JamesRead time11 minGuide typeFedoraDiscussion8 comments

Google Antigravity changed sharply with the 2.0 launch. Fedora now has three current install paths: the Antigravity 2.0 desktop app for orchestrating agents visually, the Antigravity IDE for editor-first coding, and the agy CLI for terminal-first work. The older Antigravity IDE RPM still exists, but it now belongs in a legacy path for users who specifically need the 1.x package-managed IDE.

The legacy Fedora RPM repository still resolves, but its newest RPM currently stops at 1.23.2. Treat that repo as the legacy IDE path unless Google later publishes a 2.x RPM. For current releases, use Google’s Linux tarballs through local update helpers for the desktop app and IDE, and use Google’s official installer for the CLI.

Choose a Google Antigravity Install Path on Fedora

Google’s download page now presents Antigravity 2.0, Antigravity CLI, Antigravity SDK, and Antigravity IDE as separate products. Fedora’s default repositories do not ship Antigravity, so each install path uses a Google-hosted source.

Install pathBest fitUpdate method
Option 1: Antigravity 2.0 desktop appCurrent standalone agent platform for projects, artifacts, scheduled work, and visual agent orchestration.Run sudo update-antigravity.
Option 2: Antigravity IDECurrent editor-first IDE with the agent manager, artifacts, tab completion, and codebase-aware commands.Run sudo update-antigravity-ide.
Option 3: Antigravity CLITerminal-first agy workflow for local projects, SSH sessions, scripts, and keyboard-driven development.Run agy update or update-antigravity-cli.
Legacy: Antigravity IDE RPMOlder package-managed IDE flow when you specifically need the 1.x app.Run sudo dnf upgrade --refresh antigravity if Google publishes a newer RPM.

The Antigravity 2.0 desktop helper exposes antigravity, while the current IDE helper exposes antigravity-ide. The legacy RPM also exposes antigravity and antigravity.desktop, so remove the legacy RPM before using the current desktop helper on the same Fedora system.

Install Antigravity 2.0 Desktop App on Fedora

Refresh Fedora first, then install the small set of tools used by the desktop helper:

sudo dnf upgrade --refresh
sudo dnf install curl tar desktop-file-utils python3

These commands use sudo for tasks that need root privileges. If your account is not in the sudoers file yet, follow the guide on how to add a user to sudoers on Fedora.

The desktop helper reads Google’s download page, selects the x86_64 or aarch64 tarball for the local machine, installs the app under /opt/antigravity, creates /usr/local/bin/antigravity, extracts Google’s bundled icon, and adds the desktop launcher Fedora needs for correct app-menu and dock matching.

The desktop helper intentionally uses Google’s download page instead of the older auto-updater endpoint, which currently stops at 2.0.1. Overwrite any earlier saved /usr/local/bin/update-antigravity copy before updating an existing desktop install.

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"
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
	printf 'Antigravity %s is already installed at %s\n' "$version" "$install_root/$expected_top_dir"
	exit 0
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())

try:
    icon = header["files"]["icon.png"]
except KeyError as exc:
    raise SystemExit("icon.png was not found in the Antigravity bundle") from exc

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 [ -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 restorecon >/dev/null 2>&1; then
	restorecon -R "$install_root" "$command_link" "$desktop_file" "$icon_file" 2>/dev/null || true
fi

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 to install or refresh the Antigravity 2.0 desktop app. A successful run prints the installed version and path:

sudo update-antigravity
Downloading Antigravity 2.0.6 for linux-x64...
Installed Antigravity 2.0.6 at /opt/antigravity/Antigravity-x64

Verify the launcher path and desktop entry. The resolved directory name can differ by architecture, but it should end with the antigravity executable.

readlink -f /usr/local/bin/antigravity
test -x "$(readlink -f /usr/local/bin/antigravity)" && echo "Antigravity launcher is installed"
grep -E '^(Name|Exec|Icon|Categories|StartupWMClass)=' /usr/share/applications/antigravity.desktop
test -f /usr/share/icons/hicolor/512x512/apps/antigravity.png && echo "Antigravity icon is installed"
/opt/antigravity/Antigravity-x64/antigravity
Antigravity launcher is installed
Name=Antigravity
Exec=/usr/local/bin/antigravity %U
Icon=antigravity
Categories=Development;IDE;
StartupWMClass=Antigravity
Antigravity icon is installed

The helper also restores Fedora’s default SELinux labels after copying the tarball payload. The important context types are usr_t for the application directory, desktop file, and icon, and bin_t for the command link:

ls -Zd /opt/antigravity /usr/local/bin/antigravity /usr/share/applications/antigravity.desktop /usr/share/icons/hicolor/512x512/apps/antigravity.png
unconfined_u:object_r:usr_t:s0 /opt/antigravity
unconfined_u:object_r:bin_t:s0 /usr/local/bin/antigravity
unconfined_u:object_r:usr_t:s0 /usr/share/applications/antigravity.desktop
system_u:object_r:usr_t:s0 /usr/share/icons/hicolor/512x512/apps/antigravity.png

Install Antigravity IDE on Fedora

The current Antigravity IDE is a separate 2.x editor build from Google’s download page. It uses a Linux tarball instead of the legacy RPM repo, so install it with its own helper, command name, desktop file, and icon.

Install the helper prerequisites if you skipped the desktop app section:

sudo dnf install curl tar desktop-file-utils python3

The IDE helper reads Google’s download bundle, selects the Linux x64 or ARM64 IDE tarball, installs it under /opt/antigravity-ide, creates /usr/local/bin/antigravity-ide, installs the upstream icon, and writes a separate Fedora launcher.

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"

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_top_dir="Antigravity IDE"
expected_target="$install_root/$expected_top_dir/antigravity-ide"
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
	printf 'Antigravity IDE %s is already installed at %s\n' "$version" "$install_root/$expected_top_dir"
	exit 0
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" != "$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-ide" ]; then
	echo "The Antigravity IDE launcher was not found in the archive." >&2
	exit 1
fi

icon_source="$tmpdir/$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"
cp -a "$tmpdir/$top_dir" "${install_root}.new/"
printf '%s\n' "$version" >"${install_root}.new/.linuxcapable-version"
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-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 restorecon >/dev/null 2>&1; then
	restorecon -R "$install_root" "$command_link" "$desktop_file" "$icon_file" 2>/dev/null || true
fi

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/$top_dir"
EOF

sudo chmod +x /usr/local/bin/update-antigravity-ide

Run the helper to install or refresh the current Antigravity IDE. A successful run prints the version and install path:

sudo update-antigravity-ide
Downloading Antigravity IDE 2.0.3 for linux-x64...
Installed Antigravity IDE 2.0.3 at /opt/antigravity-ide/Antigravity IDE

Verify the IDE command, desktop entry, and icon:

readlink -f /usr/local/bin/antigravity-ide
test -x "$(readlink -f /usr/local/bin/antigravity-ide)" && echo "Antigravity IDE launcher is installed"
grep -E '^(Name|Exec|Icon|Categories|StartupWMClass)=' /usr/share/applications/antigravity-ide.desktop
test -f /usr/share/icons/hicolor/512x512/apps/antigravity-ide.png && echo "Antigravity IDE icon is installed"
/opt/antigravity-ide/Antigravity IDE/antigravity-ide
Antigravity IDE launcher is installed
Name=Antigravity IDE
Exec=/usr/local/bin/antigravity-ide %U
Icon=antigravity-ide
Categories=Development;IDE;
StartupWMClass=antigravity-ide
Antigravity IDE icon is installed

Install Antigravity CLI on Fedora

The Antigravity CLI is a separate terminal interface named agy. Install it from your normal Fedora user account with Google’s official shell installer; it writes the binary under ~/.local/bin instead of installing a system RPM.

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

Open a new terminal if the installer updated your shell startup files, or export ~/.local/bin for the current terminal before verifying agy:

export PATH="$HOME/.local/bin:$PATH"
command -v agy
agy --version
/home/username/.local/bin/agy
1.0.1

Check the available CLI flags and subcommands after installation:

agy --help | sed -n '1,24p'
Usage of agy:
  --add-dir                       Add a directory to the workspace (repeatable) (default [])
  -c                              Short alias for --continue
  --continue                      Continue the most recent conversation
  --conversation                  Resume a previous conversation by ID
  --dangerously-skip-permissions  Auto-approve all tool permission requests without prompting
  -i                              Short alias for --prompt-interactive
  --log-file                      Override CLI log file path
  -p                              Short alias for --print
  --print                         Run a single prompt non-interactively and print the response
  --print-timeout                 Timeout for print mode wait (default 5m0s)
  --prompt                        Alias for --print
  --prompt-interactive            Run an initial prompt interactively and continue the session
  --sandbox                       Run in a sandbox with terminal restrictions enabled

Available subcommands:
  changelog       Show changelog and release notes
  help            Show help for subcommands
  install         Configure environment paths and shell settings
  plugin          Manage plugins (install, uninstall, list, enable, disable)
  plugins         Alias for plugin
  update          Update CLI

Create a small update helper if you want the same repeatable management pattern used by the desktop app. The helper installs the CLI when agy is missing; otherwise, it runs agy update.

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"

Run the helper whenever you want to refresh the CLI. A successful run prints the installed CLI version:

update-antigravity-cli
1.0.1

Install Legacy Antigravity IDE RPM on Fedora

The RPM path is legacy for Fedora at the moment. The Google RPM repo still exists, but the newest package exposed by the repo metadata is 1.23.2, not the current Antigravity 2.0 desktop app or the current Antigravity IDE tarball.

Create the RPM repository file only if you specifically need the older Antigravity IDE package:

printf '%s\n' \
'[antigravity-rpm]' \
'name=Antigravity RPM Repository' \
'baseurl=https://us-central1-yum.pkg.dev/projects/antigravity-auto-updater-dev/antigravity-rpm' \
'enabled=1' \
'gpgcheck=0' | sudo tee /etc/yum.repos.d/antigravity.repo > /dev/null

Refresh that repository and check the newest package visible for your architecture before installing:

sudo dnf makecache --refresh --repo antigravity-rpm
dnf repoquery --repo antigravity-rpm --arch="$(uname -m)" --latest-limit=1 antigravity
antigravity-0:1.23.2-1776330658.el8.x86_64

If you still want the legacy IDE package after confirming the version, install it with DNF:

sudo dnf install antigravity

Google’s RPM repo currently uses gpgcheck=0. DNF can warn that OpenPGP checks were skipped for the Antigravity package; that warning comes from the upstream repository configuration.

Warning: skipped OpenPGP checks for 1 package from repository: antigravity-rpm
Complete!

The legacy RPM metadata includes /usr/bin/antigravity and antigravity.desktop. After installing that package, launch the older IDE from Activities as Antigravity, or run /usr/bin/antigravity when you intentionally want the RPM-managed 1.x IDE.

Launch Google Antigravity on Fedora

The graphical Antigravity surfaces and the terminal CLI launch separately. Use the Fedora app menu for the desktop app or IDE, and use agy from a terminal when you want the CLI workflow.

The Antigravity 2.0 desktop app and Antigravity IDE need a logged-in graphical session before their interfaces are useful. Fedora Server or a minimal install can hold the files, but the GUI surfaces are meant for a desktop session.

Open Antigravity 2.0 Desktop App from Activities

  1. Open Activities.
  2. Search for Antigravity.
  3. Select the Antigravity launcher to open the app.

A desktop terminal can start the same launcher directly:

antigravity

On first launch, choose a Google account or Google Cloud project if the desktop app asks you to sign in. After sign-in, the main workspace opens with the model picker and conversation input.

Open Antigravity IDE on Fedora

The IDE helper creates a separate Antigravity IDE launcher for editor-first work.

  1. Open Activities.
  2. Search for Antigravity IDE.
  3. Select the Antigravity IDE launcher to open the editor.

A desktop terminal can start the same IDE launcher directly:

antigravity-ide

The IDE is the right surface when you want normal file editing, tab completion, code commands, and the agent manager in one editor window. Use the Antigravity 2.0 desktop app instead when you want the standalone project and scheduled-task surface.

Start Antigravity CLI from a Terminal

Run agy from a project directory when you want the terminal interface. The CLI uses the current directory as the main workspace unless you add more paths with --add-dir.

export PATH="$HOME/.local/bin:$PATH"
agy

Authenticate Antigravity CLI on Fedora

When no saved session is available, Antigravity CLI uses a browser-backed sign-in flow. On a local Fedora desktop, agy can open the browser sign-in page. In an SSH session, it prints an authorization URL for your local browser and asks you to paste the returned code into the terminal.

To clear saved CLI credentials later, open agy and run /logout from the prompt.

Run first Antigravity CLI commands

The CLI can run interactively or answer a single non-interactive prompt. Start with a project directory so the agent has the right file context:

cd ~/Projects/example-project
agy --print "Summarize this project and list the safest next setup step."

Use --prompt-interactive when you want to seed the first message and continue the conversation in the terminal UI:

agy --prompt-interactive "Review this repository and ask before changing files."

Add another directory when the work spans more than one local folder:

agy --add-dir ../shared-library --prompt-interactive "Use both folders as context for this task."

Use the sandbox flag for a session where local command execution should start from stricter containment:

agy --sandbox --print "Run a read-only project health check and report findings."

Use Antigravity CLI features

Several CLI controls are typed directly into the agy prompt. These are useful after the first launch:

CLI controlUse
?Open inline help and available slash commands.
@Trigger path suggestions when referencing files.
!Start a terminal command prompt from inside the CLI.
/config or /settingsOpen the settings panel for behavior, safety, and interface options.
/permissionsSet how much review the agent needs before actions.
/agentsOpen the subagents panel to monitor parallel agent work.
/tasksMonitor, inspect, or stop background tasks.
/skillsBrowse available local and global skills.
/mcpConfigure Model Context Protocol servers.
/resumeResume or switch conversations.
/rewindRoll back conversation history to an earlier point.
/logoutSign out and clear saved CLI credentials.

If this Fedora workstation still needs Git, install Git on Fedora first, then configure Git username and email before you start cloning repositories inside Antigravity.

For Python projects, Antigravity uses the interpreter and virtual environments available in the workspace. If that toolchain is not ready yet, install Python on Fedora before opening the project folder.

Official Google Antigravity resources

Update Google Antigravity on Fedora

Update Antigravity 2.0 desktop app

The desktop helper performs the same download-page check during updates. It leaves the previous install under /opt/antigravity.previous so you can inspect or remove the old copy after a successful upgrade.

If sudo update-antigravity reports that Antigravity 2.0.1 is already installed, the local helper is stale. Recreate /usr/local/bin/update-antigravity with the current desktop helper definition, then rerun the update command.

sudo update-antigravity

Update Antigravity IDE

The IDE helper checks the current download page and keeps the previous copy under /opt/antigravity-ide.previous after a successful replacement:

sudo update-antigravity-ide

Update Antigravity CLI

Use the helper when you want one command that handles first install and later updates:

update-antigravity-cli

After agy is installed, the direct updater works too:

agy update

With the transient spinner and status icon omitted, a no-op update looks like this:

Checking for updates... (current version 1.0.1)
You are already on the latest version.

Update the legacy Antigravity IDE RPM

DNF can update the legacy RPM if Google publishes another package to the RPM repo:

sudo dnf upgrade --refresh antigravity

For regular workstation maintenance, update the whole Fedora system so DNF-managed packages move together:

sudo dnf upgrade --refresh

If you prefer unattended package maintenance for DNF-managed software, the guide to install dnf-automatic on Fedora covers the background update path.

Troubleshoot Google Antigravity on Fedora

Antigravity RPM still shows version 1.23.2

A 1.23.2 result means DNF is reading the legacy RPM repository, not the current Antigravity 2.0 desktop or IDE download paths. Use sudo update-antigravity for the desktop app, sudo update-antigravity-ide for the current IDE, or rerun dnf repoquery later if Google starts publishing 2.x RPMs.

Desktop helper reports Antigravity 2.0.1 is already installed

That message means the local desktop helper is an older saved copy that still queries Google’s previous auto-updater endpoint. The current desktop path resolves the Linux tarball from Google’s download page instead.

if [ -f /usr/local/bin/update-antigravity ] && grep -Fq 'antigravity-auto-updater-974169037036' /usr/local/bin/update-antigravity; then
  echo "Old desktop helper detected"
elif [ -f /usr/local/bin/update-antigravity ]; then
  echo "Current download-page helper or a different helper is installed"
else
  echo "No desktop helper is installed"
fi

If the old helper is detected, overwrite /usr/local/bin/update-antigravity with the current desktop helper definition and run sudo update-antigravity again.

Desktop or IDE helper fails with a download or 404 error

A download 404 usually means Google’s download page changed or an old helper built an invalid download URL. Check whether the download page still exposes a JavaScript bundle:

curl -fsSL --compressed https://antigravity.google/download | grep -o 'main-[^"]*\.js' | head -n 1

If the command prints a bundle name, replace the affected helper with the current helper definition and rerun the update. If it prints nothing, check Google’s download, release, and support pages before retrying.

Antigravity desktop or IDE version check fails over SSH

The Antigravity desktop and IDE executables initialize graphical components. On a headless SSH session, antigravity --version or antigravity-ide --version can fail with a missing $DISPLAY or X server error. Verify the install with the matching update helper, readlink -f command, and desktop launcher instead.

Fix a black Antigravity desktop or IDE window

A black desktop window is usually a Chromium or Electron GPU-rendering problem under the active Fedora graphics session, not an SELinux denial. Check the user journal first so you can separate rendering errors from a different startup failure:

journalctl --user --no-pager -n 300 | grep -i antigravity || echo "No Antigravity messages found"

If the log mentions GPU, VA-API, or rendering failures, launch the affected Antigravity surface from a desktop terminal with GPU acceleration disabled:

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

If the window still stays black on a Wayland session, test an Xwayland fallback with the same GPU workaround:

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

If the desktop app command works, create a separate fallback launcher so the normal Antigravity launcher remains unchanged:

sudo cp /usr/share/applications/antigravity.desktop /usr/share/applications/antigravity-x11.desktop
sudo sed -i \
  -e 's/^Name=.*/Name=Antigravity (X11 fallback)/' \
  -e 's#^Exec=.*#Exec=env ELECTRON_OZONE_PLATFORM_HINT=x11 /usr/local/bin/antigravity --disable-gpu %U#' \
  /usr/share/applications/antigravity-x11.desktop
sudo update-desktop-database /usr/share/applications

If the IDE command works with the same fallback, create a separate IDE fallback launcher:

sudo cp /usr/share/applications/antigravity-ide.desktop /usr/share/applications/antigravity-ide-x11.desktop
sudo sed -i \
  -e 's/^Name=.*/Name=Antigravity IDE (X11 fallback)/' \
  -e 's#^Exec=.*#Exec=env ELECTRON_OZONE_PLATFORM_HINT=x11 /usr/local/bin/antigravity-ide --disable-gpu %U#' \
  /usr/share/applications/antigravity-ide-x11.desktop
sudo update-desktop-database /usr/share/applications

Remove the fallback launchers later if a Google update or Fedora graphics update fixes the black window:

sudo rm -f /usr/share/applications/antigravity-x11.desktop
sudo rm -f /usr/share/applications/antigravity-ide-x11.desktop
sudo update-desktop-database /usr/share/applications

Check SELinux labels for desktop and IDE paths

A normal helper install should not need a custom SELinux policy after Fedora labels the copied files correctly. If you edited a helper, copied files manually, or moved Antigravity to a different prefix, restore the default file contexts before chasing denials:

sudo restorecon -R /opt/antigravity /opt/antigravity-ide \
  /usr/local/bin/antigravity /usr/local/bin/antigravity-ide \
  /usr/share/applications/antigravity.desktop /usr/share/applications/antigravity-ide.desktop \
  /usr/share/icons/hicolor/512x512/apps/antigravity.png \
  /usr/share/icons/hicolor/512x512/apps/antigravity-ide.png

Then recheck the labels. Fedora should show normal user and binary contexts, not temporary extraction contexts from /tmp:

ls -Zd /opt/antigravity /opt/antigravity-ide \
  /usr/local/bin/antigravity /usr/local/bin/antigravity-ide \
  /usr/share/applications/antigravity.desktop /usr/share/applications/antigravity-ide.desktop \
  /usr/share/icons/hicolor/512x512/apps/antigravity.png \
  /usr/share/icons/hicolor/512x512/apps/antigravity-ide.png
unconfined_u:object_r:usr_t:s0 /opt/antigravity
unconfined_u:object_r:usr_t:s0 /opt/antigravity-ide
unconfined_u:object_r:bin_t:s0 /usr/local/bin/antigravity
unconfined_u:object_r:bin_t:s0 /usr/local/bin/antigravity-ide
unconfined_u:object_r:usr_t:s0 /usr/share/applications/antigravity.desktop
unconfined_u:object_r:usr_t:s0 /usr/share/applications/antigravity-ide.desktop
system_u:object_r:usr_t:s0 /usr/share/icons/hicolor/512x512/apps/antigravity.png
system_u:object_r:usr_t:s0 /usr/share/icons/hicolor/512x512/apps/antigravity-ide.png

Fix agy command not found

The CLI installer writes agy to ~/.local/bin. Open a new terminal, or add that directory to the current shell before trying again:

export PATH="$HOME/.local/bin:$PATH"
command -v agy

Fix Antigravity CLI sign-in on SSH

If agy cannot open a browser from an SSH session, use the authorization URL it prints in the terminal. Open that URL in a local browser, sign in, then paste the returned code back into the SSH terminal when the CLI asks for it.

Fix legacy RPM signature verification errors

If an older repo example or local hardening changed gpgcheck to 1, DNF can fail with a signature mismatch. Restore the upstream repo shape, clean metadata, and retry only if you intentionally want the legacy RPM path:

printf '%s\n' \
'[antigravity-rpm]' \
'name=Antigravity RPM Repository' \
'baseurl=https://us-central1-yum.pkg.dev/projects/antigravity-auto-updater-dev/antigravity-rpm' \
'enabled=1' \
'gpgcheck=0' | sudo tee /etc/yum.repos.d/antigravity.repo > /dev/null

sudo dnf clean metadata
sudo dnf install --refresh antigravity

Remove Google Antigravity from Fedora

Remove Antigravity 2.0 desktop app

Delete the tarball-managed desktop app, previous copy, command link, helper, desktop launcher, and icon files:

sudo rm -rf /opt/antigravity /opt/antigravity.previous
sudo rm -f /usr/local/bin/antigravity /usr/local/bin/update-antigravity /usr/share/applications/antigravity.desktop /usr/share/applications/antigravity-x11.desktop /usr/share/icons/hicolor/512x512/apps/antigravity.png /usr/share/icons/hicolor/scalable/apps/antigravity.svg
if command -v update-desktop-database >/dev/null 2>&1; then
  sudo update-desktop-database /usr/share/applications >/dev/null 2>&1 || true
fi
if command -v gtk-update-icon-cache >/dev/null 2>&1; then
  sudo gtk-update-icon-cache -q /usr/share/icons/hicolor 2>/dev/null || true
fi
hash -r
test ! -e /usr/local/bin/antigravity && echo "Antigravity 2.0 command link is removed"

Remove Antigravity IDE

Delete the tarball-managed IDE, previous copy, command link, helper, desktop launcher, and icon file:

sudo rm -rf /opt/antigravity-ide /opt/antigravity-ide.previous
sudo rm -f /usr/local/bin/antigravity-ide \
  /usr/local/bin/update-antigravity-ide \
  /usr/share/applications/antigravity-ide.desktop \
  /usr/share/applications/antigravity-ide-x11.desktop \
  /usr/share/icons/hicolor/512x512/apps/antigravity-ide.png
if command -v update-desktop-database >/dev/null 2>&1; then
  sudo update-desktop-database /usr/share/applications >/dev/null 2>&1 || true
fi
if command -v gtk-update-icon-cache >/dev/null 2>&1; then
  sudo gtk-update-icon-cache -q /usr/share/icons/hicolor 2>/dev/null || true
fi
hash -r
test ! -e /usr/local/bin/antigravity-ide && echo "Antigravity IDE command link is removed"

Remove Antigravity CLI

Remove the user-local CLI binary and update helper:

rm -f "$HOME/.local/bin/agy" "$HOME/.local/bin/update-antigravity-cli"
hash -r
command -v agy || echo "agy command is removed"

Remove the legacy Antigravity IDE RPM

Uninstall the RPM package and remove the legacy repository file:

sudo dnf remove antigravity
sudo rm -f /etc/yum.repos.d/antigravity.repo
sudo dnf clean metadata

Confirm the RPM package and repo file are gone:

rpm -q antigravity || echo "antigravity RPM is removed"
test ! -e /etc/yum.repos.d/antigravity.repo && echo "antigravity repo file is removed"

Delete Antigravity user data

User-data cleanup permanently deletes Antigravity desktop settings, IDE settings, CLI state, cached files, and updater data from your home directory. Keep a backup first if you may need the profile later.

Review matching Antigravity paths before deleting anything:

find "$HOME/.config" "$HOME/.cache" "$HOME/.gemini" "$HOME/.antigravity-ide" -maxdepth 2 \( -iname '*Antigravity*' -o -iname '*antigravity*' \) -print 2>/dev/null

Remove the known desktop, IDE, and CLI profile paths when you are ready to discard them:

rm -rf "$HOME/.config/Antigravity" \
  "$HOME/.config/Antigravity IDE" \
  "$HOME/.antigravity-ide" \
  "$HOME/.cache/antigravity" \
  "$HOME/.cache/antigravity-updater" \
  "$HOME/.gemini/antigravity-cli"

Conclusion

Fedora now has a clear Antigravity split: use the tarball helpers for the current Antigravity 2.0 desktop app and Antigravity IDE, use agy for the terminal CLI, and keep the RPM repo only for the legacy 1.x IDE path. If you want to round out the workstation, install GitHub Desktop on Fedora for a GUI Git workflow or install Docker on Fedora for disposable test environments.

Share this guide

Help another Linux user troubleshoot faster

Share this guide with someone troubleshooting Linux systems or saving it for later.

Follow LinuxCapable

Want more LinuxCapable guides in Google?

Add LinuxCapable as a preferred source so Google can show more of our fresh Linux tutorials in Top Stories and From your sources when relevant.

Add LinuxCapable as a preferred source on Google
Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffeeBuy me a coffee

8 thoughts on “How to Install Google Antigravity on Fedora 44”

    • Hi Alex. If your /usr/local/bin/update-antigravity helper was created from the older article version, replace it first with the current desktop helper shown in the Fedora guide. The old helper can stop at 2.0.1. After recreating the helper, run:

      sudo update-antigravity

      If you already recreated the helper from the updated guide, that command is all you need. It should resolve the current desktop app as 2.0.6 from Google’s download page.

      Reply
    • That version check was coming from an older saved copy of /usr/local/bin/update-antigravity. The old helper was still checking Google’s previous updater endpoint, which now appears to stop at 2.0.1, so it incorrectly treated that as the latest version.

      I’ve updated the Fedora article to use Google’s current download page instead, and added a troubleshooting note for anyone who still has the stale helper installed. Recreate /usr/local/bin/update-antigravity with the updated helper from the guide, then run:

      sudo update-antigravity

      After that, it should detect the desktop app as 2.0.6 instead of incorrectly treating 2.0.1 as current.

      Reply
Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed in published comments:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<blockquote>quote</blockquote> quote block

Got a Question or Feedback?

We read and reply to every comment - let us know how we can help or improve this guide.

Let us know you are human: