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

aginxbrowser stars License Release

I build Rust infrastructure for the agent internet — the stack that lets AI agents reach the web and each other the way people reach websites over HTTP.

Products

aginxbrowser — web access for AI agents: one MCP server, one Rust binary. Fetch live pages as markdown, render JS/SPAs on a built-in V8, screenshot without Chromium, five-engine meta-search, interactive login sessions with replayable action logs. Apache-2.0 — self-host it, or point your client at the hosted instance.

In our benchmark (bench/), a tiered auto-fetch answers in 532 ms where a Chrome-class round trip takes 4053 ms, at ~227 MB vs ~2.1 GB per page. Pages that only need the HTML layer never pay for a browser.

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.

opencarrier — an open-source agent OS in Rust: WeChat / Feishu / DingTalk / WeCom access, pluggable tools, 24/7 autonomous scheduling.

Also: model-router (protocol-translating model proxy with failover), ProxyMaster (auto-rule Chrome proxy manager), UPnPCast (modern DLNA/UPnP casting for Android).

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.

  • servo#41512 — Servo renders a space between a float and the text after it, because block-leading collapsible whitespace survives float extraction. Our engine drops whitespace-only leaves at a run's edges before layout, so the same repro measures a 0px float-to-text gap (a 4px control proves one real space would show); no patch needed, our side already behaves (d4906aa).
  • servo#38320 — Servo collapses a min-content flex container holding floats. They need to know what to copy from Chrome; our item-level measurement gives exactly 200px — both 100px floats contribute side by side, unfragmented. The probe also surfaced a gap in our engine (no width sizing keywords), which shipped the same day (7a51551); the follow-up closes the loop with container-level numbers: we land at 100px (taffy's widest-item wrap min-content), same as blitz, vs Chrome's 200px — the divergence lives below us, in taffy itself.
  • obscura#767 — a flex deferral cycle could sample a calc() width twice and ship the wrong number. We built calc as parse-time folding (pure-px collapses immediately, the exact case their instrumentation exposed) plus one post-layout repair pass that resolves the mixed form against the settled containing block and replaces it — no expression left to re-evaluate, so the double-sampling state cannot exist (d4906aa).
  • obscura#764 — a floated dropdown came out over-wide. Our matrix split the symptom in two: hidden content was innocent, source indentation whitespace was not. The fix drops whitespace-only leaves at a run's edges before shrink-to-fit measures it; whitespace-source and compact markup now measure identically, closing both the +15 delta and the +7 adjacency residual (d4906aa).
  • obscura#777 — CDP setUserAgentOverride parsed a userAgent but silently dropped acceptLanguage, so a locale override could never reach the wire header or navigator.language. Both CDP spellings now apply each sent field independently (locale-only leaves the UA alone), moving both HTTP transports and the live persona — while never re-pinning the process-global ICU default, which stays at isolate creation to avoid cross-isolate contamination (a15f7a0).
  • obscura#769 — rustls ships zero TLS 1.2 CBC cipher suites, so CBC-only legacy servers die at ClientHello while every browser connects fine. Reproduced on cbc.badssl.com; our robots.txt gate now takes one final ride on the BoringSSL transport — same honest User-Agent, different cipher shelf (62ad068).
  • obscura#779 — CDP RemoteObject contradicted itself for primitives: value was a string copy of description, undefined collapsed into null, and handles were minted for everything. Fixed all four shapes with CDP-level tests — and the tighter contract flushed out a latent bug where the handle path read its metadata from the wrong value (1b864eb).
  • obscura#541 — number RemoteObjects now spell like Chrome (2, not 2.0) (4760524).
  • modelcontextprotocol#3305 — the browser-automation capability contract discussion; our evidence-first session_click response (8712c14) came out of that thread.
  • blitz#750 — inline baseline alignment; we port the same semantics as a post-layout per-line shift — a different architecture reaching the same rendering.

Every issue I report, I arrive with a repro and a fix already running in our build.

Popular repositories Loading

  1. UPnPCast UPnPCast Public

    🚀 Modern Android DLNA/UPnP casting library - Clean replacement for discontinued Cling project

    Kotlin 30 6

  2. aginx aginx Public

    Agent Protocol — access Agents as easily as visiting a website

    Rust 24 7

  3. aginxbrowser aginxbrowser Public

    The browser built for AI agents — fetch live pages as markdown, render JS/SPAs with built-in V8, take screenshots without Chromium, meta-search 5 engines, and drive interactive login sessions. One …

    Rust 12 1

  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. ProxyMaster ProxyMaster Public

    🚀 Smart Chrome proxy manager - Modern replacement for SwitchyOmega with auto-rules and performance monitoring

    JavaScript 5 2

  6. opencarrier opencarrier Public

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

    Rust 3 1