tailscale/tailcat

like netcat, but over Tailscale's data plane, without Tailscale's control plane

Go★ 9,548+256 that day#7 on trending

Analyzed November 14, 2026 at e00cdde (main) with jscpd v5 in 0.8s.

C55/100
Project health22,136 lines of code (M)
Duplication78
3.1% in go, c-header, javascript, c, bash, nix
Dead coden/a
the languages dead code reads are under 5% of the code
Complexity39
72.4%

The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.

0.7%duplicated code · 93 of 13,308 lines
9clones in code
43code files of 100 scanned
2.81%duplicated over all files · 65 clones

Most complex files

Dead code 0% unused · 0 findings

No dead code found — everything here is reachable.

The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code.

Largest clones in the code

  • 19 lines in 2 placesgo131 tokens
    652sys := &lb.sys
    653bus := eventbus.New()
    654sys.Set(bus)
    655sys.Set(health.NewTracker(bus))
    656
    657netMon, err := netmon.New(bus, func(format string, args ...any) {
    658    logf(format, args...)
    659})
    660if err != nil {
    661    lb.Close() // closes the subsystems started so far
    

    First 10 of 19 lines.

  • 11 lines in 2 placesgo90 tokens
    148func tc_conn_read(id C.tc_handle, token C.tc_token, ptr unsafe.Pointer, size C.size_t, count *C.size_t, err **C.char) C.int32_t {
    149    return guard(err, func() error {
    150        if count == nil {
    151            return capi.ErrArgument
    152        }
    153        *count = 0
    154        b, err := buffer(ptr, size)
    155        if err != nil {
    156            return err
    157        }
    

    First 10 of 11 lines.

  • 11 lines in 2 placesgo88 tokens
    2338func (c *Client) DialTCP(ctx context.Context, ap netip.AddrPort) (net.Conn, error) {
    2339    if err := c.up(ctx); err != nil {
    2340        return nil, err
    2341    }
    2342    if ap.Addr().Is4() {
    2343        a := nat64PrefixBytes
    2344        a4 := ap.Addr().As4()
    2345        copy(a[12:], a4[:])
    2346        ap = netip.AddrPortFrom(netip.AddrFrom16(a), ap.Port())
    2347    }
    

    First 10 of 11 lines.

6 more
Largest clones over all files, tests and data included
By format, code only
FormatFilesLinesClonesDuplicated linesDuplication
go4012,5169930.74%
c-header1407000%
javascript1344000%
bash141000%
By format, all files
FormatFilesLinesClonesDuplicated linesDuplication
go7721,302646783.18%
yaml64231112.6%
markdown71,545000%
c-header1407000%
javascript1344000%
bash3188000%
go-module1113000%
c266000%
markup163000%
nix138000%

Trending appearances

DayRankStarsFilesLinesClonesAll filesCodeHealthCommit
Nov 14, 2026#79,548 (+256)10024,489652.81%0.7%C 55e00cdde

Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.