⚠️ Archived. This repository is no longer maintained. Development has moved to the NavLink organization:
- Server (arbiter, control, exit): https://github.com/navlink-net/tunnelcat-server
- Client (Windows/macOS/Linux/Android/iOS): https://github.com/navlink-net/tunnelcat-client
- SDK (Python/Kotlin/C#/Swift): https://github.com/navlink-net/tunnelcat-sdk
Build your own client on top of tunnelcat-core: language adapters (Python, Kotlin, C#, Swift) that spawn a small local daemon and drive it over JSON-RPC, plus a mock control/exit server so you can develop and test without any real credentials or network access.
go build -o tunneld ./cmd/tunneld
go run ./cmd/mockserver &
cd sdk/csharp/examples/Basic && dotnet runThis logs in (against the mock — no real credentials needed), opens a local
SOCKS5 proxy, checks its status, and disconnects — the same
connect→status→disconnect flow every adapter follows. Swap sdk/csharp for
sdk/python or sdk/kotlin's example once you have the matching toolchain
(see docs/sdk/<language>.md).
cmd/tunneld— the subprocess every non-iOS adapter drives: wraps tunnelcat-core'sAuthenticator/TunnelDialer/SOCKS5Serverbehind a duplex JSON-RPC protocol over a local Unix domain socket. Seedocs/IPC.md.cmd/mockserver— a local mock control/exit implementing just enough of tunnelcat-core's wire protocol (seedocs/PROTOCOL.md) to test connect/disconnect/data-relay with zero real credentials.cmd/lib-ios— iOS-only cgoc-archiveexport (iOS forbids subprocesses, so this is linked directly into an app/extension instead of spawned).sdk/python,sdk/kotlin,sdk/csharp— thintunneldclients (subprocess + Unix socket JSON-RPC).sdk/swift/macOS— same shape as the above three.sdk/swift/ios— linkscmd/lib-iosdirectly instead.docs/—PROTOCOL.md(the wire format, for anyone building a compatible server or a client in an unlisted language),IPC.md(tunneld's own contract), and one quickstart per language underdocs/sdk/.
Connect/status/disconnect/reconnect verified end-to-end through
cmd/tunneld + cmd/mockserver for the Go test client and the C# adapter
(the example above). Python, Kotlin, and Swift adapters are implemented
against the same protocol but were not live-tested on this development
machine (no working AF_UNIX in the available Python builds; no
Kotlin/Swift toolchain installed) — see each docs/sdk/*.md for specifics.
Apache License 2.0, matching tunnelcat-core — see LICENSE.