Pilo – open-source agentic web automation engine by Mozilla
Hello HN, We are the team behind Tabstack (https://tabstack.ai) - part of Mozilla. We just open sourced Pilo (pronounce PIE-low), the core engine that powers our automation platform. You can check it out on Github at https://github.com/mozilla/pilo. Pilo is an agentic web automation library. Instead of writing rigid scripts with CSS selectors, you give it a natural language goal (e.g., "Find the best pizza in Seattle and extract the ratings") and it autonomously navigates the browser to achieve it. We built this because we were struggling to make reliable agents…
In plain words
Pilo is an open-source web automation library by Mozilla that uses natural language goals instead of traditional scripts to navigate browsers autonomously. Users describe what they want accomplished—like finding restaurant ratings or extracting specific data—and Pilo handles the browser interaction without requiring CSS selectors or HTML parsing. It prioritizes reliability by using accessibility trees rather than raw HTML, addressing common brittleness issues in automation tools while avoiding the context window bloat of feeding entire pages to language models.
written from the facts on this page · September 2026
From the sources
In the maker’s words, at launch
Hello HN, We are the team behind Tabstack (https://tabstack.ai) - part of Mozilla. We just open sourced Pilo (pronounce PIE-low), the core engine that powers our automation platform. You can check it out on Github at https://github.com/mozilla/pilo. Pilo is an agentic web automation library. Instead of writing rigid scripts with CSS selectors, you give it a natural language goal (e.g., "Find the best pizza in Seattle and extract the ratings") and it autonomously navigates the browser to achieve it. We built this because we were struggling to make reliable agents for our own /automate endpoint. Existing tools were either too brittle (breaking on minor DOM changes) or too heavy (feeding raw HTML to LLMs, blowing up context windows). Here is how Pilo solves those problems: - Accessibility Tree over HTML: Instead of parsing raw HTML "soup," Pilo captures the browser's accessibility tree (via Playwright's _snapshotForAI). This gives the LLM a semantic, stable view of the page (buttons, links, inputs) rather than div hell. - Context Compression: We pipe that tree through a compression engine. We map verbose tags (like listitem -> li), shorten reference IDs, and deduplicate repetitive text. This reduces token usage by 60-80% without losing interactive elements, allowing for much longer agent loops. - Layered Error Handling: The web is flaky. Pilo treats navigation failures as distinct from interaction failures. It uses timeout escalation for network issues (doubling wait times) and will automatically restart the browser instance if it detects a "stuck" state or DNS failure. - Agentic Loop: It follows a strict Plan -> Observe -> Act -> Validate loop. It even includes a separate validation step where a second LLM "grades" the final output against the original success criteria before returning it. The "Cool" Part (Browser Extension) Since the core logic is decoupled from the runtime, we packaged it into a browser extension. You can install it, type a prompt, and literally watch the agent drive your local browser tab in real-time. It’s a great way to debug how the LLM "sees" the page. Why Open Source? We sell the managed infrastructure (scaling browsers, persistent sessions, etc.) at Tabstack. But the execution engine itself, the thing that decides "click here" or "scroll there", should be open. You can run Pilo entirely on your own machine with your own API keys without paying us a dime. You can read more about it on our blog https://tabstack.ai/blog/introducing-pilo-browser-automation. Or check out the repo, install it, and give it a try - https://github.com/mozilla/pilo We’d love to hear your feedback on the compression pipeline or how you’re handling agent state in your own projects. Happy to answer any questions!
More ai this month
the category →
I trained a 125M-parameter transformer to autocomplete piano performances in real time (~108 notes/sec on an iPhone 15). The idea is basically GitHub Copilot or Tabnine, except instead of prompting it with code, you prompt it by playing a few notes on a MIDI piano. The model then continues what you played, entirely on-device. The app is free if anyone wants to try it. Happy to answer questions about the model, training, Core ML, or the many things that didn't work.
AI · 17d ago · simedw.com
Astute▲585Automate your B2B brand going viral, with new media creators
AI · 18d ago · company-app.joinastute.com


Hey HN, Henry from Cactus here! We previously released Cactus Needle, a 14MB agentic LLM for tool call, device use, and structured extraction for phones, wearables, smart homes, small robots and microcontrollers. We got really great feedback here, and have now incorporated the suggestions to release Needle 2. The whole model is a single 14MB binary that runs a full session in 28MB of RAM; 45m parameters at 2bit compression. Needle hits 500 tokens/sec decode speed on a Raspberry Pi 5, sits between 400-1,500 tokens/sec on VR devices like Meta Quest 3S and Apple Vision Pro, and ranges…
AI · 26d ago · cactuscompute.com

