Production Agents: Routing, Testing and Browser Automation Case Studies

various · Tech · 2023 · source Agentic: yes · promotional bias: low · source-backed · extracted with prompt 0.5.6 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Production agent routing, testing, and browser automation

The panelists needed practical ways to make early LLM agents usable in production when agents had too many tools, weak real-time steering, unreliable browser execution, hard-to-test nondeterministic behavior, slow responses, and ambiguous failure modes.

Constraints:

Architecture

The case study presents three complementary production-agent designs. Sam's personal assistant uses a WebSocket-to-Redis feedback path and router/template agents to constrain tools around common workflows. Div's MultiOn browser agent uses compressed DOM parsing, OCR, user override, planned critics, authorization, evals, and benchmarks to run web tasks. Devin's GitHub bot indexes repositories, triggers feature-request agents from issue webhooks, and uses checkpointing so partial findings such as files, issues, or code owners are useful even when the agent cannot complete a change.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  user-conversation["User conversation"] --> top-level-conversational-agent["Top-level conversational agent"]
  top-level-conversational-agent["Top-level conversational agent"] --> user-conversation["User conversation"]
  user-conversation["User conversation"] --> feedback-websocket["Feedback websocket"]
  feedback-websocket["Feedback websocket"] --> user-conversation["User conversation"]
  feedback-websocket["Feedback websocket"] --> redis-feedback-store["Redis feedback store"]
  redis-feedback-store["Redis feedback store"] --> feedback-websocket["Feedback websocket"]
  redis-feedback-store["Redis feedback store"] --> template-agents["Template agents"]
  template-agents["Template agents"] --> redis-feedback-store["Redis feedback store"]
  top-level-conversational-agent["Top-level conversational agent"] --> router-agent["Router agent"]
  router-agent["Router agent"] --> top-level-conversational-agent["Top-level conversational agent"]
  top-level-conversational-agent["Top-level conversational agent"] --> template-agents["Template agents"]
  template-agents["Template agents"] --> top-level-conversational-agent["Top-level conversational agent"]
  router-agent["Router agent"] --> template-agents["Template agents"]
  template-agents["Template agents"] --> router-agent["Router agent"]
  browser-automation-agent["Browser automation agent"] --> compressed-dom-parser["Compressed DOM parser"]
  compressed-dom-parser["Compressed DOM parser"] --> browser-automation-agent["Browser automation agent"]
  browser-automation-agent["Browser automation agent"] --> ocr-augmentation["OCR augmentation"]
  ocr-augmentation["OCR augmentation"] --> browser-automation-agent["Browser automation agent"]
  browser-automation-agent["Browser automation agent"] --> user-override-controls["User override controls"]
  user-override-controls["User override controls"] --> browser-automation-agent["Browser automation agent"]
  browser-automation-agent["Browser automation agent"] --> critic-and-evaluation-layer["Critic and evaluation layer"]
  critic-and-evaluation-layer["Critic and evaluation layer"] --> browser-automation-agent["Browser automation agent"]
  browser-automation-agent["Browser automation agent"] --> authorization-controls["Authorization controls"]
  authorization-controls["Authorization controls"] --> browser-automation-agent["Browser automation agent"]
  github-webhook-pipeline["GitHub webhook pipeline"] --> repository-index["Repository index"]
  repository-index["Repository index"] --> github-webhook-pipeline["GitHub webhook pipeline"]
  github-webhook-pipeline["GitHub webhook pipeline"] --> feature-request-agent["Feature request agent"]
  feature-request-agent["Feature request agent"] --> github-webhook-pipeline["GitHub webhook pipeline"]
  repository-index["Repository index"] --> feature-request-agent["Feature request agent"]
  feature-request-agent["Feature request agent"] --> repository-index["Repository index"]
  feature-request-agent["Feature request agent"] --> checkpointing-layer["Checkpointing layer"]
  checkpointing-layer["Checkpointing layer"] --> feature-request-agent["Feature request agent"]
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
User conversation Primary user interface for personal-assistant requests and ongoing agent communication. Top-level conversational agent, Feedback websocket
Feedback websocket Side channel that accepts user feedback while an agent is running. User conversation, Redis feedback store
Redis feedback store Transient store read by the executor loop before planning so fresh user feedback can alter the next action. Feedback websocket, Template agents
Top-level conversational agent Conversation manager that routes user requests to template agents or a fallback dynamic agent. User conversation, Router agent, Template agents
Router agent Routing layer that selects product-flow-specific agents or predicts relevant tools for unmatched requests. Top-level conversational agent, Template agents
Template agents Specialized agents for workflows such as scheduling or person lookup, each with constrained tools and instructions. Redis feedback store, Top-level conversational agent, Router agent
Browser automation agent MultiOn agent that controls websites through natural-language tasks. Compressed DOM parser, OCR augmentation, User override controls, Critic and evaluation layer, Authorization controls
Compressed DOM parser Custom parser that turns website HTML into a compact representation for the browser agent. Browser automation agent
OCR augmentation Multimodal supplement for icons and images not captured cleanly by DOM text. Browser automation agent
User override controls Text-box and pause/custom-command mechanism for interpretability and user intervention. Browser automation agent
Critic and evaluation layer Planned critic, eval, and benchmark loop for assessing browser actions and reliability. Browser automation agent
Authorization controls Planned site-specific read/write authorization panel for browser automation. Browser automation agent
Repository index Indexed codebase representation updated as the GitHub repository changes. GitHub webhook pipeline, Feature request agent
GitHub webhook pipeline Webhook-topic-cloud-function event path that starts a background code-navigation job. Repository index, Feature request agent
Feature request agent Agent that navigates repositories, finds relevant files, and suggests implementation approaches or partial outputs. Repository index, GitHub webhook pipeline, Checkpointing layer
Checkpointing layer Focused step boundaries where the end state of one agent becomes the next agent's starting point or useful partial result. Feature request agent

Data flow

For the personal assistant, user messages go to a conversational agent, while live feedback travels through a WebSocket into Redis and is read before the next planning stage. The router chooses a product-flow template agent with a constrained tool set or a fallback dynamic agent. For browser automation, MultiOn receives a task, parses DOM into a compact representation, augments it with OCR, executes browser actions, and can be paused or overridden. For GitHub, a repository is indexed, issue events trigger a cloud-function job, and a feature-request agent navigates files through checkpointed steps.

3 supporting quotes
“a stream another websocket that the user could kind of send um communication to while the agent was running and it would write to a redis store”transcript, stated
“the conversational agent as a top level and then the template names and descriptions or themselves tools”transcript, stated
“it pushes the event to um a web hook publishes it to a topic which then runs the cloud function in the background”transcript, stated

Why this architecture

The architectures emphasize bounded workflows over unconstrained autonomy. Router/template agents reduce tool-choice entropy, live feedback and override controls keep humans able to steer agents, compressed DOM state keeps browser automation within context limits, and checkpoints keep code-navigation outputs useful when full completion is not safe.

3 supporting quotes
“we tried to basically constrain the agents into different templates”transcript, stated
“this was a little bit more of like user opt-in driving the agent”transcript, stated
“start with a small toolkit like instead of giving you know the agent everything”transcript, stated

Models used: GPT-4 · GPT-3.5 · LangChain ReAct-style agents · MultiOn browser agent

Scale

Alternatives considered (roads not taken)

Ask for confirmation after every action

Rejected because: The panel describes that as frustrating compared with optional mid-run feedback.

“it's also a little more frustrating to constantly be like yeah I wanted”transcript, stated
“user opt-in driving the agent”transcript, stated

Give one agent all CRUD/API tools

Rejected because: The agent ran out of context and could not reliably guess the right tools.

“create retrieve update delete for like every single API we were doing and the agent quickly ran out of space”transcript, stated
“sometimes it did a poor job guessing”transcript, stated

Use full DOM or pure vision for browser state

Rejected because: Full web context exceeds model context limits and vision adds latency, so MultiOn used compressed DOM plus OCR.

“not possible for you to spread the context length of the full domain to AI model”transcript, stated
“currently have this video mostly passing the norm so we started with like a text paste and what we are doing now is like we are adding OCR”transcript, stated

Force the GitHub bot to complete a full implementation

Rejected because: The code agent should stop or return useful partials rather than making confusing wrong changes.

“rather than doing the wrong thing it's better to just do nothing”transcript, stated
“this is the code owner you should talk to that is useful even if you can't you know get do the complete the request end to end”transcript, stated

Patterns

human-in-the-loop-gate (interaction)

Users can steer the running agent via feedback or browser override controls rather than approve every action.

“a real a way to give it real-time feedback and adjust its course as it's actually processing the thought action action input Loop”transcript, stated
“they can like pause this execution give it a custom command”transcript, stated

multi-agent-orchestration (agent-architecture)

The panel uses routers, template agents, planner agents, critics, and checkpointed focused agents to coordinate complex workflows.

“this was um heavy use of a router agent”transcript, stated
“there's a planning agent and then so if there's a specific task the first one that it will be like okay is like this uh search agent”transcript, stated

tool-use-orchestration (agent-architecture)

Tool access is routed through workflow-specific templates rather than giving every tool to every agent.

“we tried to basically constrain the agents into different templates”transcript, stated
“the template names and descriptions or themselves tools”transcript, stated

context-compaction (context-management)

MultiOn compresses HTML/DOM state to fit browser context into a small token budget.

“we use like a very compressed term representation so we have custom password that can take the whole HTML and simplify it a lot”transcript, stated
“websites in less than 2K tokens so this”transcript, stated

eval-driven-development (quality)

The browser automation team planned critic agents, evals, and benchmarks to determine which tasks were reliable enough.

“like add a Critic to the loop so like”transcript, stated
“we might build like say like evals or like benchmarks”transcript, stated

durable-execution (reliability)

The GitHub bot uses checkpoints and resume/retrigger behavior to survive timeouts and produce useful intermediate results.

“I've been calling it checkpointing”transcript, stated
“it just like resumes base software is less cache resumes until it finally uh completes in within the two minutes”transcript, stated

latency-optimization (performance)

The panel recommends streaming, caching, smaller models, and parallel actions to make slow agent execution usable.

“agents are powerful but slow down the response time”transcript, stated
“instead of calling gpd4 we can just like load it from a cache”transcript, stated

Tradeoffs

Use opt-in feedback rather than mandatory confirmations.

Chose Real-time user feedback channel over Approve/continue prompt at every step.

Rationale: The feedback channel keeps UX fluid while letting users intervene when the agent heads down the wrong path.

“it's also a little more frustrating to constantly be like yeah I wanted”transcript, stated
“user opt-in driving the agent”transcript, stated

Route to constrained template agents.

Chose Top-level router with product-flow agents over One agent guessing among all tools.

Rationale: Constrained agents reduce context load and apply workflow-specific instructions for common tasks.

“we tried to basically constrain the agents into different templates”transcript, stated
“giving this template like the the agent like Specific Instructions about how to deal with different scheduling cases really improve performance”transcript, stated

Use DOM parsing with OCR instead of full vision control.

Chose Compressed DOM representation plus OCR for icons/images over Sending full DOM or relying only on image models.

Rationale: The DOM parser is fast and compact, while OCR covers visual elements; full-context vision would be slower and context-heavy.

“mostly passing the norm so we started with like a text paste and what we are doing now is like we are adding OCR”transcript, stated
“contextness because like it's not possible for you to spread the context length of the full domain to AI model”transcript, stated

Prefer partial checkpoint outputs to wrong complete automation.

Chose Checkpointed search/find/explain stages over Forcing the agent to complete the whole code change.

Rationale: Partial outputs still reduce engineering work, while wrong changes add confusion.

“the end state for one agent is a starting point for another agent”transcript, stated
“this is the code owner you should talk to that is useful even if you can't you know get do the complete the request end to end”transcript, stated

Gotchas (what bit them)

Real-time agent mistakes waste time when the user cannot steer execution.

Root cause: The agent's planning loop kept following old observations even when the user saw a better path.

Resolution: Read live user feedback from Redis before the next planning stage and inject it as a special feedback concept in the prompt.

“watching them console log as they go off into some rabbit hole”transcript, stated
“we would update the prompt to introduce the idea of user feedback and how to respond to it”transcript, stated

Tool proliferation made agents unreliable.

Root cause: Giving one agent CRUD tools across many APIs exhausted context and made tool prediction brittle.

Resolution: Group tools and instructions into product-flow templates selected by a top-level router.

“the agent quickly ran out of space”transcript, stated
“these specific tools were really well suited for this product flow”transcript, stated

Browser control created operational risk on live websites.

Root cause: The agent can operate logged-in web sessions and make changes, including to systems like AWS.

Resolution: Add interpretability, user override, critic/eval loops, monitoring, and authorization controls for site-specific read/write actions.

“I actually got it melting to edit its own AWS backend”transcript, stated
“only authorized to work on Amazon or it can only like read tasks on Amazon but not right”transcript, stated

Critic loops improve accuracy but hurt responsiveness.

Root cause: Every action critique adds latency in an already slow agent workflow.

Resolution: Choose different planning/criticism combinations by use case and optimize for snappy UX where needed.

“improves the uh like the accuracy a lot but uh it reduces like the like the it is the cause also like uh in case of the latent server system”transcript, stated
“we need it to be like really Snappy for a user”transcript, stated

A code agent can create confusion if it guesses beyond its implemented scope.

Root cause: The GitHub bot's bug agent was not fully implemented, and complete code changes are not always reliable.

Resolution: Safely ignore unsupported requests or return checkpointed partials like files, related issues, and code owners.

“the kind of bug agent isn't implemented or fully or at least roll it out”transcript, stated
“rather than doing the wrong thing it's better to just do nothing”transcript, stated

Evaluation

The panel evaluates production readiness through user steering quality, router/template performance, browser automation reliability on target tasks, checkpoint usefulness, and latency mitigations like streaming/caching/parallelism.

Metrics: MultiOn claimed 90% website coverage under 2K tokens · Remaining 5% of websites may require parser customization · DOM parser path described as less than 10ms · Two-minute timeout for the GitHub bot's reverse proxy · Streaming all action/action-input observations to the user

3 supporting quotes
“we are actually able to protect 90 of the websites in less than 2K tokens”transcript, stated
“this works really fast like less than 10 milliseconds”transcript, stated
“we streamed everything and we made it an early change to the Callback manager”transcript, stated

Outcomes

The source reports a six-month personal-assistant effort, 90% website coverage under 2K tokens for MultiOn, roughly 5% of websites needing parser customization, less-than-10ms parser performance, and a two-minute timeout constraint in the GitHub bot.

4 supporting quotes
“The implementation uses a secondary WebSocket connection that allows users to send messages while the agent runs.”summary, stated
“you can use it on like uh like do Dash Amazon emails um you've even got it to work on like AWS for example”transcript, stated
“kicks off this feature request agent to try to navigate this repository find the relevant files”transcript, stated
“The overarching theme across all three presentations is that successful production agents require thoughtful system design beyond just the language model—they demand careful consideration of routing, tool management, user feedback mechanisms, reliability monitoring, and graceful failure handling.”summary, stated