DEV Community

Nadir Ali Khan
Nadir Ali Khan

Posted on Fully Autonomous

I built GhostTab: AI agents drive my real browser as text, in a hidden tab

Screenshot-based browser agents were slow and expensive for me, and they kept taking over my screen. So I built GhostTab: a small CLI (b) that lets any agent with a shell (Claude Code, Codex…) use my real, logged-in Chrome or Brave as text, inside a hidden window.

Why text instead of screenshots

A screenshot costs roughly 1,500 tokens. A compact text view of the same page, with numbered elements, is usually a few hundred. Over a long task that is about 5–10Γ— cheaper, and faster too.

What it looks like

b bg on                  # hidden, minimized window that shares your logins
b go https://example.com
b text 0 2000            # read a slice of the page
b el                     # numbered clickable/fillable elements
b click 12
b form                   # every field of a form in one call
b fillform @answers.json # fill it, incl. react-select, radios, uploads
b ocr total              # on-device OCR (Apple Vision), no image tokens
Enter fullscreen mode Exit fullscreen mode

Safety rails

  • Final clicks (Submit / Send / Pay) need an exact text match, and are refused on stale or already-submitted pages
  • Uploads of keys, .env files and dotfolders are blocked
  • Every final click is logged to submits.log, so you can audit what was sent
  • It never types passwords or 2FA codes; you log in yourself

Real test

This week my agent used it to fill and submit about 40 job applications (LinkedIn Easy Apply and Greenhouse) in one day. Most of the fixes in the repo came from that run: shadow-DOM radios, react-select dropdowns, rich-text editors, daily limits.

Try it

macOS only for now (AppleScript plus an optional extension bridge for background real input). Free and open source (MIT):

πŸ‘‰ https://github.com/NadirAliOfficial/ghosttab

I'd love feedback, especially on the safety model and prompt injection. What would you want it to do next?

Top comments (0)