A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
pebkac Chrome Nonautomation - A Local LLM-Driven Web Co-Browser using Smolagents, Zendriver, Trafilatura.
Update: I've written a more detailed guide on setting up the pebkac environment. Not required, but helpful. It's on Medium.
Update 2: This project is now on hold, and I am moving on to other, more exciting projects. Watch this space. Check out the release notes for more project info.
Update 3: https://www.youtube.com/watch?v=BVRAr1iQyQQ watch this one. I've been paying attention to Cory Doctorow since 2009.
Update 4: New thing: https://akickintheteeth.com/ SLOP FIGHTER
pebkac browses the web for you. It is a web nonautomation framework powered by SmolAgents and Zendriver. Synchronous communication becomes asynchronous communication in an elegant double helix of English language-powered Python interpretation driven by you, the user. There is no MCP, no n8n, no LangChain or LangGraph. pebkac employs the LLM's native ability to control a web browser by writing Python directly into it.
Together, they fit to give your localised, secure, rambunctiously stupid LLM a manual and a set of tools to operate a web browser.
Autonomous Intelligence
Stealth & Persistence
Smart Data Extraction
User Experience
Performance Features
The Game-Changer: LLMs Write Python, Not JSON
Unlike LangChain's rigid JSON tool-calling or MCP's predefined functions, pebkac's LLM writes actual Python code that executes browser actions. This means your AI will look at its own tools and write Python code to utilise them. This is impossible with LangChain/MCP's approach. They can only call predefined tools sequentially. pebkac's LLM can write loops, conditions, error handling, and complex logic.
This also means that pebkac is only as capable as the LLM that runs it, and the prompts you give it! It is fundamentally of no mind. It has no real understanding of what it is asked to do. All it has is Google Chrome dev tools, a couple libraries, and an API.
Frankly, no LLM has been made that is supposed to fully operate Google Chrome.
The browser runs with noVNC and loads about:blank on startup. You are warned. pebkac is not C-3P0. pebkac is a garden path. pebkac will click the wrong buttons. It will go off on tangents. It works independently through ten (adjustable) steps using its own logic and processes, providing entirely self-directed browsing. While pebkac is active you can check the highly detailed log output below the browser window to see what your LLM is up to.
Or just give it a job and go do something else. Eat an apple. Read a book.
You operate it simply by opening the pebkac Control Panel in your browser (localhost:8888) and typing into the chat window. The control panel displays the browser via noVNC and shows live logs from both the browser automation service and the LLM. pebkac will perform its duties and return nicely-formatted results in the chat window.
By reading the page, of course, same as you. State of the art extraction technologies are built in to Zendriver's existing framework, giving it an enormous capability boost. I used Trafilatura to achieve this.
Basically, pebkac's vision is augmented. Not only is it excellent at text/data extraction (check it out on github: https://github.com/adbar/trafilatura) it utilises its extraction (along with native Zendriver CSS detection) to figure out what to do! This makes things like handling Cloudflare and popups a lot easier.
YOU CAN ALSO interact with the Chrome browser pebkac uses. You can manually sign into websites and ask pebkac to perform actions on the page. Think of it like a co-browser. It can go off on its own, collect the day's news, find out about things, and (maybe) handle little jobs while you do other things, or you can drop in, hang ten over the keyboard, and surf collaboratively. Remember, pebkac and its browser are fully contained, so there's no way the LLM can access your host PC.
This whole project is both an entirely useful web co-browsing service and a stark artistic reminder of the realities of our modular, chronically online existences. We all exist in our little boxes with internet connections to view the outside world, and now more than ever our little boxes are subject to oversight and control by forces far more intelligent than us. I view this project as a black mirror (lol) to our modern life.
It's also never been done before.
It's also incredibly capable.
With a powerful enough LLM behind it, this setup is capable of:
Here's what it does:
Features Under Consideration:
This version of pebkac is designed to be mindful of context length and run on inexpensive GPUs. I built this whole project on a very budget MiniPC, and tested it with a specific finetuned model. For operating pebkac, I would HIGHLY recommend using David_AU's models, particularly the Brainstorm variants. Not only do they know to operate pebkac nearly 100% of the time, but they seem to have been trained on the SmolAgents library, making much of the 'thinking' already integrated.
Search for and download them here: https://hf.tst.eu/model
I did most testing using DavidAU/Qwen3-Jan-Nano-128k-6B-Brainstorm20x which was fast for my testing cases, but I would VERY MUCH RECOMMEND looking at the MoE models, like Qwen3-30b-whatever. His MoE models are excellent. Between thinking and non-thinking models, I like the results I get from non-thinking models.
It is reasonably important to find a model with an extremely long context length, like 64k or higher.
I would also highly recommend adjusting the extraction method to extract more text, and altering llama.cpp's GPU usage in the .env file. That will truly allow pebkac to work its magic.
For full disclosure, I am a writer, not a developer. I barely know print hello world. I began this project using Claude as a way to automate my own web research and social media activities. What came out of it was a much larger project that took many months to complete and taught me a lot about AI, programming, and computer science. It's not that I assumed it wouldn't be hard, but that I assumed it wouldn't be so complex. I can confidently say that I understand most of this project, but of course, I don't know what I don't know. Use pebkac at your own risk. It's as secure as a VIBE CODING AUTHOR knows how to make it.
What I have learned more than anything is that my very basic hardware cannot handle LLMs very well. I have made sure every part of this project is as lightweight and fast as possible. If you choose to support me by donating, that money would first and foremost go towards making this project harder, better, faster, and stronger. I'd also like to direct you to my Amazon page, because on God, writing books doesn't make money. My novel Well's Rest is on Amazon.
pebkac might even be able to buy it for you.
It will definitely be able to find me on Royal Road: https://www.royalroad.com/fiction/126900/wells-rest-grimdark-pirate-action-watch-book-trailer
I am of the opinion that pebkac demonstrates how mainstream approaches to LLMs are changing. Small, tailored models are the future for operating untold new and old technologies. I do not know if they should be writing words that mean things to humans. Check out my website at www.akickintheteeth.com. That is where I've been documenting my other experiments with AI. It's a brave new world!
For total beginners, start here.
.env and docker-compose.ymldocker-compose.yml:
group_add entries to your actual render group GID (find with getent group render).env file:
LLAMACPP_MODEL to your GGUF model filename (must exist in /podman/models/gguf/) unless setting yourself. This is the trickiest part that I can't help with.LLAMACPP_GPU_LAYERS based on your VRAMHF_TOKEN if downloading models from HuggingFaceYou can monitor logs externally via:
podman logs -f zendriver # Browser automation and agent execution
podman logs -f llama-cpp-server # LLM inference logs
Below is some stuff Claude put together. It's mostly accurate. Just more detail.
/tmp/pebkac_profiles/Tool suite for agents (18 tools in zendriver-docker/app/tools/):
NavigateBrowserTool - Navigate to URLsClickElementTool - Click elementsTypeTextTool - Type text into inputsKeyboardNavigationTool - Press keyboard keysGetCurrentURLTool - Get current page URLExtractContentTool - Extract page content with intelligent link extractionParallelExtractionTool - Extract from multiple selectors simultaneouslyCapturePageMarkdownTool - Export page as MarkdownWebSearchTool - Search DuckDuckGo with result filtering (LLM decides which tabs to open)VisitWebpageTool - Visit and extract page content in one callSearchHistoryTool - Access cached search resultsOpenBackgroundTabTool - Open URLs in background while keeping main tab activeListTabsTool - List all tabs with indices and statusCloseTabTool - Close background tabs (tab 0 protected)CaptureAPIResponseTool - Capture JSON API responses during navigate/click (structured data extraction)ScreenshotTool - Capture screenshotsCloudflareBypassTool - Handle anti-bot challenges automaticallyGetElementPositionTool - Get element coordinates for verificationTwo-tier cache system providing 500-2000x speedup on cached content:
L1 Cache (Redis): Ultra-fast in-memory caching (10ms lookups)
L2 Cache (DuckDB SQL Database): Persistent disk-based analytical database
cached_pages, cached_elements, cache_metricsconn.commit() for data persistence/mnt/ssd/podman/duckdb-data/cache.dbTiered Lookup Flow:
Smart Caching Strategies:
Robust extraction system:
Workflows:
Human-like interactions:
Big thanks to everyone at HuggingFace https://github.com/huggingface/smolagents / https://huggingface.co
cdpdriver for Zendriver: https://github.com/cdpdriver/zendriver / https://zendriver.dev/
adbar for Trafilatura: https://github.com/adbar/trafilatura / https://trafilatura.readthedocs.io/en/latest/
This project is licensed with GNU Public V3
Support me at: https://ko-fi.com/dredgesta www.akickintheteeth.com
BTC: bc1qdl5q2qwupxnqgr6u8r3nvppvzr8k889f4k3j7n
干净、强大、属于你的 AI Agent 平台 --AI agents, without the clutter.
An AI-powered custom node for ComfyUI designed to enhance workflow automation and provide intelligent assistance
npx CLI installing 100+ agents, commands, hooks, and integrations in one command
Native macOS app to monitor Claude AI usage limits and watch your coding sessions live