Signal, in your terminal.
faro is an unofficial, open-source Signal client for people who live in tmux and SSH. It’s keyboard-driven, it looks good, and it never freezes.
▶ See it here, no install
brew install harababurel/tap/faro
Unofficial · not affiliated with Signal · AGPL-3.0 · v0.1.10 (2026-11-05)
faro on screen
Swipe for palette and themes
Ctrl+P palette · Alt+J/K chats · ↑ pick a message · + react · Enter send
or Ctrl+P in faro to preview them
Nothing you type leaves your browser.
faro is a keyboard app. Open this page on a computer to try the live demo.
Why faro
Never freezes
Network, decryption and storage run off the UI thread, so typing stays instant while messages flood in.
Everything is one keystroke away
Ctrl+P opens one palette for chats, settings, themes, commands and search, and shows the key for each.
Made for SSH and tmux
Copy over SSH (OSC 52), unread count in the tmux title, read receipts that know whether you’re looking, emoji that line up even through mosh.
A chat list you control
Pin, mute (with durations), hide, archive, or show only an allowlist.
Looks the part
Bubbles or IRC layout, 35+ themes with live preview, inline images (kitty, sixel, iTerm2 or half-blocks), voice notes with waveforms.
Install
macOS / Linux (Homebrew)
brew install harababurel/tap/faro
Arch Linux (AUR)
yay -S faro-bin
or faro to build the release from source, faro-git for the latest commit; any AUR helper works.
Debian / Ubuntu (.deb)
curl -LO https://github.com/harababurel/faro/releases/latest/download/faro_amd64.deb sudo apt install ./faro_amd64.deb
faro_arm64.deb on ARM.
FreeBSD
pkg install faro
The net-im/faro port, maintained by the FreeBSD community.
Prebuilt binary
macOS (Apple silicon, Intel) and Linux (x86_64, ARM64) archives with checksums on the releases page.
From source
git clone https://github.com/harababurel/faro
cd faro
cargo build --release # binary: target/release/faro
You need Rust via rustup; the exact toolchain is pinned in the repo and rustup installs it on the first build. Building also needs the protobuf compiler and a C toolchain for libsignal and SQLCipher:
| OS | Packages |
|---|---|
| Arch | sudo pacman -S protobuf cmake clang pkgconf openssl |
| Debian/Ubuntu | sudo apt install protobuf-compiler cmake clang pkg-config libssl-dev |
| macOS | brew install protobuf cmake |
First run
Works the same whichever way you installed faro. Try it before linking anything:
faro demo # try it with fake contacts first faro link # then link it: scan the QR code in Signal › Settings › Linked devices faro
How it works, and what to trust
- It’s a linked device, like Signal Desktop. Your phone stays your primary device. faro links with a QR code (
faro link). - faro doesn’t implement any cryptography. It talks to Signal through presage, which builds on libsignal, Signal’s own protocol library.
- Your data stays on your machine. Keys and history are in
~/.local/share/faro, readable only by you (0600). They are not encrypted at rest yet; that’s planned. - No telemetry. faro talks only to Signal’s servers. The exceptions are remote voice transcription and update checks, both off by default. Logs never contain message text or phone numbers.
What it doesn’t do (yet)
- No voice or video calls, no stories.
- It can’t be your only device: you need Signal on a phone.
- No Windows.
- History from before linking isn’t transferred yet.
- Data isn’t encrypted at rest yet.
- It’s unofficial: Signal doesn’t support it, and a Signal server change can break it until faro catches up.
A few keys
| Key | What |
|---|---|
| Ctrl+P | Command palette |
| Alt+J/K | Next / previous conversation |
| ↑↓ | Select older / newer message |
| + | React |
| r | Reply |
| Ctrl+F | Search messages |
| m | Mute or unmute |
| Ctrl+P › Themes | Switch theme, with live preview |
| ? | Keybindings |
| Ctrl+Q | Quit (or Ctrl+C twice) |
All keys and what they do — and every key can be rebound in the config file.
FAQ
Is this an official Signal app?
No. faro is an independent, open-source project. It isn’t affiliated with or supported by Signal.
Do I still need my phone?
Yes. faro links to your account as a secondary device, like Signal Desktop. Your phone stays the primary device.
Is it safe?
faro doesn’t do its own cryptography. It uses presage, which builds on libsignal, Signal’s own library. Messages are end-to-end encrypted exactly as in other Signal clients. Your history and keys stay on your machine, readable only by you. They’re not encrypted at rest yet. The code is AGPL: read it.
Can Signal block me for using it?
Unlikely, but there’s no promise. faro links like Signal Desktop does, and other unofficial clients such as signal-cli have done the same for years. Signal doesn’t support them, though: a change on their side can break faro until it’s updated. Your phone keeps working either way.
Which terminals work?
Any modern one. It’s built and tested in kitty, inside tmux and over SSH or mosh; Ghostty, WezTerm, iTerm2, foot and Alacritty should work too. Rounded bubbles need a font or terminal with Unicode 16 block glyphs; otherwise faro draws bars.
Does it support calls / stories / Windows?
Not today — see what it doesn’t do (yet).
Can I change the keys and colours?
Yes. Every key can be rebound in ~/.config/faro/config.toml. 35+ themes are built in, and you can drop in your own (OpenCode’s theme format).
Who are the people in the demo?
Made-up coworkers at a paper company: an affectionate parody. They’re fake, and nothing you type in the demo leaves your browser.
Is the demo really faro?
Yes. It’s the same Rust code compiled to WebAssembly, with a fake backend instead of Signal.
Does this site track me?
No cookies and no third-party scripts. We count visits with Plausible, which runs on our own server, stores no personal data and uses no cookies. Details in the privacy policy.