{"id":48908303,"url":"https://github.com/tailscale/tailscale-rs","last_synced_at":"2026-04-16T22:01:15.674Z","repository":{"id":351556095,"uuid":"1202323084","full_name":"tailscale/tailscale-rs","owner":"tailscale","description":"Rust implementation of Tailscale (preview, experimental)","archived":false,"fork":false,"pushed_at":"2026-04-15T14:59:31.000Z","size":3220,"stargazers_count":5,"open_issues_count":36,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-15T15:14:42.944Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tailscale.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-05T22:23:55.000Z","updated_at":"2026-04-15T14:41:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tailscale/tailscale-rs","commit_stats":null,"previous_names":["tailscale/tailscale-rs"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/tailscale/tailscale-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Ftailscale-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Ftailscale-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Ftailscale-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Ftailscale-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tailscale","download_url":"https://codeload.github.com/tailscale/tailscale-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailscale%2Ftailscale-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31905895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"ssl_error","status_checked_at":"2026-04-16T18:21:47.142Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-16T22:00:41.702Z","updated_at":"2026-04-16T22:01:15.654Z","avatar_url":"https://github.com/tailscale.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# tailscale-rs\n\n[![docs.rs](https://img.shields.io/docsrs/tailscale)](https://docs.rs/tailscale)\n[![crates.io version](https://img.shields.io/crates/v/tailscale)](https://crates.io/crates/tailscale)\n\nhttps://tailscale.com\n\n`tailscale-rs` is a work-in-progress Tailscale library written in Rust, with language bindings to\nC, Elixir, and Python.\n\n\u003e [!CAUTION]\n\u003e This software is unstable and insecure.\n\u003e\n\u003e We welcome enthusiasm and interest, but please **do not** build production software using these\n\u003e libraries or rely on it for data privacy until we have a chance to batten down some hatches\n\u003e and complete a third-party audit.\n\u003e\n\u003e See [Caveats](#caveats) for more details.\n\n## Getting Started\n\nThe following instructions are for Rust! For other languages, see the language-specific README:\n- [C](ts_ffi/README.md)\n- [Elixir](ts_elixir/README.md)\n- [Python](ts_python/README.md) \n\nAdd this dependency line to your `Cargo.toml`:\n\n```toml\n[dependencies]\ntailscale = { version = \"0.2\" }\n```\n\nExamples of using the `tailscale` crate can be found in [`examples/`](examples/README.md).\n\nFor instructions on how to run tests, lints, etc., see [CONTRIBUTING.md](CONTRIBUTING.md). For the high-level architecture and\nrepository layout, see [ARCHITECTURE.md](ARCHITECTURE.md).\n\n### Code sample\n\nA simple UDP client that periodically sends messages to a tailnet peer at `100.64.0.1:5678`:\n\n```rust\nuse core::{\n    time::Duration,\n    net::Ipv4Addr,\n    error::Error,\n};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c(), Box\u003cdyn Error\u003e\u003e {\n    // Open a new connection to tailscale\n    let dev = tailscale::Device::new(\n        \u0026tailscale::Config {\n            key_state: tailscale::load_key_file(\"tsrs_state.json\", Default::default()).await?,\n            ..Default::default()\n        },\n        Some(\"YOUR_AUTH_KEY_HERE\".to_owned()),\n    ).await?;\n\n    // Bind a UDP socket on our tailnet IP, port 1234\n    let sock = dev.udp_bind((dev.ipv4().await?, 1234).into()).await?;\n\n    // Send a packet containing \"ping\" to 100.64.0.1:5678 once per second\n    loop {\n        sock.send_to((Ipv4Addr::new(100, 64, 0, 1), 5678).into(), b\"ping\").await?;\n        tokio::time::sleep(Duration::from_secs(1)).await;\n    }\n}\n```\n\n## Caveats\n\nThis software is still a work-in-progress! We are providing it in the open at this stage out of a\nbelief in open-source and to see where the community runs with it, but please be aware of a few\nimportant considerations:\n\n- This implementation contains unaudited cryptography and hasn't undergone a comprehensive security\n  analysis. Conservatively, assume there could be a critical security hole meaning anything you send\n  or receive could be in the clear on the public Internet.\n- There are no compatibility guarantees at the moment. This is early-days software \u0026mdash; we may\n  break dependent code in order to get things right.\n- We currently rely on DERP relays for all communication. Direct connections via NAT holepunching\n  will be a seamless upgrade in the future, but for now, this puts a cap on data throughput.\n- The `TS_RS_EXPERIMENT` environment variable is required to be set to `this_is_unstable_software`\n  for all code linked against `tailscale-rs`; this includes Rust, C, Elixir, and Python code. We'll\n  remove this requirement after a third-party code/cryptography audit and any necessary fixes.\n\n## Versioning, Releases, and Compatability\n\nWe follow semver and aim to make a point release roughly monthly. Since we are pre-1.0, we make no\nbackwards-compatability guarantees. We are aiming to have a stable 1.0 release as soon as we can, but\nwe currently don't have a timeline.\n\n## MSRV and Edition\n\nThe current MSRV is 1.93.1. The current edition is Rust 2024.\n\n`tailscale-rs` has a rolling MSRV (Minimum Supported Rust Version) policy to support the current\nand previous Rust compiler versions, and the latest\n[edition of Rust](https://doc.rust-lang.org/edition-guide/editions/index.html).\n\nWe may lag the latest version/edition in rare cases for our dependencies to catch up and for us to\nperform any necessary fixes.\n\n## Platform Support\n\nWe support the following platforms and architectures:\n\n- Linux (`x86_64`/`ARM64`)\n- macOS (`ARM64`)\n\n## Status\n\n`tailscale-rs` is a work-in-progress - we're still rapidly iterating, fixing bugs, and adding new\nfeatures. We aim to keep this section up-to-date, but our [issue tracker](https://github.com/tailscale/tailscale-rs/issues)\nis the best way to see the latest updates.\n\n### Implemented\n\nThese are features that we currently implement:\n\n- Basics\n  - Create TCP and UDP sockets on the tailnet\n  - Communicate with peers via public DERP relays\n  - Communicate with the Tailscale Go client, `tsnet`, and `libtailscale`\n- Language support\n  - Rust API\n  - C, Elixir, and Python bindings\n\n### Coming Soon\n\nThese are features or efforts we have in the pipeline and are actively working towards, but provide\nno guarantees on timeline or completion:\n\n- Direct connections (NAT traversal, STUN, and Disco)\n- Peer lookups (addressing peers by hostname)\n- Third-party code and cryptography audit\n- Official Windows support\n\n### Unsupported\n\nThis is an incomplete list of features in the Tailscale Go client, `tsnet`, and/or `libtailscale`\nthat we currently *do not* support. We'd like to add all of these eventually! If there's something\non this list you'd like to see supported, or something _not_ on this list you're not sure about,\nplease open an issue!\n\n\u003cdetails\u003e\n\u003csummary\u003e\nUnsupported features\n\u003c/summary\u003e\n\n- Networking\n  - Peer relays\n  - Exit Nodes (either being one, or using one)\n  - MagicDNS\n  - Private DERP relays\n  - Split DNS\n  - Subnet Routers (either being one, or using one)\n- Platforms\n  - AIX\n  - Android\n  - BSDs\n  - iOS\n  - Plan9\n  - QNAP\n  - Synology DSM\n- Observability\n  - Client Metrics\n  - Endpoint Collection\n  - Device Posture Collection\n  - Log Streaming\n  - Network Flow Logs\n- Other Features\n  - Application Capabilities\n  - Automatic Key Rotation\n  - HTTPS Certificates\n  - Kubernetes\n  - Mullvad VPN\n  - Node Sharing\n  - Taildrive\n  - Taildrop\n  - Tailnet Lock\n  - Tailscale Funnel\n  - Tailscale Serve\n  - Tailscale SSH\n  - Tailscale Services\n  - Webhooks\n- Any other features not listed in \"Implemented\" or \"Coming Soon\"\n\n\u003c/details\u003e\n\n## Legal\n\nWireGuard is a registered trademark of Jason A. Donenfeld.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailscale%2Ftailscale-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftailscale%2Ftailscale-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailscale%2Ftailscale-rs/lists"}