agy-pilot (Antigravity Pilot)
Antigravity Pilot (agy-pilot) is an unofficial, self-hosted headless companion daemon and remote controller bridge for local instances of Antigravity 2. It enables developers to securely interact with their local coding assistant, monitor multi-step execution traces, and make interactive human-in-the-loop decisions via instant messaging platforms.
+-------------------------------------------------------------------------+
| Chat Client |
| (Telegram, Discord, Slack, etc.) |
+-------------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------------+
| agy-pilot |
| |
| +--------------------+ +-------------------+ +------------------+ |
| | Pluggable Adapters |-->| Remote Controller |-->| Language Server | |
| | (Telegram, etc.) | | & Session Store | | AgentAPI IPC | |
| +--------------------+ +-------------------+ +------------------+ |
| | |
| v |
| +------------------+ |
| | Antigravity Hub | |
| | (Process Daemon) | |
| +------------------+ |
+-------------------------------------------------------------------------+
Key Features
- Pluggable IM Adapter Architecture:
The core Antigravity remote engine is strictly separated from message delivery protocols via
BaseIMAdapter. Telegram is provided out-of-the-box, with clean interfaces to plug in Discord, Slack, Feishu/Lark, or custom webhook bridges. - Live Progress Board & Trace Inspector: Renders live progress updates directly in chat (thinking phases, MCP tool calls, file edits, bash commands) with debounced updates to prevent platform rate limits. Finished responses include an expandable trace button for complete auditability.
- Interactive Human-in-the-Loop Support (
ask_question): When Antigravity requests user feedback or decision branching viaask_question, the controller presents interactive inline buttons directly in the chat, allowing instantaneous resolution from mobile devices. - Dynamic Skill Discovery & Slash Commands:
Automatically discovers built-in, global (
~/.gemini/config/skills/), and workspace-specific skills. Dynamically syncs available skills to the chat command menu for one-tap execution (e.g.,/research <prompt>). - Native Voice Note Ingestion: Accepts voice messages, streams audio to a local cache, and passes absolute audio paths into Antigravity for multimodal tools.
- Background Daemonization via
launchd: Simple CLI flags to install, auto-load, monitor, or restart background daemons on macOS (com.ii2d.agy-pilot).
Quickstart
Prerequisites
- macOS (Darwin)
- uv package manager
- Google Antigravity 2 installed and running
1. Installation
Option A: User Installation (Recommended)
Install agy-pilot as a standalone global tool using uv:
# Install directly from git repository
uv tool install git+https://github.com/donileong/agy-pilot.git
# Or install from PyPI (when published)
uv tool install agy-pilot
Option B: From Source (For Contributors)
Clone the repository and synchronize the environment:
git clone https://github.com/donileong/agy-pilot.git
cd agy-pilot
uv sync
2. Configuration & Telegram Setup
Before running agy-pilot, you need a Telegram Bot and your Telegram User ID(s) to whitelist authorized access.
Step A: Create a Telegram Bot
- Open Telegram and search for @BotFather.
- Send
/newbot. - Enter a display name for your bot (e.g.
My Antigravity Pilot). - Enter a bot username ending with
bot(e.g.my_agy_pilot_bot). - Copy the generated HTTP API token (e.g.,
123456789:ABCdef-ghijklm...).
Step B: Find Your Telegram User ID
For strict security, only user IDs explicitly in the whitelist can interact with your machine.
- In Telegram, search for @userinfobot (or
@raw_data_bot). - Press Start or send any text. It will immediately reply with your numeric
Id(e.g.123456789). - (Optional) If you want to grant access to multiple colleagues or team members, have them find their numeric IDs as well.
Step C: Run the Interactive Setup Wizard
The easiest way to configure agy-pilot is to run the interactive setup wizard:
# Run the interactive configuration wizard
agy-pilot init
# Or if running from source:
make init
The wizard will:
- Guide you through entering the Bot Token.
- Prompt for Allowed User ID(s) (supports single ID or comma-separated list for multiple users, e.g.,
12345678, 87654321). - Securely save settings to
~/.config/agy-pilot/config.envwith restricted file permissions (0600). - Offer to immediately configure and start the background auto-start daemon (
launchd).
(Manual setup alternative: You can also place a .env file in your repository or export TELEGRAM_BOT_TOKEN and TELEGRAM_ALLOWED_USER_IDS.)
3. Background Daemon Management (agy-pilot service)
agy-pilot provides a structured, cross-platform service manager that natively targets macOS launchd (com.ii2d.agy-pilot) and Linux systemd --user (agy-pilot.service):
# Install and enable the background daemon (starts immediately and on boot)
agy-pilot service install
# Check service status (PID, health, and status)
agy-pilot service status
# Follow real-time daemon logs
agy-pilot service logs -f
# Restart the background service
agy-pilot service restart
# Stop or uninstall the service
agy-pilot service stop
agy-pilot service uninstall
(If running from source, Makefile shortcuts are also available: make install-service, make status, make logs, make restart.)
4. Updating
Keep agy-pilot up to date easily:
# Automatic self-update (handles uv tool or git repository) and hot-restarts daemon
agy-pilot update
# Or if working from source:
make update
5. Cleanup & Uninstallation
If you wish to remove runtime logs, background services, or wipe all cached sessions:
# Clean background service and log files:
agy-pilot clean
# Clean everything including database sessions, downloads, and config directory:
agy-pilot clean --all
# Or if working from source:
make clean # removes service & logs
make clean-all # removes service, logs, data directory, and config
6. Storage Locations
agy-pilot adheres strictly to standard platform directory specifications:
- Configuration:
~/.config/agy-pilot/config.env - Data & SQLite Storage:
- macOS:
~/Library/Application Support/agy-pilot/agy_session.db - Linux:
~/.local/share/agy-pilot/agy_session.db
- macOS:
- Logs:
- macOS:
~/Library/Logs/agy-pilot/ - Linux: systemd journal (
journalctl --user-unit agy-pilot.service)
- macOS:
Telegram Bot Commands
| Command | Description |
|---|---|
/skills |
Browse available Antigravity skills with interactive pagination |
/projects |
Interactively select workspace projects and browse/switch historical conversations |
/new or /reset |
Reset current session context and begin a fresh conversation |
/status |
View active project binding, conversation ID, and environment metadata |
/help |
Show command overview and usage instructions |
/<skill_name> |
Directly trigger a skill with arguments (e.g. /research optimize database queries) |
Pluggable Adapter Development
To implement a new instant messaging adapter (e.g. Discord or Slack):
- Inherit from
BaseIMAdapterinsrc/agy_pilot/adapters/base.py:from agy_pilot.adapters.base import BaseIMAdapter class DiscordAdapter(BaseIMAdapter): async def start(self) -> None: # Initialize client and start event loop ... async def stop(self) -> None: # Clean up sessions and shut down ...
- Register the adapter in
src/agy_pilot/adapters/registry.py:from agy_pilot.adapters.registry import register_adapter register_adapter("discord", DiscordAdapter)
- Run with
--adapter discordor setAGY_ADAPTER=discord.
Development & Testing
Run unit tests:
make test
Run test suite with code coverage:
make test-cov
Format and sync dependencies:
make sync
Contributing & Community
Contributions are warmly welcomed! Please read our Contributing Guide to get started.
License & Disclaimer
This project is licensed under the MIT License.
This software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement. Authors and maintainers are not liable for any claims, damages, or unintended host actions resulting from the use of this software.
Metadata
Release files for agy-pilot 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| agy_pilot-0.1.0.tar.gz | 138.8 kB | With provenance | Details for agy_pilot-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| agy_pilot-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for agy_pilot-0.1.0-py3-none-any.whl |
Total release size: 185.7 kB
Release files / agy_pilot-0.1.0.tar.gz
| Download URL | agy_pilot-0.1.0.tar.gz |
|---|---|
| Size | 138.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
56e1bebb3c7da4d4cdd0dc35a609786fc3a465cbd26439d7e01f3b88997c7934
|
|
BLAKE2b-256 checksum How to use checksums |
2640f575e0fc45bc9e76851a71aea5ad72ce0c12e175c7590ed3fd8839270aa2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.
Transparency logRelease files / agy_pilot-0.1.0-py3-none-any.whl
| Download URL | agy_pilot-0.1.0-py3-none-any.whl |
|---|---|
| Size | 46.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
77d2a7f909388b8a09dfe3109c2787bbd613e3a9076df1092014e11570be1ac1
|
|
BLAKE2b-256 checksum How to use checksums |
29d9030f2af1d2af7cd659f4f630fa1f94dc2d69f80291c2191b5fd35904735a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.
Transparency logSecurity for agy-pilot 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for agy_pilot-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 27, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.