No account for you or the people you share with. Give someone a link to one service on your machine, for as long as you choose, and revoke it without touching anyone else.
Theia is swoosh, the command-line program that does this, and the Rust libraries it is built from. swoosh reaches your machines by their public keys, wherever they are, across home routers and NATs.
A machine serves what you name: a shell, a folder that takes files, a local port, or a website it fetches for you. Your own machines get in. Anyone else needs a link from you, unless you open the service to everyone.
curl -fsSL https://raw.githubusercontent.com/theia-hq/swoosh/main/scripts/install.sh | shPrebuilt for x86_64 and aarch64 Linux and Apple Silicon macOS. The script checks the download's SHA-256 checksum before it installs. The binaries are also on the releases page.
Experimental: the commands, the wire protocol and the key formats change between releases. Not for production use yet.
Docs: Getting started · Share one service · Keys · All docs
Each library below has its own repository and works without swoosh.
- bifrost: Opens a byte-stream to a machine identified by its public key, wherever it is on the internet, across NATs, without knowing its address. In swoosh, it makes every connection between machines, over iroh by default.
- nauthy: Capability tokens you can revoke with no server, rooted at one ed25519 key you hold. In swoosh, it decides who gets in.
- tightbeam: A node addressed by its public key serves named services behind one gate. In swoosh, it serves each service you name.
- services: Four services you can embed: fetch, measure, sshh and transfer.
In swoosh, they are the website fetch,
pingandspeed, the shell, and the folder that takes files. - keystore: Stores one ed25519 secret key in one file, plain or encrypted. In swoosh, it keeps each key on disk.
- quirk: A QUIC-style transport over UDP, written from scratch to learn how one works. In swoosh, it is a transport you can choose instead of iroh.
MIT OR Apache-2.0.