npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

omni-antigravity-remote-chat

v0.5.3

Published

Premium mobile remote control for Antigravity AI sessions via CDP mirroring — multi-window, chat history, real-time sync

Downloads

904

Readme

📱 OmniAntigravity Remote Chat

Your AI coding session shouldn't end when you leave your desk.

Version Node CI License

npm npm downloads Docker

Mirror your Antigravity (Windsurf) AI chat on your phone in real-time. Send messages. Switch models. Manage windows. All from your mobile browser.

Get Started · Screenshots · How It Works · Docker · npm

😤 The Problem

You're deep into an AI-assisted coding session. Claude is generating code, Gemini is reviewing your architecture. Then your phone rings, someone needs you in the kitchen, or you just want to move to the couch.

Your options today:

  • ❌ Walk back to the desk every time the AI responds
  • ❌ Try to read your monitor from across the room
  • ❌ Copy-paste into a separate mobile app (losing context)
  • ❌ Just... stop coding

There has to be a better way.

✅ The Solution

OmniAntigravity mirrors your entire Antigravity AI chat to your phone — in real-time, with full interaction. Read responses, send follow-up messages, switch AI models, even manage multiple editor windows. All from your mobile browser.

npx omni-antigravity-remote-chat

That's it. Open the URL on your phone. You're in. 🚀


📸 See It in Action

| Main Interface | Model Selection | Ready to Chat | | :--------------------------------------------------: | :----------------------------------------------------: | :---------------------------------------------------: | | | | | | Premium dark UI with live sync | Switch between Gemini, Claude, GPT | Send messages from your phone |


⚡ Get Started

One command — zero config:

npx omni-antigravity-remote-chat

Or install globally:

npm install -g omni-antigravity-remote-chat
omni-chat

Or run with Docker:

docker run -d --name omni-chat \
  --network host \
  -e APP_PASSWORD=your_password \
  diegosouzapw/omni-antigravity-remote-chat:latest

Prerequisite

Launch Antigravity in debug mode (one-time setup):

antigravity . --remote-debugging-port=7800

💡 Pro tip: Add alias agd='antigravity . --remote-debugging-port=7800' to your ~/.bashrc


🏆 Why Developers Choose This

| | Feature | Details | | --- | ---------------------- | ------------------------------------------------------------------------ | | 🛋️ | Code from anywhere | Read and reply to AI chats from your couch, bed, or kitchen | | 🪟 | Multi-window | Switch between multiple Antigravity instances from one phone | | 🔄 | Real-time sync | < 100ms latency via WebSocket — chat updates appear instantly | | 🤖 | Model switching | Toggle between Gemini, Claude, GPT from a mobile dropdown | | 📋 | Chat history | Browse and resume past conversations on mobile | | 🔒 | Secure by default | HTTPS, password auth, cookie sessions, LAN auto-auth | | 🌐 | Remote access | ngrok support with QR code — access from anywhere | | 🐳 | Docker ready | One-liner container deployment | | ♻️ | Modular codebase | Clean architecture with JSDoc typing (config, state, utils, cdp) |


📱 How It Works

┌─────────────┐    CDP (7800)    ┌──────────────┐    HTTPS/WS (4747)    ┌─────────────┐
│ Antigravity  │ ◄──────────────► │  Node Server  │ ◄──────────────────► │   Phone      │
│  (Desktop)   │    DOM snapshot   │  (server.js)  │    mirror + control  │  (Browser)   │
└─────────────┘                  └──────────────┘                      └─────────────┘

The server connects to Antigravity via the Chrome DevTools Protocol (CDP), captures the chat DOM in real-time, and streams it to your phone over WebSocket. Actions on your phone (sending messages, switching models) are executed back on the desktop via CDP.

Zero impact on your desktop — the mirroring is read-only until you interact. No plugins, no extensions, no Antigravity modifications needed.


🪟 Multi-Window Management

Manage multiple Antigravity instances from a single phone:

  • Window Selector — Tap 🖥️ to see all open Antigravity windows
  • Instant Switching — Select any window, mirrors within 2 seconds
  • Smart Filtering — Only shows real editor windows (hides Settings, Launchpad)
  • Launch Windows — Spawn new Antigravity instances directly from your phone

🚀 Launch Modes

| Feature | Git Clone | NPM Global | Docker | | ------------ | --------------------- | ----------------------------------- | ---------------- | | Basic server | npm start | omni-chat | docker run ... | | QR code | npm run start:local | omni-chat (shows URL) | — | | ngrok tunnel | npm run start:web | omni-chat + npx ngrok http 4747 | — | | SSL setup | npm run setup:ssl | Manual with mkcert | Not needed |

Git Clone (full control)

npm start              # Start server directly
npm run start:local    # Start with QR code for Wi-Fi access
npm run start:web      # Start with ngrok tunnel for internet access
npm run setup:ssl      # Generate trusted HTTPS certificates

ngrok (Remote Access)

# Terminal 1
omni-chat

# Terminal 2
npx ngrok http 4747

Full ngrok integration (automatic tunnel + QR code) is available via npm run start:web with NGROK_AUTHTOKEN in .env.

SSL Setup

npm run setup:ssl

Auto-installs mkcert, creates a local CA, and generates trusted certificates → green padlock 🔒


🔑 Configuration

cp .env.example .env

| Variable | Default | Description | | ----------------- | ------------------ | ------------------------------- | | APP_PASSWORD | antigravity | Authentication password | | PORT | 4747 | Server port | | COOKIE_SECRET | (auto-generated) | Secret for cookie signing | | AUTH_SALT | (auto-generated) | Additional salt for auth tokens | | NGROK_AUTHTOKEN | (optional) | For remote access via ngrok |


🛠️ Troubleshooting

| Issue | Solution | | ------------------- | ------------------------------------------------------------ | | "CDP not found" | Launch Antigravity with --remote-debugging-port=7800 | | "EADDRINUSE" | Change PORT in .env, or stop the process using that port | | Phone can't connect | Ensure same Wi-Fi network and check firewall | | "Syncing..." stuck | Wait 2-3s for CDP contexts to populate after window switch |


📁 Project Structure

├── src/
│   ├── server.js              # Main server (Express + WS + CDP actions)
│   ├── config.js              # Constants, env vars, container IDs
│   ├── state.js               # Shared state + JSDoc type definitions
│   ├── cdp/
│   │   └── connection.js      # CDP discovery & connection
│   └── utils/
│       ├── network.js         # getLocalIP, isLocalRequest, getJson
│       ├── process.js         # killPortProcess, launchAntigravity
│       └── hash.js            # Hash utility
├── public/                    # Mobile chat interface
├── launcher.js                # QR code + ngrok launcher
├── scripts/                   # SSL, context menu installers
├── test/                      # Validation test suite
├── Dockerfile                 # Docker support
└── .github/workflows/         # CI + auto-release + Docker Hub

📊 Star History


🤝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

See CONTRIBUTING.md for detailed guidelines.


🙏 Acknowledgments

Special thanks to Krishna Kanth B — the original creator of the Windsurf mobile chat concept that inspired this project. OmniAntigravity builds upon that foundation with multi-window management, robust CDP handling, NPM/Docker packaging, and a premium mobile-first UI.


📄 License

GPL-3.0 — see LICENSE for details.