DEV Community

Krish Verma
Krish Verma

Posted on

Ankita v2.5.1: the browser explains itself — automatic instructions, readable page evidence, and a guarded runtime

Ankita is my open-source desktop AI companion — a little companion, a lot more possible. v2.5.1 is out today, and it's a release almost entirely about one thing: making the built-in browser behave better when you hand it work and walk away.

Here's what's new.

The browser explains itself now

The headline change is automatic browser instructions. When the companion discovers browser tools in a desktop or CLI session, it now loads the complete browser-use guide automatically — including for short continuations where the context would previously have been rebuilt from scratch. The desktop header shows Instructions loaded: browser-use when the whole guide is part of the prepared request.

Why it matters: browser work is where an agent burns the most tokens rediscovering things. A fresh tab with no shared context meant repeated guessing about how to interact with a page. With the guide loaded up front, there's no extra router, no skill-tool call, no memory handoff required — the companion just knows how to drive the page from the first step.

Pages come back as readable evidence

Browser reads now return Markdown — headings, paragraphs, links, lists, tables — instead of raw text dumps. A literal find can locate text beyond the first chunk, and bounded reads continue with the source's identity intact. Optional hidden DOM evidence is labelled separately from the actionable controls, and scripts, styles, and private field values stay out of the page text entirely.

This is the difference between an assistant that says "here's everything on the page, good luck" and one that hands you a document you can actually work with. It also makes follow-up questions cheaper: you can keep asking about a page you already read without re-fetching it.

Progress you can actually follow

The live browser states got separated properly. Thinking, reading, acting, checking, recovery, manual help, and Stop are now distinct states with their own completed-operation counts. Native dialogs can be accepted or dismissed during takeover, and transient dialog text stays out of shared thumbnails and progress broadcasts.

If you've watched an agent browser session before, you know the failure mode this fixes: a single spinner that hides whether the assistant is working, stuck, or waiting for you. Now the state tells you.

Fixes for the sharp edges

The largest fix in this release targets mixed batches of browser actions invalidating their own references. Independent same-tab fills, clicks, and native selects now check every live target before the first edit, and again before each later step is dispatched. Original node/UID bindings stay valid through intermediate steps, and the final snapshot supplies new refs. Disabled or replaced targets stop safely, completed edits are retained, and a failed batch is never automatically replayed.

Other fixes in the same family: same-named controls and cloned DOM ref attributes can no longer inherit a stale Playwright node identity; native select refuses custom menus with guidance to click their observed options; native dialogs no longer trigger automatic replay of the action that opened them.

On the provider side, errors now distinguish rate limits, quota, authentication, paid-model access, client-only routes, and unavailable upstreams. Keyless Kilo model discovery filters out routes that require paid or account access, and model vision capability comes from advertised metadata rather than guesses.

For the experimenters: a guarded browser runtime

Setting BROWSER_RUNTIME_V2=on exposes structured executed/partial/failed/uncertain receipts, capability metadata, and guarded Playwright sequences. Isolated Chromium supports explicitly selected uploads and bounded workspace downloads with completion evidence and cancellation. Unsupported connected-Chrome transfers are refused rather than guessed at. Everything under this flag stays off by default — the experimental runtime, focus/history/evidence/progress flags all ship disabled.

CLI users also get a /commands cheatsheet: help, subcommand completion, and typo suggestions now share one registry, and startup reports the app version and provider.

Honest limits

A few things worth knowing, from the release's own verification section:

  • The experimental runtime and context flags are opt-in and remain off by default.
  • Connected Chrome still has its documented frame/transfer limits; hidden text is evidence, not proof that interaction is available.
  • There's a known release issue: the final Windows CI run recorded 3 failures out of 1,119 tests — two connected-Chrome fixtures abort their first navigation, and a cart fixture records no edit. The local native suites all pass, but the runner issue wasn't resolved before publication. This version was published manually to stop further test churn; the failing assertions and the normal CI test gate remain intact.

I like releases that say this stuff plainly. A changelog that admits its CI isn't green is more trustworthy than one that hides it.

Context controls for the token-conscious

There's a set of optional, independent switches: browser tool focus keeps the same agent, chat, memory, and approvals while refusing unrelated discovery until an explicit general-scope switch; request-only history compaction, grounded evidence retention, and unchanged-page diagnostics are separate opt-ins; request/schema/history byte metrics support controlled lab comparisons. The default tool-round ceiling is now 100, configurable through MAX_TOOL_STEPS.

Grab it

Ankita v2.5.1 is on GitHub: https://github.com/akyourowngames/A.N.K.I.T.A

If you're using the browser features, the automatic instructions and readable page evidence are the two things worth trying first — they're on by default, no config needed. If you've got opinions on the experimental runtime flags, I'd genuinely like to hear which of them you'd want promoted to default. Drop feedback in the comments or open an issue on the repo.

Top comments (0)