rote

overview

What Rote is

Rote is the memory manager for browser agents. Agent harnesses all have memory — history arrays, screenshot piles, selector caches. What none of them has is a manager: something that decides what stays in the context window, what leaves, what comes back, and what has to be proven before it's trusted. The window is treated as a garbage dump — append, and hope. Rote treats it as a managed resource: a budget, an eviction policy, a layout contract, and a trust gate on the way back in.

The name is the thesis. Rote: doing something from memory, by repetition, without re-deriving it. Technically, it is memoization applied to agent trajectories — cache the result of expensive exploration, keyed by task class and environment fingerprint, invalidated by assertion rather than TTL.

The three amnesias

TierScopeThe billStatus
0 · Workingwithin one runcost is O(n²) in task lengthbuilt · measured (G1 pass)
1 · Episodicacross runs of a taskrun #50 costs what run #1 costreplay built · distiller unbuilt (P2)
2 · Semanticacross tasks on a siteevery task re-learns the portaldesigned (P2)

The trust gate is not a fourth tier — it is the precondition for all three. Memory that might be wrong is worse than no memory: every tier is assertion-gated on the way back in, and success is decided by page state, never by the absence of an exception.

Try it

The rote CLI launches verified cold browser tasks and prefers exact-fingerprint, zero-LLM replay when a recorded candidate matches. (Pre-release: the packages are unpublished at 0.0.0 — build from source.)

# run a task cold, with a verify gate — success is page state, not vibes
rote run "create a tag named release-notes" \
  --url http://localhost:8080/wp-admin \
  --verify-text "release-notes"

# inspect what was recorded
rote runs ls
rote runs show <run_id>

# promote a verified run into a replay candidate
rote candidate create

Where to go next