Puppeteer and Playwright work fine for browser testing. For AI agents, not so much. Slow, bloated, and they shove the entire DOM at your LLM.
Built something smaller. Aslan Browser is a native macOS app (WKWebView, the Safari engine) with a Python CLI/SDK over a Unix socket. Instead of raw HTML, it gives your agent an accessibility tree, tagged with refs. @e0 textbox "Username", @e1 button "Sign in". 10-100x fewer tokens.
~0.5ms JS eval, ~15ms screenshots, zero Python dependencies. About 2,600 lines of code.
It comes with a skill for coding agents that teaches the agent to drive the browser and builds up site-specific knowledge between sessions. It loads context progressively so your agent isn't stuffing its entire memory with browser docs on every call. My agent used to fumble LinkedIn's contenteditable fields every time. Now it doesn't. I didn't fix anything — the skill learned.
onurui•1h ago
Built something smaller. Aslan Browser is a native macOS app (WKWebView, the Safari engine) with a Python CLI/SDK over a Unix socket. Instead of raw HTML, it gives your agent an accessibility tree, tagged with refs. @e0 textbox "Username", @e1 button "Sign in". 10-100x fewer tokens.
~0.5ms JS eval, ~15ms screenshots, zero Python dependencies. About 2,600 lines of code.
It comes with a skill for coding agents that teaches the agent to drive the browser and builds up site-specific knowledge between sessions. It loads context progressively so your agent isn't stuffing its entire memory with browser docs on every call. My agent used to fumble LinkedIn's contenteditable fields every time. Now it doesn't. I didn't fix anything — the skill learned.
macOS 14+ only. MIT. Would love feedback.
https://github.com/onorbumbum/aslan-browser https://onorbumbum.github.io/aslan-browser/