I have been using the Antigravity CLI for a while to handle a few ad-hoc tasks on my laptop. Eventually, I realized I could build a true personal AI assistant using the same harness running in the cloud. By hosting it remotely, it could be invoked from anywhere to help with my day-to-day tasks. Furthermore, with the recent availability of the Robinhood MCP server, I could leverage it to place trades on my behalf.
I started by spinning up a VM instance in Google Cloud Platform (GCP) and installing the Antigravity CLI. Then, I integrated the Robinhood MCP server with my Antigravity instance. With that, I had the barebones infrastructure ready to build an assistant powered by Gemini.
While I could invoke this agent via SSH, I wanted to use WhatsApp
as my primary communication channel to interact with the agent and
receive proactive reminders. To achieve this, I used
agy to build a WhatsApp Web Gateway that leverages
headless Chromium. I assigned this service its own dedicated phone
number to communicate with the AI agent.
At a high level, the WhatsApp agent acts as a proxy to the
Antigravity CLI. It uses a SQLite-based queue and a simple file
system-based lock mechanism to manage and execute incoming tasks
sequentially. The gateway also exposes a REST interface that the
Antigravity CLI can use to send outbound notifications. This
entire gateway runs as a persistent systemd user
service, ensuring it starts automatically on boot and recovers
from crashes.
To keep it secure, the gateway only processes messages from my Whatsapp account and discards all others. The gateway can read text, download images, and interpret my reactions (emojis). It is also fully capable of sending text and images back to me.
I created a trading plugin for Antigravity and defined explicit rules for executing automated trades. The agent uses the Robinhood MCP server to place trades. For now I have to distinct trading sub-agents:
I used Antigravity to build a python script that runs twice a day
via cron. The script queries the "Robinhood Top
100 Popular Stocks" watchlist, filters for stocks that match
my technical criteria, gets analysis and inputs from a virtual
"investor committee" (comprising simulated personas of
Warren Buffett, Benjamin Graham, Cathie Wood, Michael Burry,
etc.), and finally executes trades based on the aggregated advice.
These trading rules are defined in Markdown format, and I can instruct the agent to modify them dynamically via WhatsApp. Key rules include:
AGENTS.md and enforces them:
GOOG,
GOOGL, and ORCL are entirely
barred from trading.
This agent monitors my existing portfolio and a watchlist of long-term hold stocks. It actively looks for opportunities to write covered calls and generate income. I have defined specific rules regarding option strike prices and contract durations to filter out noise, ensuring it only notifies me when a trade is worth manual execution.
Since the Robinhood MCP server doesn't support placing options trades directly, this is a notification-only agent for now.
While I could create a cron job for every task and reminders, I thought a simple service with scheduling capabilities and with enhancements to explictly specify the communication channel would be useful. So, I built a persistent scheduler using a SQLite database to store and manage recurring tasks and an ability to specify the output medium (WhatsApp, Email etc.).
All reminders and tasks are defined in a SQLite table with
corresponding cron expressions. The Antigravity CLI
has tools to query and manage this table, allowing me to modify
schedules directly via WhatsApp.
A system cron job runs every minute to invoke a
Python coordinator script. This script checks the SQLite database
for pending tasks and, for each one, spins up the Antigravity CLI.
Depending on the task type, the Antigravity agent determines which
tools to use to fulfill the request. For example, when generating
my daily news briefing, the agent performs a Google Search,
retrieves the articles, summarizes the content, and formats/sends
the final notification via WhatsApp.
While WhatsApp is great for quick updates, some reports are better suited for a long-form format. For these, I integrated the Mailjet MCP server to send outbound emails.
Currently, this integration is outbound-only. However, in the future, I plan to give the agent its own inbox so I can forward emails to it. For instance, forwarding an invoice email to the agent would allow it to parse and track the bill automatically.
I seeded the agent with basic profile details (my name, location, and occupation). However, to make the assistant feel truly personalized, it needs to learn my preferences, family details, and communication style over time.
To achieve this, I set up a scheduled job that runs hourly to
analyze recent conversation transcripts. It extracts new personal
facts, deduplicates them, and updates a
user_facts.json file. This file is injected into the
Antigravity CLI context during system initialization, keeping the
interaction history lean while maintaining long-term memory.
Every morning at 7:00 AM, I get a WhatsApp notification summarizing the top stories of the day.
The Automated Trading agent is invoked twice a day. It analyzes stocks that fit my criteria, executes trades, and notifies me of the actions taken.
I have started the trading agent with $3000 capital and it has made $326 in the last three weeks. I did change the trading strategies a few times, started with AI stocks, enabled YOLO mode and then settled on swing trading approach on large cap stocks.
A portfolio report is sent via WhatsApp at 1:05 PM, summarizing the day's performance. Later, a detailed long-term performance report is delivered to my email.
A market roundup is emailed to me every weekday at 4:00 PM.
I instructed the agent to send workout reminders at 4:30 PM, targeting three gym sessions a week with a rule that no two workouts can occur on consecutive days. The agent parses my replies or emoji reactions to log the workout and reschedule the remaining reminders for the week.
Gym day:
Rest day:
When I did the workout ahead of the reminder:
Every Saturday at 4:00 PM, the agent scans for any bills due within the next 10 days and sends a reminder.
Having used this assistant for the past few weeks, the experience
has been amazing and definitely a lot of fun building and
enhancing it. The ability to converse with and modify agents
directly via WhatsApp is game-changing. Leveraging standard tools
like cron, SQLite, and custom Python/Bash scripts
alongside the MCP has proven to be an incredibly powerful way to
build tailored AI agents.
While this project was designed specifically for my personal use, I expect to enhance the agent's capabilities with more workflows as I continue to experiment with this agent.