tincan

Two cans and a string. tincan: serverless peer-to-peer voice chat for your terminal

Voice and text chat with no server in the middle. Open a room, send your friends the code it prints, and talk.

Click the terminal and type, or pressEsc gives the keyboard back.
brew tap bilalyazicioglu/tap && brew install tincan

macOS and Linux.

v0.3.2MIT licensedBuilt with Ratatui

you

DIRECT18ms

Open a room, hand out two words.

The first person to run tincan opens the room. It prints a room name and a passphrase, and that is all anyone else needs: two things short enough to read down the phone.

$ tincan host lobby --name alice
room:        lobby
passphrase:  chestnut-ferry-lens-moss

$ tincan join lobby --name bob
passphrase: ••••••••••••••••••••••••

Leave the room name out and you get a 63-character invite code instead: the host's public key, already on your clipboard. No accounts, no port forwarding, no VPN.

DIRECT18ms

Voice goes straight between you.

Whoever opens the room keeps the roster, the channels and the chat, which comes to a few hundred bytes a second. Voice never goes through them. Everyone in a channel sends Opus packets directly to everyone else as QUIC datagrams, so the host's connection is never the bottleneck.

roster and chat, through the host voice, peer to peer

A six-person room needs about 160 kbps of upload each.

DIRECT18ms

The passphrase never goes over the wire.

Both sides stretch it with Argon2id into an admission key. The host sends a fresh nonce; the guest answers with a keyed BLAKE2b MAC of it. An answer caught in transit is useless on the next connection, and nobody can make the host burn Argon2 work by knocking.

The passphrase decides who gets in. Keeping what is said private is QUIC's job: every connection is encrypted end to end, and each side is checked against its public key.

RELAY84ms

When the direct path fails, the string sags.

Two machines behind routers usually punch through to each other. When they can't, the traffic goes through a relay. The relay forwards packets it has no key for. It can see which two keys are talking, when and how much, but never what is said.

In tincan, the line between the channel list and the chat behaves like the one on this page. It runs taut │ when everyone is reached directly, sags ╎ through a relay, and frays ┆ when audio starts dropping. While someone talks, a pulse runs down it at the speed of the round trip, so you see a slow link before you read about it.

CHOPPY84ms

What it can't do without.

Serverless means there is no tincan server: no account, no room registry, and no copy of your conversation anywhere but on the machines having it. It doesn't mean no infrastructure. Peers find each other through the DNS and relays run by Number Zero, the company behind iroh. If those went away, new connections would stop working. Pointing tincan at your own relay is issue #136.

Being reachable also means being found. Everyone in a room learns everyone else's IP address. With a real tin-can phone, the other end knows where you are too.

DIRECT18ms

Recorded, not rendered.

The terminal at the top of this page is an imitation written for it. This is tincan itself, recorded in a real terminal.

DIRECT18ms

When Discord is blocked.

When Discord is blocked in your country, down for everyone, or filtered on a school or office network, tincan has nothing of its own to take down with it. There is no tincan domain or server address for a provider to blacklist: peers find each other through iroh's discovery service and talk directly over encrypted QUIC. A network that blocks those services, or all UDP, stops it too.

them

Where tincan fits

Built for gamers, engineers, and privacy-conscious teams who want zero-overhead, unblockable voice.

GAMING

Zero-Stutter Gaming: Save Every Frame & CPU Cycle

Heavy desktop voice apps eat gigabytes of RAM, steal CPU/GPU cycles, and cause micro-stutters in competitive games. tincan is a pure Rust binary with push-to-talk (--ptt): zero background rendering overhead and maximum FPS for your games.

RESILIENCE

ISP Bans & Censorship: No Central Servers to Block

When centralized platforms get banned by governments, schools, or workplace firewalls, tincan keeps running. With no proprietary voice servers or domain infrastructure to blacklist, peers find each other over iroh and talk directly over encrypted QUIC.

PRIVACY

True End-to-End Encryption: No Corporate Data Harvesting

Centralized platforms route voice and chat through corporate servers, retaining message histories and analyzing telemetry. In tincan, audio flows directly peer-to-peer: not even relay servers can inspect your packets, and nothing is ever stored in the cloud.

WORKFLOW

Remote Pair Programming & Terminal Workflows

Designed for engineers living in tmux, Neovim, and terminal-first setups. Jump into an instant voice room without leaving your workspace, switching desktop windows, or breaking focus.

OFF-GRID

LAN Parties, Hackathons & Air-Gapped Networks

Run seamless voice chat across local subnets and hackathons without internet access. When peers share a local network, direct mesh connections route packets with ultra-low latency and zero external dependencies.

EFFICIENCY

Metered Hotspots & Ephemeral Burner Rooms

Adaptive 48 kHz Opus audio sips just ~14 MB per hour per peer, with zero video ads or background bloat eating your mobile data. Rooms vanish the second you close the terminal, leaving zero digital footprint.

tincan, Discord and Mumble.

Discord keeps everything on its servers; Mumble and TeamSpeak need someone to run one. tincan has no server at all.

tincan compared with Discord and with TeamSpeak or Mumble
tincanDiscordTeamSpeak / Mumble
Where voice goesDirectly between peersDiscord's voice serversThe server
Server to run or rentNoneDiscord'sYours
What a network must blockiroh discovery and relays, or UDPDiscord's domainsThe server's address
AccountNoneEmail or phoneOptional
Chat history kept onThe machines in the roomDiscord's serversThe server, if enabled
ClientNative terminal app (Rust)Electron appNative desktop app
SourceOpen, MITClosedTeamSpeak closed, Mumble BSD

Questions.

Does tincan work when Discord is blocked?

Usually, yes. Blocking Discord means blocking Discord's domains and servers, and tincan has no server of its own to block. Peers find each other through iroh's public discovery service and relays, run by Number Zero, and voice goes directly between the machines over encrypted QUIC. A network that blocks those services, or all UDP traffic, stops tincan too.

Do I need an account, an email address or a phone number?

No. There is nothing to sign up for or log in to. You open a room and share either its name and a four-word passphrase, or a 63-character invite code. Each machine is known by a public key, and no copy of the conversation is kept anywhere but on the machines having it.

Is tincan encrypted?

Every connection is QUIC, encrypted between the two machines at its ends and checked against the other side's public key. Voice goes directly from peer to peer; chat and the roster go through the host, who is one of the people in the room. Relays forward packets they cannot read, though they can see which keys are talking, when and how much. Everyone in a room learns everyone else's IP address.

How good is the audio, and how much bandwidth does it use?

Voice is Opus at 48 kHz mono and 32 kbps, sent in 20 ms frames, with RNNoise noise suppression on your microphone. Suppression adds 10 ms of delay and can be turned off on the audio settings screen. A six-person room needs about 160 kbps of upload each.

Can I keep it running while gaming or coding?

Yes. tincan is a native Rust program that lives in a terminal tab, not an Electron app. Start it with --ptt for push-to-talk on F4, or --no-voice for text chat only.

Does tincan run on Windows?

macOS and Linux are where it is used day to day. A Windows build is compiled and tested in CI but has not yet been used on a real Windows machine. Try it with npx tincan-cli host, or download the zip from the latest GitHub release.

How do I install tincan and open a room?

Install it with Homebrew (brew tap bilalyazicioglu/tap && brew install tincan), Cargo (cargo install tincan-chat) or npm (npm install -g tincan-cli). Then run tincan host lobby to open a room and tincan join lobby to join it.

Is tincan free?

Yes. tincan is open source under the MIT license, and there is no paid tier, because there is no service to pay for.

Their end.

Install it, open a room, and send them the code.

brew tap bilalyazicioglu/tap && brew install tincan

macOS and Linux.