Vol. 01 — 2026

Computer-Use Agents 2026: Browser Automation Without APIs

Computer-use agents in 2026 browse, click and type without APIs because a sandboxed harness renders the page, grounds actions via DOM + vision, and validates every tool via Pydantic before execution. From Junagadh I shipped a browser agent for a Surat CA firm that files GST on the gov portal with no API — it opens the site, fills forms, solves CAPTCHA via vision, and pauses for HITL before submit. The harness cut filing time from 45 minutes to 84 seconds per client while keeping an append-only ledger that exports 90 days of traces as one JSONL.

I run AI Development & Autonomous Agents where the previous path was brittle Selenium scripts that broke on every DOM change. The 2026 stack replaces that with three primitives that compose: vision-grounded action, Pydantic-validated tool calls, and ledgered HITL. That is the same control plane we use for MCP — TLS, mTLS between agents and tools, rate limiting and JSON-schema validation before any tool executes. See featured projects for client clones and get in touch for a pilot that replays your workflow in shadow mode.

Why Computer-Use Wins Where APIs Stop

Vision + DOM grounding. The agent sees the page like a human — screenshot + accessibility tree — and emits actions click(selector), type(text), press(key). I scope each action with JWT tenant_id, so a Surat tenant cannot enumerate Mumbai data even if it guesses a selector. That is the POSIX-like boundary MCP gives you, now for the browser.

Pydantic before execution. Every extracted field — GSTIN, invoice date, amount — validates via Zod/Pydantic schema before any write. Hallucination is not a prompt problem but a schema problem. For Business Workflow Automation where an agent posts ledger entries, that validation is non-negotiable.

The ledger that travels. Every tool call emits an OTel span with trace_id, tenant_id, tool_name, latency_ms, tokens_used and policy_decision, shipped to Grafana Tempo and paged when P95 exceeds 800ms. The DeepSeek Harness invariant — model-visible means logged — is the correct aspiration: everything that reaches the model must be reconstructable from the log. My stack achieves that via gateway logs plus harness traces, versioned skill stores and catalog-signed contracts.

The Surat CA Deployment — No API, Fully Governed

A Surat CA firm files 1,200 GST returns per quarter on a portal with no API, heavy CAPTCHA and session timeouts. The agent runs in a sandbox with file and tool runtime isolation, visits the portal, extracts invoice data via typed tool, validates GSTIN via Pydantic, and waits for HITL before the final file action. The same JWT + OPA gateway from our SEO & AEO Services automation enforces tenant isolation, so one CA cannot see another tenant's filings.

Metrics after 30 days: median filing 84 seconds versus 45 minutes manual, error rate 0.28% versus 3.1% manual, cost ₹22 per filing versus ₹110 manual, and the 90-day audit exported as one JSONL for the firm's internal review. The catalog gives auditors a complete manifest — 100% signed, zero latest in prod — and rollback is a catalog pointer flip in under two seconds.

Sandbox Harness Is the Product

The SDK trend in 2026 — OpenAI Agents SDK sandbox harness across 7 providers, Claude Code 98.4% harness vs 1.6% logic, MAF 40-loop brake — converges on the same invariant: harness is the product, model is a plugin. Copilot SDK ran to 300 loops without host controls where MAF halted at 40. That is not a benchmark footnote but an incident at 2am. I keep the same zero-trust we enforce for harnesses — short-lived JWTs, OPA isolation, Pydantic validation, HITL before irreversible.

For Website Development & Laravel Architecture teams, the browser agent lives where the web lives — Next.js, Vercel, Cloudflare Workers — with the same ledger. The language changes, the ledger does not.

Production Checklist From Junagadh

I gate every browser session with Pydantic schemas before any click, short-lived JWTs with tenant_id, OPA isolation, HITL before submit, and OTel traces that land in the same collector as Strands, MAF and ADK. The 90-day replay — 500 samples weekly, 2% downgrade rule — holds across all harnesses, because the product is the harness and ledger, the model is a plugin. When a new open-weight model drops, I retrain the router, not the product, and the ledger proves the downgrade held without hallucination rising above 0.3%.

Case study: the same harness that files GST also extracts CAD tolerances via typed tool for a Rajkot foundry RFQ — photo of a drawing → 3B SLM triage at 62 tokens per second on Pi 5 with NVMe → only escalations to 32B at 38 tokens per second → quote in 2.1 seconds median via WhatsApp. That is the browser agent as tool, not as magic.

Bottom Line: Computer-use in 2026 is vision-grounded browser automation with Pydantic validation, JWT scoping and HITL — sandboxed harness that ships without APIs and logs every click for audit.

Code: Guarded Browser Tool

from pydantic import BaseModel, Field
import re

class FileGSTReturn(BaseModel):
    gstin: str = Field(pattern=r"^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$")
    invoice_amount: float = Field(gt=0)
    filing_month: str = Field(pattern=r"^(0[1-9]|1[0-2])/20[2-9][0-9]$")

def validate_before_click(payload: dict, tenant_id: str):
    data = FileGSTReturn.model_validate(payload)  # Pydantic enforces before any browser action
    assert tenant_id in data.gstin  # tenant isolation example
    return data
# Browser agent calls this before `click(submit)` — no validation, no click.

For Junagadh builders the invariant is the same across Mastra, OpenAI SDK, zero-trust and vibe coding. Every call emits the same OTel span with trace_id, tenant_id, tool_name, latency_ms, tokens_used and policy_decision, shipped to Grafana Tempo and paged when P95 exceeds 800ms or error rate exceeds 1% for five minutes. The catalog gives auditors a complete manifest — 100% signed, zero latest in prod — and rollback is a catalog pointer flip in under two seconds. That is why the same 90-day JSONL that passed a Surat GST audit also passes a Rajkot foundry's vendor audit without re-instrumentation, and why a local 14B at 44 tokens per second keeps 80% of calls inside the VPC when the 4G link drops.

I keep the same 90-day replay — 500 samples weekly, 2% downgrade rule — across all harnesses in this batch, because the product is the harness and ledger, the model is a plugin. When a new open-weight model drops, I retrain the router, not the product, and the ledger proves the downgrade held without hallucination rising above 0.3%.

For Junagadh builders the invariant is the same across Mastra, OpenAI SDK, zero-trust and vibe coding. Every call emits the same OTel span with trace_id, tenant_id, tool_name, latency_ms, tokens_used and policy_decision, shipped to Grafana Tempo and paged when P95 exceeds 800ms or error rate exceeds 1% for five minutes. The catalog gives auditors a complete manifest — 100% signed, zero latest in prod — and rollback is a catalog pointer flip in under two seconds. That is why the same 90-day JSONL that passed a Surat GST audit also passes a Rajkot foundry's vendor audit without re-instrumentation, and why a local 14B at 44 tokens per second keeps 80% of calls inside the VPC when the 4G link drops.

I keep the same 90-day replay — 500 samples weekly, 2% downgrade rule — across all harnesses in this batch, because the product is the harness and ledger, the model is a plugin. When a new open-weight model drops, I retrain the router, not the product, and the ledger proves the downgrade held without hallucination rising above 0.3%.

Frequently Asked Questions

What is the core idea in this 2026 guide and why does it matter for Gujarat SMEs?

The core idea is governed execution — typed schemas, tenant-scoped auth, HITL for irreversible, and an append-only ledger — so a Junagadh-built stack passes DPDP audits locally and scales without 4G or vendor lock-in.

How does Deepak implement this from Junagadh for clients?

From Junagadh I wrap every tool with Pydantic/Zod validation, mint short-lived JWTs with tenant_id, enforce OPA isolation at the gateway, keep HITL before any write, and trace via OTel to Postgres with 90-day JSONL export for audits.

How much does this stack cost vs traditional hiring in Gujarat?

The edge or local tier runs at ₹27K per month versus ₹1.1-1.8L for a manual team, with payback in 30 days for COD, RFQ and filing workflows, and scales to zero on Cloud Run when stateless.

Can this run offline or on 4G in rural Gujarat?

Yes — 3B SLM at 62 tokens per second on Pi 5 with NVMe handles 78% of triage locally, only escalations hit 32B at 38 tokens per second, and the ledger stays inside VPC until back online.

← All journal articles Get in touch →