I build Rust infrastructure for the agent internet — the browser agents browse with, and the systems that let agents reach each other the way people reach websites over HTTP.
diting — a browser engine built for AI agents: one Rust binary, own V8 + own CSS/layout/paint stack, no Chromium. Fetch live pages as markdown, render JS/SPAs, screenshots, interactive login sessions that survive restarts, 20-engine meta-search, deterministic document generation (PDF/PPTX/DOCX). Every response is a receipt — tier, redirect trail, content hash — so agents act on what actually happened. Apache-2.0, self-host in one line:
curl -fsSL https://browser.aginx.net/install.sh | shMeasured against headless Chrome on the same pages: 7.6× faster to agent-usable text (p50 532 ms vs 4 053 ms), ~10× less memory, zero hard failures. Onboarding for agents is zero-touch: point Codex / Claude Code at the SKILL.md and the browser becomes their tool.
aginxos-next — a Rust OS for AI agents on a real phone: Linux kernel for drivers, Rust userspace for the system. Pixel 5: voice-first agent, camera as peer input, screen as HTML canvas. 给 Agent 的操作系统。
AginxBrain — local-first AI gateway with bidirectional protocol conversion (Anthropic ↔ OpenAI ↔ Responses). Route Claude Code / Codex CLI to any provider by quality tag, with failover. Rust + Tauri.
aginx — the Agent Protocol: route messages to agents as easily as HTTP routes them to servers. A pure server — which models an agent runs is the agent's own business.
Also: homebrew-diting (macOS tap), model-router (protocol-translating model proxy with failover), opencarrier (agent OS: WeChat / Feishu / DingTalk access, 24/7 scheduling).
When something breaks, I fix it in our tree first, verify the fix against a repro, and then hand the root cause and the patch data back upstream. Every claim below links a commit and a test. Recent highlights:
- obscura#1108 — SSRF denials that don't name the opt-in: eight separate denial sites, zero mentions of
--allow-private-network. All eight now share one hint constant; the operator learns the knob at the moment they hit it (7cfeb1f). - agent-browser#2000 — the date/time input family stored whatever you handed it (
2026-02-30reflected verbatim). Shipped the HTML value sanitization algorithm for date/month/week/time/datetime-local, with a composing-typing draft so agent keystrokes aren't eaten mid-date; 44-assertion parity harness plus CDP e2e (42840ea). - blitz#887 gap — sticky table rows and groups — boxless
thead/tbody/tfootgot a geometry-preserving flex-column stand-in; the sticky containing-block walk skips table-internal stand-ins, and positioned z>0 hoists past non-stacking-context parents (b1875f9). - moli#514 — non-HTML responses walked the HTML pipeline; now
text/*/JSON/XML render as Chrome's escaped<pre>andcontentTyperides the response header end to end (f963306). - obscura#940 —
location.hrefassignment moved the realm URL at queue time: synchronous JS between assignment and navigation could read the target origin's cookies (SOP bypass). URL now moves on commit, both halves pinned by regression tests (9bd14ff). - obscura#852 — two SSRF deny-sets drifting: navigation validated the full IANA special-purpose list while page fetch used a hand-rolled loopback check — a page could
fetch()addresses navigation refuses. One sharedis_forbidden_ipacross fetch, XHR, scripts, redirects (0df75f4). - blitz#349 — box-shadow was absent; shipped v1 as a spec-shaped parser + SDF paint (outer, then inset with inverted geometry and Chrome-matched falloff), sidestepping the non-uniform-radius wall upstream traces to (6df1ecf, 8f08298).
- obscura#935 — text-decoration painted underline only; added line-through/overline with the CSS 2.1 §16.3.1 propagation rule, probed against a Chrome positive control (6049614); upstream closed it with a matching fix.
- obscura#828 —
innerTextreturned raw inline<script>source (~100× vs Chromium); rebuilt as a rendered-text walker — juejin.cn homepage went 38 775 → 295 chars (18e131c). - obscura#817 — webpack style-loader "couldn't find a style target": aliased constructors made
head instanceof HTMLIFrameElementtrue for every element. Rebuilt withSymbol.hasInstancekeyed on tag name — bilibili's 2 MB player core boots past it (f709e17). - obscura#967 —
Authorizationleaked across cross-origin redirects; pinned with raw TCP listeners on two ports. Fixed per spec, and upstream merged the same fix two days after our data point (7fbcb51).
Full ledger: 60+ upstream issues across obscura, blitz, moli, servo, agent-browser, takumi and the modelcontextprotocol spec — each reported with a repro and a fix already running in our build.



