DeepSeek wrote a VPN obfuscation plugin in one afternoon. The interesting part is not the VPN.

A free DeepSeek v4 flash session produced a 410-line SIP003 HTTP/2 obfuscator for Shadowsocks with zero hand-written Go. The story is what coding agents already know about protocol plugins, not circumvention hype.

SaifullahSaifullah
5 min read
DeepSeek wrote a VPN obfuscation plugin in one afternoon. The interesting part is not the VPN.

AlphaSignal flagged a headline that sounded like clickbait: DeepSeek built a custom VPN obfuscation plugin in under an hour. The real write-up, from Max Lv's case study on SIP003 and a decade of open-source networking, is more interesting and more honest.

A non-SOTA, free-tier model produced a working SIP003 plugin that wraps Shadowsocks traffic in HTTP/2 frames. Total cost: $0 for inference. About 2.5 hours wall clock including debugging and an end-to-end integration test. The author did not hand-write a single line of Go.

That is not a flex about VPNs. It is a flex about what agentic coding already internalized from public repos.

What SIP003 actually is

Shadowsocks launched in 2012 with two ideas: decentralized deployment (everyone runs their own server) and protocol-level customization (plugins can change how traffic looks on the wire). VPS prices made the first idea reachable. The second stayed expert-only for years.

SIP003 is the plugin interface. A plugin runs as a local tunnel between the Shadowsocks client and the remote endpoint. Configuration arrives through environment variables like SS_REMOTE_HOST, SS_LOCAL_HOST, and optional SS_PLUGIN_OPTIONS.

VariableRole
SS_REMOTE_HOST / SS_REMOTE_PORTWhere the plugin forwards encrypted traffic
SS_LOCAL_HOST / SS_LOCAL_PORTWhere Shadowsocks talks to the plugin locally
SS_PLUGIN_OPTIONSExtra args (mode, host, path) as a semicolon string

The ecosystem already ships reference plugins: v2ray-plugin, obfs variants, kcptun, and others. Writing a new one used to mean reading RFC 7540, understanding HPACK, and debugging wire-level framing by hand.

SIP003 plugin tunnel between Shadowsocks client and remote server with HTTP/2 framing layer

What the agent actually built

The experiment used OpenCode as the code agent and deepseek-v4-flash-free through OpenRouter. Not Opus. Not GPT-5. The budget tier.

Starting prompt (paraphrased): write a SIP003 plugin that obfuscates Shadowsocks traffic as HTTP/2, compatible with shadowsocks-rust.

The model chose golang.org/x/net/http2, built HEADERS + DATA framing, and structured client/server modes. Output landed in the sip003-http2-obfuscator repo: roughly 410 lines of Go, one non-standard dependency, plus integration tests against shadowsocks-rust v1.24.

On the wire, traffic looks like ordinary HTTP/2: connection preface, SETTINGS, HEADERS with :method: POST, :path, :authority, then DATA frames. That is the obfuscation goal. DPI sees HTTP/2, not a bespoke Shadowsocks fingerprint.

The agent hit two real bugs and fixed them from logs:

  1. SIP003 env var direction (client vs server semantics for local/remote host ports)
  2. Concurrent HTTP/2 frame writes (needed a serial framer so frames do not interleave on the wire)

No human Go edits in the session. That is the part worth copying if you build internal tools, not the specific use case.

What models already "know" here

Lv's table of internalized knowledge is the thesis. Modern code models have seen shadowsocks AEAD, SIP003, VLESS, Trojan, Hysteria2, systemd units, certbot flows, and years of issue threads. For them, "implement a SIP003 plugin" sits next to "implement an HTTP middleware" in difficulty.

That changes the economics of custom protocol surfaces:

Before agentsWith a decent agent + free model
Weeks for a specialistHours for a motivated builder
One shared v2ray/xray fingerprintMany cheap private variants
Docs as barrierDocs as training data

I am not claiming a homegrown plugin beats mature stacks on performance or anti-detection. v2ray, xray, and hysteria still win on engineering maturity. The shift is who can afford a custom variant at all.

Case 1 from the same post: deploy in 10 minutes

The lighter demo in Lv's write-up is deployment, not plugin authorship. Prompt an agent on a fresh VPS to install shadowsocks-rust, wire a SIP003 HTTP/2 plugin, open 443, write systemd, export a client config. Non-technical users still need a VPS and tolerance for English CLI output. But "read the shadowsocks wiki for a weekend" is no longer the gate.

If you run applied AI for clients, notice the pattern: high-friction domains with excellent public artifacts (protocol specs, reference impls, decade of GitHub) are where mid-tier models punch above their benchmarks.

Should you care if you are not building VPN tools?

Yes, if you ship agents against legacy protocols, hardware interfaces, or niche file formats. The same dynamic applies:

  • ODBC drivers nobody wants to maintain
  • Proprietary EDI variants with PDF specs online
  • Old industrial SCADA dialects documented in forum archives

The model is not inventing physics. It is compiling patterns it has read a thousand times into a new directory with tests. Your job is scoping, threat modeling, and verification, not typing every line.

For regulated clients I would still run formal review, fuzz the tunnel, and treat "agent wrote it" as a draft, not a release. The SIP003 repo itself says "do not use in real world use cases." Good disclaimer. The research value stands.

Practical checklist if you try this pattern

  1. Pick a spec with a narrow interface (SIP003 env vars, not "build me a secure network")
  2. Name the test harness (shadowsocks-rust integration test, not "it compiles")
  3. Use the cheapest model that passes eval before burning Opus tokens
  4. Log wire-level failures so the agent can iterate on framing bugs
  5. Treat output as MIT-licensed draft code until a human signs threat model + ops runbook
Agent loop from prompt to SIP003 plugin with integration test gate before merge

What I would not copy from the headline

AlphaSignal's "40 minutes" is marketing compression. The documented session was ~2.5 hours with a free flash model and real debugging. Still fast. Not magic.

Also skip sponsor-adjacent framing. This is not an argument to route production traffic through random plugins. It is an argument that bespoke protocol adapters just got cheaper, and that changes who can maintain them.

Takeaway

DeepSeek did not discover VPN obfuscation. It recombined a decade of open-source networking notes into a small Go binary because the training data and the agent loop finally made that recombination cheap.

If you are building agents for unglamorous integration work, that is the lesson. Pick domains with great public specs, tight interfaces, and tests you can run without a staging datacenter.

Want help scoping agent workflows where the spec is messy but the business value is real? Book a free discovery call.

Share this post

Related posts