nowfound

AI · August 15, 2026

I spent 3 months making desktop automation stop lying to AI agents

That's a bold claim. But I genuinely feel like I might have actually solved computer use (demo: https://x.com/mdlahfir/status/2088109763783700827?s=20) For context, I've been building agent-desktop (Inspired by agent-browser by Vercel Labs), an automation CLI for desktop apps. It's like Playwright but for desktops, not just native, but for Chromium apps as well. Trust me, yes, Chromium apps whose accessibility tree is dense. MacOS is GA; I'm almost close to launching for Windows and Linux! So, how did I solve it? Basically interoperability. The biggest issue with…

What it does

Native desktop automation CLI for AI agents. Control any application through OS accessibility trees with structured JSON output and deterministic element refs. - lahfir/agent-desktop

In the maker’s words, at launch

That's a bold claim. But I genuinely feel like I might have actually solved computer use (demo: https://x.com/mdlahfir/status/2088109763783700827?s=20) For context, I've been building agent-desktop (Inspired by agent-browser by Vercel Labs), an automation CLI for desktop apps. It's like Playwright but for desktops, not just native, but for Chromium apps as well. Trust me, yes, Chromium apps whose accessibility tree is dense. MacOS is GA; I'm almost close to launching for Windows and Linux! So, how did I solve it? Basically interoperability. The biggest issue with computer use is that we have reliable frameworks for browser use, like Playwright, agent-browser, and many more, but not the same with desktops. We have really good solutions emerging, like tryCua, which I'm a big fan of. My vision with agent-desktop is to build the most reliable framework that agents can use for long-horizon tasks. agent-desktop is lightweight, built on Rust, fast, and not token-hungry (It can go for hours without exceeding the context window) Here's the approach I used to make it possible: a) skeleton snapshots - when you want to snapshot a window/app, it only snapshots the parent containers and gives back a ref id, not the entire accessibility tree. b) skeleton drilling - once the agent has that tree, it can then decide to drill into a specific region. All the subcommands like --find, --click, --wait... all work on that specific ref aware region. Meaning if you want to find an element in the entire app, it doesn't take forever searching for the entire app for that element; rather, the agent will have an exact clue on where that element might be for a fraction of the token costs. c) chained interaction fallback - a single click isn't one API call but it's an ordered chain of mechanisms (AXPress -> AXOpen -> activate through the inner cell -> write selection -> AXConfirm). Each step only runs if the element advertises it, and success is judged by watching the app's state change, not by the return code, because apps lie in both directions: Finder returns an error for an action that worked and success for one that did nothing. First observed effect wins. The response reports every step tried, so the agent knows exactly which mechanism landed. d) after-action feedback - every action reports its disposition (delivered and verified, delivered but unverified, not delivered) plus any surface that opened (dialog, menu, sheet), so the agent knows what happened without re-scanning the whole app. e) strict ref re-identification - a ref isn't a pointer; it's identity evidence (role, path, stable text, bounds hash). Before every action, it's re-resolved against the live UI. If the UI changed, you get STALE_REF; if two elements now match, you get AMBIGUOUS_TARGET. It never guesses. The most important part about all this is Chromium app accessibility. How did I do it? The magic word is CDP! Most desktop apps today are Chromium-based (Slack, VS Code, Obsidian, Discord...). One command launches the app with a CDP endpoint that agent-desktop verifies is actually answering before returning it. From there, any browser automation framework can connect and drive the web contents: Playwright, Puppeteer, agent-browser, whatever you already use. Reading Obsidian's web content over CDP takes 201ms vs 2.3s through the accessibility tree. $ agent-desktop launch "Obsidian" --cdp { "ok": true, "data": { "renderer": "chromium", "cdp": { "port": 57500, "http_endpoint": "http://127.0.0.1:57500", "websocket_url": "ws://127.0.0.1:57500/devtools/browser/..." }, "suggestion": "Next: run `agent-browser connect 57500` ..." } } This is what makes agent-desktop interoperable with the entire browser automation ecosystem instead of competing with it. Go try agent-desktop -> https://github.com/lahfir/agent-desktop

Does the same job

all alternatives →
  • AgentOne DesktopAug 2026 · agent-one.dev · ▲78

    Automate boring work. Extensible and free desktop AI agent.

  • agentbrowseJun 2026 · npmjs.com · ▲89

    Give your AI coding agent the web as a command line

  • Compuser.ai2025 · ▲174

    AI Computer use agent in your browser

  • UFO²2025 · ▲85

    The Desktop AgentOS for Windows Automation

  • AgentCraft. Like Cursor, but for n8n2025 · ▲111

    Get 10x speed for building automations. AI copilot is here

  • Agent Browser ShieldJun 2026 · ▲109

    Block prompt inject & cut token costs for AI browser agents

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

  • Astute585

    Automate your B2B brand going viral, with new media creators

    AI · 18d ago · company-app.joinastute.com

  • Grok Bot547

    AI teammates that you can give real work to

    AI · 25d ago · x.ai

  • 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 · 27d ago · cactuscompute.com

  • Turn website visitors into qualified pipeline

    AI · 19d ago · clarasdr.ai

  • Kane CLI446

    Natural language browser & mobile app tests from terminal

    AI · 24d ago · testmuai.com

Launched alongside, August 2026

the whole month →
  • TL

    Life & fun · 10d ago · louisabraham.github.io

  • Hey Noah641

    A proactive AI executive assistant for founders

    AI · Aug 2026 · heynoah.io

  • Let agents source clips from terabytes of your local video

    Work · 18d ago · clipto.com

  • SA

    Hello HN! I found that picking out plausible but diverse skin tones for my digital art and game development projects was kind of difficult, and I got curious about if there was a way to define a color space that made it easy. I've built a color picker and procedural generation algorithm based on the space as well as a bunch of other fun js features and demos throughout the page that use the equations. If you find it interesting, I have lots of explanations of how I built it and what properties the space has. The methodology might be a bit shaky, but hopefully the result is as helpful for…

    Life & fun · Aug 2026 · toneyalexander.github.io

  • AdAnt AI608

    Claude for viral, high-converting social ads

    AI · Aug 2026 · adant.ai

  • 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