Skip to content
Try out in chatDeveloper dashboardLogin

Lightcone vs. RPA

How Lightcone's computer use model compares to RPA tools like UiPath and Automation Anywhere, and when each is the right choice.

If you run UiPath or Automation Anywhere today, the natural question is: “Is Lightcone another RPA tool, or something that plugs into the one I have?” It’s neither. Lightcone is a different approach to the same problem (automating work in GUIs), built on a computer-use model instead of recorded steps and selectors. This page explains the difference concretely, and where RPA is still the better fit.

RPA bots target the UI through selectors: element IDs, accessibility trees, anchor rules, image templates. That works until the application changes. A vendor pushes an update, a button moves, a field gets renamed, and the bot stops mid-flow. The team that owns the bot goes back in, finds the broken selector, re-records or re-anchors it, redeploys, and waits for the next breakage. For most RPA teams, this maintenance loop is the dominant cost of the program, more than building the bots in the first place.

This is structural, not a flaw in any one RPA product. A selector encodes an assumption about the application’s internals, and applications don’t promise to keep those stable.

Northstar, Lightcone’s computer-use model, doesn’t use selectors. It looks at the screen the way a person does: pixels in, actions out. When the button moves, it finds the button. When a field is renamed from “Client” to “Customer”, it reads the label and fills it in anyway. There is no selector repository to maintain, because there are no selectors.

Describe the task, don’t record the steps

Section titled “Describe the task, don’t record the steps”

An RPA bot is a recording: a fixed sequence of steps, each bound to a specific element. Lightcone takes an instruction:

Before (selector script, pseudocode):

click("#nav-contacts")
click("#btn-new-contact")
setText("#input-first-name", "Jane")
setText("#input-last-name", "Smith")
setText("#input-email", "jane.smith@acme.com")
click("#btn-save")
waitForElement("#toast-success")

Every line is a dependency on the application’s current DOM. Any one of them can break the whole flow.

After (Lightcone):

from tzafon import Lightcone
client = Lightcone()
for event in client.agent.tasks.start_stream(
instruction=(
"Go to https://crm.example.com and navigate to Contacts > New Contact. "
"Fill in: First Name 'Jane', Last Name 'Smith', Email 'jane.smith@acme.com'. "
"Click Save and verify the contact was created."
),
kind="browser",
max_steps=20,
):
print(event)
import Lightcone from "@tzafon/lightcone";
const client = new Lightcone();
const stream = await client.agent.tasks.startStream({
instruction:
"Go to https://crm.example.com and navigate to Contacts > New Contact. " +
"Fill in: First Name 'Jane', Last Name 'Smith', Email 'jane.smith@acme.com'. " +
"Click Save and verify the contact was created.",
kind: "browser",
max_steps: 20,
});
for await (const event of stream) {
console.log(event);
}

The instruction describes the outcome, not the click path. If the CRM redesigns its contact form next quarter, the instruction still holds, and Northstar reads the new layout and adapts. That’s the difference between maintaining a script and maintaining a sentence.

A large share of enterprise work happens through Citrix, VDI, or remote desktop sessions. Inside those, the automation tool sees only a bitmap, with no DOM, no accessibility tree, nothing to attach a selector to. RPA vendors handle this with image matching and OCR, which is the most fragile mode they have: a font change, a resolution change, or a theme change breaks the template.

For Northstar, a Citrix session is the same as any other screen. Pixels are its native input. It reads the remote application visually and operates it the same way it operates a local one. If your hardest automations are the ones running inside a virtual desktop, this is likely the single biggest practical difference.

RPA (UiPath, Automation Anywhere)Lightcone
How it targets the UISelectors, anchors, image templates bound to specific elementsVision model reads the screen and locates elements each run
What breaks itAny UI change that invalidates a selectorFundamental workflow changes; model variance can still cause occasional misreads (catch them with verification)
Maintenance modelOngoing: find broken selectors, re-record, redeployUpdate the instruction when the task changes; invest in verification and evals rather than selector upkeep
Virtual desktops / CitrixImage matching and OCR, a fragile fallbackNative; pixels are the primary input
Setup timeDays to weeks per workflow in a visual builderMinutes: write the instruction, run it
Licensing modelPer-bot / per-seat annual licenses plus orchestrator infrastructureUsage-based API pricing; pay for what runs

Be honest about the trade-off. RPA executes a fixed script deterministically: the same clicks, in the same order, every time, with per-step latencies in the milliseconds. A model-driven agent looks at the screen and decides each step, which costs seconds per action and introduces model judgment into the loop. That judgment is a real cost you take on in exchange for resilience: run-to-run variance, higher per-step latency, and the need to verify outcomes, track quality with evals, and handle authentication yourself for gated apps. Screen-reading trades selector maintenance for output validation. It moves the engineering, it does not remove it.

If you have a high-volume flow that is genuinely fixed, where the UI never changes, the steps never branch, and you need thousands of sub-second executions a day, a well-built RPA bot (or better, an API integration) will beat an agent on unit cost and latency. Lightcone earns its keep where RPA struggles: workflows that change, applications you don’t control, virtual desktops, conditional logic, and the long tail of processes that were never worth the RPA build cost in the first place.

The two can also coexist: many teams keep RPA on their stable high-volume flows and use Lightcone for the brittle ones they’re tired of repairing.