Why the Simplest Desktop Agent Abstraction Wins

Jun 20, 2025

This is first post in a series about the design and implementation of Bytebot. Give us a star on our open source repo.

We’re still in the early innings of AI agents. There are hundreds of companies building wrappers around LLMs, trying to make them more useful; more tool-aware, more stateful, more capable of completing tasks across applications. But most of them are barking up the same tree: they’re building agents that work by connecting APIs and tools in structured ways.

Bytebot was born out of a fundamentally different belief: that the simplest and most universal abstraction for agent control already exists, and we’ve been using it for decades.

The Agent as Remote Worker

Here’s the core idea: give an LLM access to a keyboard, a mouse, and a screen. Nothing more.

That’s it. That’s the interface. That’s what a human remote worker uses. And it’s the only interface you need to approximate the vast majority of digital work.

Why does this work? Because nearly all software, all workflows, and all enterprise tooling has been designed (whether explicitly or implicitly) for a human sitting at a computer. If we can simulate the inputs of a human worker and read the same outputs (screen pixels), we can plug into the same workflows. No custom integrations required.

This approach isn’t just simpler - it’s more robust, more generalizable, and more future-proof.

We Tried the Other Way First

Before the current version of Bytebot, we built it as a browser agent.

It started innocently enough: add hooks for prompting into Playwright scripts, letting LLMs handle finding selectors and xpaths:

(The first version of Bytebot, a framework for browser automation)

Then we started building agents that could remote-control browsers using models. Then we built a full-on RPA-style orchestration layer for browser-based tasks.

And we hit every wall imaginable:

  • No reliable drag-and-drop support

  • Workarounds for downloading files that broke every other week

  • Customers who wanted 2FA or password managers like 1Password or Okta

  • People wanting to fill a PDF offline, then upload it back

  • Apps without APIs but crucial to their workflow

It turns out, browsers are only a fraction of what people actually use. The DOM is not the whole world. So we had a choice: build 1,000 integrations… or zoom out.

The Bitter Lesson

In 2019, Rich Sutton published what’s now known as “The Bitter Lesson”. The gist is: the biggest gains in AI haven’t come from building complex logic or specialized systems. They’ve come from simple methods scaled with compute.

We saw this lesson firsthand.

Every time we built a clever workaround (a DOM compressor, a canvas interpreter, a proprietary multi-step planner), a new model would come out and blow it away. We’d have to rip it all up and start over. Again.

So instead of fighting the models, we decided to get out of their way.

We stopped designing our agent abstractions to match the limitations of current LLMs. We started designing them around the realities of human-computer interaction: assuming models will get better at dealing with screens, input events, and sequential planning. Which they are, rapidly.

Horseless Carriages vs. Autonomous Agents

There’s a natural criticism of our approach: “Aren’t you just recreating a horseless carriage?” - a legacy interface for a new kind of intelligence?

Yes. Intentionally.

We’re not pretending every task is best solved with a desktop agent. There are agent architectures that thrive on abstraction:

  • Research agents benefit from tool-rich environments with structured APIs: search tools, calculators, translators, embeddings, and more.

  • Code agents can digest an entire codebase, refactor modules, or write libraries using recursive self-feedback and powerful context windows.

  • Multi-agent planners can orchestrate workflows where no human-like interaction is needed at all.

But that’s not the whole world.

There’s a massive category of work that lives in the no-man’s land between APIs and deep internal logic. It’s the gnarly, hard-to-automate workflows that involve:

  • Jumping between apps

  • Copy-pasting between SaaS tools

  • Downloading PDFs, renaming them, and uploading them to different portals

  • Typing into legacy desktop software that has no public API

  • Handling authentication, file dialogs, drag-and-drop interactions

This is the unglamorous work: the stuff that still eats up countless hours across legal, ops, HR, finance, logistics, compliance, and enterprise support. And it’s not going away. It’s deeply embedded in real companies doing real work.

That’s the gap we’re trying to bridge. Not by replacing every workflow with a smarter agent, but by giving models a body; a way to operate inside existing systems without asking the systems to change.

Why This Abstraction Wins

So what do you get when you build from first principles—keyboard, mouse, screen?

  • Universality: It works across every app, every OS, every website.

  • Fidelity: You can click, scroll, drag, type, trace. Anything a human can do, the agent can do.

  • Composability: Actions can be learned, chained, recorded, reasoned over.

  • Observability: Screenshots are the source of truth, making agent decisions traceable.

  • Extensibility: Add audio, notifications, or sensors later. The core stays stable.

It’s not minimalism for its own sake. It’s choosing primitives that are stable across all computing environments and robust to change.

What This Enables for Companies

Most companies don’t want to build their own agents. They want something that works out of the box and doesn’t require reorganizing their workflows.

That’s what this architecture enables:

  • No APIs to maintain

  • No special integrations to build

  • No model-specific logic to write

Just tasks, tools, and screens.

Give the agent access to the same computing environment your remote team uses. Assign tasks. Let it click, type, scroll, and think. It works with what you already have.

And because the intelligence is model-agnostic and externalized, it gets better automatically as models get better. The scaffolding doesn’t change. The agent just gets smarter.

Building for the Plateau, Not the Peak

Everyone’s building for GPT-5. We’re building for what comes after.

The goal of Bytebot isn’t to chase state-of-the-art LLM performance with narrow integrations. It’s to build an environment where agents can operate reliably no matter how the intelligence improves: an interface that’s durable, general, and designed for the long game.

Next up: how we built a containerized Linux OS from scratch to support that vision.

Start Automating

In Minutes

© 2025 Tantl Labs, inc. All rights reserved.