Skip to content

Latest commit

 

History

608 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tailscale-rs

tailscale-rs

crates.io CI License MSRV 1.94.1 fork of tailscale/tailscale-rs

A fork of tailscale/tailscale-rs.

tailscale-rs is a work-in-progress Tailscale library written in Rust, with language bindings to C, Elixir, and Python.

Note

This project is not associated with Tailscale Inc. — it is an independent, unofficial fork. See Legal.

Caution

This software is unstable and insecure.

I welcome enthusiasm and interest, but please do not build production software using these libraries or rely on it for data privacy until I've had a chance to batten down some hatches and complete a third-party audit.

See Caveats for more details.

Features

  • TCP and UDP sockets on the tailnet from an in-process WireGuard data plane.
  • Direct peer-to-peer connections through NAT traversal (STUN, Disco, CallMeMaybe), falling back to DERP relays.
  • MagicDNS and split DNS, fail-closed by default.
  • Using subnet routers and exit nodes (opt-in), with the exit node changeable at runtime.
  • Tailscale Serve handlers: Proxy, Text, TcpForward, Path and Redirect.
  • Tailnet Lock peer signature enforcement (partial, see SECURITY.md).
  • An optional Go-style tsnet::Server facade.
  • C, Elixir and Python bindings. Talks to the Go client, tsnet and libtailscale.

Quick start

Inside a binary crate, with Rust 1.94.1 or newer:

cargo add geiserx_tailscale --rename tailscale
TS_RS_EXPERIMENT=this_is_unstable_software cargo run

The crate is published as geiserx_tailscale and imported as tailscale, and every program linked against it needs TS_RS_EXPERIMENT set as above. A UDP client sample and the tsnet facade are in Getting started, and more in examples/.

Documentation

Legal

This project is not associated with Tailscale Inc. It is an independent, unofficial fork. "Tailscale" is a trademark of Tailscale Inc.; it is used here only to describe interoperability and the upstream project this is forked from.

WireGuard is a registered trademark of Jason A. Donenfeld.

License

BSD-3-Clause.

About

A best-effort, pure-Rust port of Tailscale's Go tsnet — embed a Tailscale node directly in your Rust app. Fork of tailscale/tailscale-rs.

Topics

Resources

Contributing

Security policy

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages