MT

MTProto Proxy Architecture

An architectural guide for a Zig-based MTProto proxy, detailing its event-driven networking core and relay logic.

Install

mkdir -p .claude/skills/mtproto-proxy-architecture && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14135" && unzip -o skill.zip -d .claude/skills/mtproto-proxy-architecture && rm skill.zip

Installs to .claude/skills/mtproto-proxy-architecture

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Current architecture and design rules for the Linux epoll-based Zig MTProto proxy.
82 charsno explicit “when” trigger
Advanced

Key capabilities

  • Handle socket I/O with a single-threaded network core
  • Parse TLS ClientHello records incrementally
  • Validate TLS-auth HMAC and SNI
  • Build and send fake ServerHello messages
  • Resolve routes to direct DC or MiddleProxy
  • Perform C2S and S2C relay pipeline transformations

How it works

The proxy accepts client sockets, incrementally parses TLS and MTProto handshakes, validates security parameters, resolves routing, and then transforms and relays traffic between the client and the destination.

Inputs & outputs

You give it
Client socket connection with TLS and MTProto obfuscation handshake
You get back
Relayed MTProto traffic between client and DC or MiddleProxy

When to use MTProto Proxy Architecture

  • Reviewing proxy architecture
  • Configuring proxy binaries
  • Debugging relay pipelines
  • Deploying MTProto infrastructure

About this skill

MTProto Proxy Architecture (Current)

This project is a production MTProto proxy in Zig with FakeTLS fronting, active anti-replay protection, and Linux-first deployment.

Build Artifacts

The project produces two binaries via build.zig:

BinarySourceInstall PathPurpose
mtproto-proxysrc/main.zig/opt/mtproto-proxy/mtproto-proxyThe proxy server
mtbuddysrc/ctl/main.zig/usr/local/bin/mtbuddyInstaller & control panel (TUI)

Cross-compile for production: make build (or zig build -Doptimize=ReleaseFast -Dtarget=x86_64-linux -Dcpu=x86_64_v3).

Runtime Model

  • Single-threaded network core: one Linux epoll event loop handles socket I/O.
  • No thread-per-connection: connection handling is state-machine driven.
  • Connection slots are allocated lazily and reused.
  • Per-connection heavy buffers are on-demand, not permanently embedded in idle slots.

Primary file: src/proxy/proxy.zig.

Core Flow

  1. Accept client socket (non-blocking).
  2. Parse TLS ClientHello record header/body incrementally.
  3. Validate TLS-auth HMAC.
  4. Validate SNI against configured tls_domain.
  5. Build/send fake ServerHello (+ optional split/desync behavior).
  6. Read 64-byte MTProto obfuscation handshake.
  7. Resolve route: direct DC or MiddleProxy route.
  8. Enter relay mode (C2S/S2C transform pipeline).

Relay Pipeline

C2S

  • TLS unwrap
  • client AES-CTR decrypt
  • transport encapsulation:
    • direct DC: AES-CTR encrypt for DC
    • MiddleProxy: RPC_PROXY_REQ framing + CBC layer

S2C

  • transport decapsulation/decrypt
  • client-side AES-CTR encrypt (unless fast-mode path)
  • TLS application record wrapping

MiddleProxy

  • Runtime path is non-blocking and event-loop integrated.
  • Legacy blocking handshake helpers were removed.
  • Endpoint/secret metadata refresh is periodic.

Anti-Replay

  • Handshake digest is validated with timestamp skew window.
  • Replay cache key uses canonical HMAC value from validation path.

Message Queue Strategy

  • Write path uses chained blocks + writev flush.
  • Queue head uses index progression (not repeated orderedRemove(0) hot-path shifts).

mtbuddy (Installer & Control Panel)

Source tree: src/ctl/. Interactive TUI with raw terminal mode, arrow-key navigation, and Unicode box-drawing.

Key modules:

ModulePurpose
main.zigCLI arg dispatch + interactive menu
tui.zigTerminal UI engine (raw mode, rendering)
install.zigFresh proxy installation
update.zigSelf-update from GitHub releases
tunnel.zigAmneziaWG tunnel + network namespace setup
dashboard.zigMonitoring dashboard installer
recovery.zigService recovery & masking health
uninstall.zigClean uninstall
i18n.zigEnglish / Russian localization

Deployment Layout (Server)

/opt/mtproto-proxy/
├── mtproto-proxy          # proxy binary
├── config.toml            # runtime configuration
├── env.sh                 # optional env vars (TAG, etc.)
└── monitor/               # dashboard assets (optional)

/usr/local/bin/mtbuddy     # installer/control binary
/etc/systemd/system/mtproto-proxy.service

Platform Scope

  • Linux-only runtime target.
  • macOS is supported for development/cross-compile, not for production runtime.

Design Principles

  • Keep the hot path non-blocking.
  • Favor explicit state transitions over hidden control flow.
  • Keep security checks in the handshake path strict and cheap.
  • Avoid stale parallel implementations of the same protocol path.

Limitations

  • Linux-only runtime target

How it compares

This proxy uses a single-threaded epoll network core and state-machine driven connection handling for Linux performance, unlike traditional thread-per-connection models.

Compared to similar skills

MTProto Proxy Architecture side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
MTProto Proxy Architecture (this skill)04moNo flagsAdvanced
domain-cloud-native16moNo flagsAdvanced
simulator-management06moNo flagsIntermediate
senior-devops77moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry