internal/tailcat/UPSTREAM.md
This directory vendors the networking core of
tailscale/tailcat at commit
c04c5afee401df40e620db8ae108e957ae07bcd9 (2026-08-27).
Imported upstream files:
LICENSEdisco.gopickregion.gopickregion_js.gotailcat.gowire.goexport_test.gotailcat_test.gowire_test.goThe CLI, SSH support, README embedding, web demo, image, Nix files, module files, and repository configuration are intentionally omitted. Croc uses the Tailcat networking and wire layers directly and does not expose Tailcat's standalone wire protocol.
tailcat.go: Server.StartContext is a minimal variant of Server.Start
that lets croc's coordinated 30-second setup deadline cancel DERP-map
discovery. Start retains upstream behavior by calling it with a background
context. Its package overview omits the standalone Tailcat SSH-server claim,
because croc does not import that CLI integration.croc_authorization.go: exposes the deterministic Tailcat address for a node
key so croc can bind an authenticated invitation role to its tunnel source,
and adds Server.RemoveAllowedClient so one-time client keys can be revoked.croc_status.go: adds a client status accessor for direct/DERP path
transitions and final byte reporting.All other imported source and test files are unchanged. SOURCE_HASHES.sha256
records SHA-256 hashes of the exact upstream files before the local patch.
The resulting croc-patched tailcat.go has SHA-256
897b2a9a03be97cbd5a55009b158b4a54cd161cc0552438574dbc52e277718bd.
Croc deliberately uses stable tailscale.com v1.102.3 instead of Tailcat's
pre-release Tailscale pseudo-version. The complete imported upstream test suite
passes with that stable release. The gVisor version remains Tailcat's pinned
v0.0.0-20260224225140-573d5e7127a8.
LICENSE.SOURCE_HASHES.sha256 from the unmodified upstream files.Server.StartContext and package-comment
changes, and keep croc-only additions in croc_*.go where possible.go test ./internal/tailcat ./src/tailcattransport, the focused race
tests, go test ./..., and croc's release cross-build matrix.