I write production software end to end: an Android app, a Windows app with a privileged Rust service, the backend and servers behind them, and the network core both apps share. In open source I'm a core contributor to ClashFest; on the side I build tools for AI agents.
Screenshots · connect-time benchmark vs ClashFest and INCY
A fork of ClashFest, where I'm a core contributor, running on my mihomo fork. One tap to connect, a separate mode for mobile networks that only allow whitelisted sites, and subscription import from Telegram or a QR code. Updates come from our own server; every APK is signed with the same key and its SHA-256 is published with the release.
The 1.1.5 speed-up came from two changes: no fixed 500 ms wait before the first config load, and no second pass over a config that was already validated.
How it's built
Windows 10/11. The Tauri UI runs unprivileged and talks over IPC to a Rust service that owns the TUN interface and runs Mihomo on my core fork. Optional zapret + WinDivert for YouTube, Discord and games. Third-party binaries (mihomo, zapret, WinDivert) are downloaded on first connect and checked by hash, and the app updates itself. 25k lines of Rust, 158 tests. The source is private; installers are public.
The 5 patches · REALITY matrix · XHTTP benchmark
The network core both apps run on: an upstream MetaCubeX/mihomo tag plus five small patches, moved to each new release by rebase. Every patch has tests and a written "remove when" condition; the REALITY and XHTTP changes are also tested against a real Xray binary (BADVPN.md).
- P1–P4, REALITY: current Xray client version, Firefox 148 / Safari 26.3 uTLS fingerprints, opt-in X25519MLKEM768. Without them current Xray servers reject the client. Upstream declined the version change (#3132) and is waiting for uTLS 1.9.0 (#3193).
- P5, XHTTP: uploads in packet-up mode are pipelined the way Xray does it, up to 8 requests in flight instead of one.
Architecture diagram · what's interesting in the backend
The service behind both apps: a Next.js + Prisma/PostgreSQL backend, a Python Telegram bot with a Mini App, a VPN panel and the nodes. Several brands run on the same backend.
- Traffic is counted on a ledger with rollover. It went live behind shadow validation, a staged rollout and fail-closed gates.
- Payments are reconciled, not taken on trust from webhooks.
- Admin actions go through an outbox, so a retry never applies twice.
- Mobile networks that only allow whitelisted destinations get front-node → exit routing.
Public pieces: badvpn-routing (Mihomo rulesets with source-checking CI) and server-checker (VPS reachability and DPI checks).
Highlights from 30 merged PRs
Open-source Android client on mihomo and the base of my own Android app. 30 merged PRs, +19.6k lines, about 15% of today's codebase:
4 merged, 4 in review
Open-source VPN panel and node.
- merged: Mihomo xHTTP subscription options (panel#509), UTC-correct API dates (panel#208), share-link fix (panel#880), WireGuard log timestamps (node#47)
- in review: per-app routing and DNS editor (panel#759), confirmed access revocation with node-sync fencing (panel#756), node lifecycle hardening (node#78), atomic node updates with rollback (scripts#25)
How it works
Syncs allow-listed chats into SQLite FTS5, with hybrid retrieval and local transcription. A hand-rolled MCP server lets AI agents search the archive and answers with tg:// links back to the source messages. Read-only by design: it cannot send, edit or mark anything as read.
- sre-agent-bench — AI agents repair a deliberately broken Ubuntu server over SSH; an external verifier checks that the fix survives SIGKILL and a reboot.
- wiki-mcp — a research wiki that agents maintain through reviewed proposal branches, served as a remote MCP server on Cloudflare Workers.
Every image here is generated from code in scripts/; the activity card is re-rendered daily by GitHub Actions.







