Rocky is an open-source development bridge that connects your mobile device directly to your IDE (e.g., VS Code or Antigravity IDE) via WebSockets and the Chrome DevTools Protocol (CDP).
With Rocky, you can speak or type commands on your phone (using Gemini 2.5 Flash for high-fidelity speech-to-text transcription), trigger workspace macros, inject prompts directly into your AI agent's chat window, and receive real-time execution logs/notifications on your phone and Telegram.
Important
Core USP (Unique Selling Proposition): Real-time, zero-click mobile-to-IDE communication. Instead of running complex and heavy AI environments on your mobile device, Rocky operates as a low-latency bridge, allowing your phone to interact with the high-performance AI agent and file systems running locally on your workstation.
graph TD
A[Mobile App - Expo] -->|Socket.io| B[Rocky Backend - Node.js]
B -->|CDP discovery & commands| C[IDE Chat / Antigravity]
C -->|Code modification / Terminal execution| D[Workspace Files]
C -->|Response output| B
B -->|Logs & Alerts| E[Telegram Bot & Mobile Feed]
- Trigger: You speak or type a macro (e.g., "Create a new home page component") into the Rocky Mobile App.
- Transcription: The audio file is securely sent to the Rocky Backend, which transcribes it instantly using the Gemini 2.5 Flash API.
- Injections: The Backend discovers the local IDE's active debug port (usually ports 9000-9015) and uses the Chrome DevTools Protocol (CDP) to inject the message directly into the IDE agent's chat box and click send.
- Execution: The IDE agent (like Antigravity) completes the task (writing files, running tests).
- Logs & Telegram: A filesystem watch-dog (
tmp_antigravity_reply.txt) captures updates from the agent, and forwards execution logs back to the phone's feed and your Telegram bot in real-time.
- 🎙️ Voice Commands: Fast voice-to-code translations powered by Gemini 2.5 Flash.
- 🔌 CDP Bridge: Remote-controls the IDE’s chat/prompt interface without any extensions required.
- ⚡ Zero-Click Reverse Handoff: A lightweight file watch-dog relays the local agent's thoughts back to the developer's mobile device.
- 📲 Multi-Channel Feeds: Outputs go to both the Expo Mobile App and Telegram.
- 🧠 Hybrid Strategic Planning (Optional): Connects to LangGraph / CrewAI for multi-agent coordination when solving complex, multi-step tasks.
- backend/ - Node.js service exposing the HTTP API, Socket.io connection, CDP bridge, and agent planners.
- mobile-app/ - React Native Expo application for controlling Rocky from iOS and Android.
- docs/ - Documentation assets, checklists, and guides.
- Node.js (v18 or higher)
- NPM (v9 or higher)
- Expo Go app installed on your physical mobile device (iOS or Android)
- Antigravity IDE or any VS Code-based workbench running with debugging enabled
Rocky relies on Chrome DevTools Protocol (CDP) to communicate with your IDE window. You must launch your IDE with debugging active:
# Example for Antigravity IDE (default debug port 9015)
antigravity-ide.cmd --remote-debugging-port=9015 .Navigate to the backend/ directory:
cd backend
npm installConfigure your environment variables:
copy .env.example .envOpen .env and configure:
GEMINI_API_KEY: Required for speech-to-text.TELEGRAM_BOT_TOKEN&TELEGRAM_USER_ID: To receive mobile execution updates.NGROK_AUTHTOKEN(Optional): To run a persistent public tunnel.
Run the development server and tunnel:
# Start backend server (binds to port 3001)
npm run dev
# Start localtunnel/ngrok to expose the server to your mobile app
npm run tunnelNavigate to the mobile-app/ directory:
cd ../mobile-app
npm install
npx expo start- Scan the QR code using your phone's camera (iOS) or the Expo Go app (Android).
- Grab the public tunnel URL printed in the
npm run tunnelconsole window. - Open the Setup screen inside the Rocky Mobile App and enter this tunnel URL to link the phone to your IDE backend.
In some regions, ISPs throttle or block the default Telegram Bot API endpoint (api.telegram.org), resulting in connection timeouts or failure to receive logs.
To solve this, Rocky supports routing requests through a custom Telegram API Root. You can deploy a free, lightweight Cloudflare Worker to act as a reverse proxy:
- Log in to your Cloudflare Dashboard.
- Navigate to Workers & Pages -> Create Application -> Create Worker.
- Name it (e.g.,
telegram-proxy) and click Deploy.
Click Edit Code in the Cloudflare console and replace the entire script with:
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
// Proxy all incoming traffic to the official Telegram Bot API
url.hostname = 'api.telegram.org'
return fetch(url.toString(), {
method: request.method,
headers: request.headers,
body: request.body
})
}Deploy the script changes.
Copy your deployed worker URL (e.g., https://telegram-proxy.yourname.workers.dev) and add it to your backend/.env file:
TELEGRAM_API_ROOT=https://telegram-proxy.yourname.workers.devRestart your Rocky backend. The bot will now communicate securely through your custom Cloudflare tunnel.
For deep dives into issues like "Failed to inject into IDE. Reason: busy", port scanning conflicts, or websocket disconnects, please see our dedicated TROUBLESHOOTING.md guide.
This project is open-source and available under the MIT License.