Skip to content
View Rerowros's full-sized avatar
👟
👟

Highlights

  • Pro

Block or report Rerowros

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
Rerowros/README.md
Rerowros — Iaroslav, software engineer

Telegram README in Russian

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.

Activity over the last 12 months: contributions, streaks, merged PRs to other repos

Apps

BadVPN for Android
Screenshots · connect-time benchmark vs ClashFest and INCY

Android release

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.

Home screen, VPN on Connection modes Whitelist mode Light theme

Tap to first request through the VPN: BadVPN 1.1.5 0.85 s, BadVPN 1.1.4 1.35 s, ClashFest 1.56 s, INCY 1.56 s

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.

BPN for Windows
How it's built

Windows release

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.

Under the hood

Rerowros/mihomo — network core fork
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.
REALITY compatibility: upstream mihomo fails on Xray 26.7.28 and 26.9.9, the fork connects on all three XHTTP upload at 150 ms RTT: upstream 1.8–2.4 Mbit/s, fork 11.5–13.8 Mbit/s
BPN — the service behind the apps
Architecture diagram · what's interesting in the backend
How BPN fits together: Telegram bot and Mini App, backend, VPN panel, clients, front node, exit node

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

Open source

Nemu-x/ClashFest — core contributor
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:

  • Wi-Fi ↔ LTE failover that keeps DNS and the underlying network consistent (#154)
  • a mihomo config layer that preserves comments, with native Go validation (#29) and a YAML diff preview (#13)
  • trust-boundary hardening (#171, #172) and APK update verification (#158)
  • the Material 3 redesign (#3)
PasarGuard — contributor
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)

Projects

tg-recall
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.

Pinned Loading

  1. Nemu-x/ClashFest Nemu-x/ClashFest Public

    Forked from MetaCubeX/ClashMetaForAndroid

    A rule-based tunnel for Android.

    Kotlin 224 5

  2. tg-recall tg-recall Public

    Local-first Telegram archive for AI agents: SQLite FTS5 search with tg:// citations via CLI and a read-only MCP server

    Python 3 1

  3. badvpn-routing badvpn-routing Public

    BadVPN Mihomo routing rules and subscription template

    Python

  4. mihomo mihomo Public

    Forked from MetaCubeX/mihomo

    A simple Python Pydantic model for Honkai: Star Rail parsed data from the Mihomo API.

    Python

  5. PasarGuard/panel PasarGuard/panel Public

    PasarGuard | Unified GUI Censorship Resistant Solution

    TypeScript 2.7k 645

  6. PasarGuard/node PasarGuard/node Public

    PasarGuard Node | Decentralized Censorship-Resistant Access Layer

    Go 328 168