Skip to content
View yinnho's full-sized avatar

Block or report yinnho

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
yinnho/README.md

diting stars License Release

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.

Products

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 | sh

Measured 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).

How I work upstream

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-30 reflected 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/tfoot got 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> and contentType rides the response header end to end (f963306).
  • obscura#940 — location.href assignment 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 shared is_forbidden_ip across 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 — innerText returned 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 HTMLIFrameElement true for every element. Rebuilt with Symbol.hasInstance keyed on tag name — bilibili's 2 MB player core boots past it (f709e17).
  • obscura#967 — Authorization leaked 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.

Popular repositories Loading

  1. aginxbrowser aginxbrowser Public

    MOVED → github.com/yinnho/diting — same engine, new name. All releases & development live there.

    Rust 55 6

  2. UPnPCast UPnPCast Public

    Modern Android DLNA/UPnP casting library — coroutine-first Kotlin API, SSDP discovery, local-file streaming, subtitles. A maintained replacement for the discontinued Cling project.

    Kotlin 39 8

  3. aginx aginx Public

    Agent Protocol — access Agents as easily as visiting a website

    Rust 24 7

  4. model-router model-router Public

    AI model proxy with protocol translation — seamlessly route between Anthropic Messages, OpenAI Chat & Responses API

    Rust 7 1

  5. opencarrier opencarrier Public

    OpenCarrier — 开源 AI Agent 操作系统 | 基于 Rust 的分身引擎,支持微信/飞书/钉钉/企业微信多平台接入,插件化工具扩展,7×24 小时自主调度运行

    Rust 6 2

  6. diting diting Public

    Engine-first browser for AI agents. One Rust binary, built-in V8, no Chromium — HTTP is the only protocol face.

    Rust 6