faro: a terminal Signal client built with Rust and ratatui
A few months ago I switched from Telegram to Signal as my main messaging app and spent some time exploring CLI/TUI options. After using gurk for a while I decided to build my own client (faro), based on my own requirements and taste (you can probably see the UI/UX inspiration from tools like btop, OpenCode CLI, neovim).
It covers all features I commonly use within Signal:
- chats, replies, reactions, edits, mentions, search
- inline images (if your terminal supports them) or halfblock rendering otherwise
- voice notes and transcription (supports local whisper models)
- quick navigation menu for everything (Ctrl+P)
- copying over SSH, pasting images from clipboard
On the Rust side, the UI is built with ratatui and the Signal protocol side uses presage (which builds on Signal's own libsignal). The browser demo at getfaro.dev is the same binary compiled to WebAssembly. The GitHub repo is public: harababurel/faro.
For setting it up with a real account, you can run faro link and link it as a secondary device just as you would with Signal Desktop or any other client.
Disclaimer: I built it with a lot of help from AI coding agents, including open-weight models running locally on my own home server. However, I designed, reviewed and tested it thoroughly. I try to always pay attention to the details, and the general direction of the project is usually informed by my day to day experience using the project.
I wrote this post myself with zero use of any LLM. I am as allergic to reading slop as everyone else these days.
I hope some of you will give it a try and maybe provide some feedback on your experience!
14 points · 3 comments
faro: an unofficial Signal client for the terminal, built for tmux and SSH
A few months ago I switched from Telegram to Signal as my main messaging app and spent some time exploring CLI/TUI options. After using gurk for a while I decided to build my own client (faro), based on my own requirements and taste (you can probably see the UI/UX inspiration from tools like btop, OpenCode CLI, neovim).
It covers all features I commonly use within Signal:
- chats, replies, reactions, edits, mentions, search
- inline images (if your terminal supports them) or halfblock rendering otherwise
- voice notes and transcription (supports local whisper models)
- quick navigation menu for everything (Ctrl+P)
- copying over SSH, pasting images from clipboard
There is a demo if you want to try it out, just run faro demo or try it out in your browser at getfaro.dev (the GitHub repo is public: harababurel/faro)
It's exactly the same binary compiled using wasm and the same demo you see in the video.
For setting it up with a real account, you can run faro link and link it as a secondary device just as you would with Signal Desktop or any other client.
Disclaimer: I built it with a lot of help from AI coding agents, including open-weight models running locally on my own home server. However, I designed, reviewed and tested it thoroughly. I try to always pay attention to the details, and the general direction of the project is usually informed by my day to day experience using the project.
I wrote this post myself with zero use of any LLM. I am as allergic to reading slop as everyone else these days.
I hope some of you will give it a try and maybe provide some feedback on your experience!
reddit.com
45 points
faro: an unofficial Signal client for the terminal, built for tmux and SSH
A few months ago I switched from Telegram to Signal as my main messaging app and spent some time exploring CLI/TUI options. After using gurk for a while I decided to build my own client (faro), based on my own requirements and taste (you can probably see the UI/UX inspiration from tools like btop, OpenCode CLI, neovim).
It covers all features I commonly use within Signal:
- chats, replies, reactions, edits, mentions, search
- inline images (if your terminal supports them) or halfblock rendering otherwise
- voice notes and transcription (supports local whisper models)
- quick navigation menu for everything (Ctrl+P)
- copying over SSH, pasting images from clipboard
There is a demo if you want to try it out, just run faro demo or try it out in your browser at getfaro.dev (the GitHub repo is public: harababurel/faro)
It's exactly the same binary compiled using wasm and the same demo you see in the video.
For setting it up with a real account, you can run faro link and link it as a secondary device just as you would with Signal Desktop or any other client.
Disclaimer: I built it with a lot of help from AI coding agents, including open-weight models running locally on my own home server. However, I designed, reviewed and tested it thoroughly. I try to always pay attention to the details, and the general direction of the project is usually informed by my day to day experience using the project.
I wrote this post myself with zero use of any LLM. I am as allergic to reading slop as everyone else these days.
I hope some of you will give it a try and maybe provide some feedback on your experience!
2 points
faro: an unofficial Signal client designed for tmux and SSH
A few months ago I switched from Telegram to Signal as my main messaging app and spent some time exploring CLI/TUI options. After using gurk for a while I decided to build my own client (faro), based on my own requirements and taste (you can probably see the UI/UX inspiration from tools like btop, OpenCode CLI, neovim).
It covers all features I commonly use within Signal:
- chats, replies, reactions, edits, mentions, search
- inline images (if your terminal supports them) or halfblock rendering otherwise
- voice notes and transcription (supports local whisper models)
- quick navigation menu for everything (Ctrl+P)
- copying over SSH, pasting images from clipboard
There is a demo if you want to try it out, just run faro demo or try it out in your browser at getfaro.dev (the GitHub repo is public: harababurel/faro)
It's exactly the same binary compiled using wasm and the same demo you see in the video.
For setting it up with a real account, you can run faro link and link it as a secondary device just as you would with Signal Desktop or any other client.
Disclaimer: I built it with a lot of help from AI coding agents, including open-weight models running locally on my own home server. However, I designed, reviewed and tested it thoroughly. I try to always pay attention to the details, and the general direction of the project is usually informed by my day to day experience using the project.
I wrote this post myself with zero use of any LLM. I am as allergic to reading slop as everyone else these days.
I hope some of you will give it a try and maybe provide some feedback on your experience!
77 points · 23 comments
Mentions
faro: a terminal Signal client built with Rust and ratatui A few months ago I switched from Telegram to Signal as my main messaging app and spent some time exploring CLI/TUI options. After using gurk for a while I decided to build my own client (faro), based on my own requirements and taste (you can probably see the UI/UX inspiration from tools like btop, OpenCode CLI, neovim). It covers all features I commonly use within Signal: - chats, replies, reactions, edits, mentions, search - inline images (if your terminal supports them) or halfblock rendering otherwise - voice notes and transcription (supports local whisper models) - quick navigation menu for everything (Ctrl+P) - copying over SSH, pasting images from clipboard On the Rust side, the UI is built with ratatui and the Signal protocol side uses presage (which builds on Signal's own libsignal). The browser demo at getfaro.dev is the same binary compiled to WebAssembly. The GitHub repo is public: harababurel/faro. For setting it up with a real account, you can run faro link and link it as a secondary device just as you would with Signal Desktop or any other client. Disclaimer: I built it with a lot of help from AI coding agents, including open-weight models running locally on my own home server. However, I designed, reviewed and tested it thoroughly. I try to always pay attention to the details, and the general direction of the project is usually informed by my day to day experience using the project. I wrote this post myself with zero use of any LLM. I am as allergic to reading slop as everyone else these days. I hope some of you will give it a try and maybe provide some feedback on your experience!
faro: an unofficial Signal client for the terminal, built for tmux and SSH A few months ago I switched from Telegram to Signal as my main messaging app and spent some time exploring CLI/TUI options. After using gurk for a while I decided to build my own client (faro), based on my own requirements and taste (you can probably see the UI/UX inspiration from tools like btop, OpenCode CLI, neovim). It covers all features I commonly use within Signal: - chats, replies, reactions, edits, mentions, search - inline images (if your terminal supports them) or halfblock rendering otherwise - voice notes and transcription (supports local whisper models) - quick navigation menu for everything (Ctrl+P) - copying over SSH, pasting images from clipboard There is a demo if you want to try it out, just run faro demo or try it out in your browser at getfaro.dev (the GitHub repo is public: harababurel/faro) It's exactly the same binary compiled using wasm and the same demo you see in the video. For setting it up with a real account, you can run faro link and link it as a secondary device just as you would with Signal Desktop or any other client. Disclaimer: I built it with a lot of help from AI coding agents, including open-weight models running locally on my own home server. However, I designed, reviewed and tested it thoroughly. I try to always pay attention to the details, and the general direction of the project is usually informed by my day to day experience using the project. I wrote this post myself with zero use of any LLM. I am as allergic to reading slop as everyone else these days. I hope some of you will give it a try and maybe provide some feedback on your experience! reddit.com
faro: an unofficial Signal client for the terminal, built for tmux and SSH A few months ago I switched from Telegram to Signal as my main messaging app and spent some time exploring CLI/TUI options. After using gurk for a while I decided to build my own client (faro), based on my own requirements and taste (you can probably see the UI/UX inspiration from tools like btop, OpenCode CLI, neovim). It covers all features I commonly use within Signal: - chats, replies, reactions, edits, mentions, search - inline images (if your terminal supports them) or halfblock rendering otherwise - voice notes and transcription (supports local whisper models) - quick navigation menu for everything (Ctrl+P) - copying over SSH, pasting images from clipboard There is a demo if you want to try it out, just run faro demo or try it out in your browser at getfaro.dev (the GitHub repo is public: harababurel/faro) It's exactly the same binary compiled using wasm and the same demo you see in the video. For setting it up with a real account, you can run faro link and link it as a secondary device just as you would with Signal Desktop or any other client. Disclaimer: I built it with a lot of help from AI coding agents, including open-weight models running locally on my own home server. However, I designed, reviewed and tested it thoroughly. I try to always pay attention to the details, and the general direction of the project is usually informed by my day to day experience using the project. I wrote this post myself with zero use of any LLM. I am as allergic to reading slop as everyone else these days. I hope some of you will give it a try and maybe provide some feedback on your experience!
faro: an unofficial Signal client designed for tmux and SSH A few months ago I switched from Telegram to Signal as my main messaging app and spent some time exploring CLI/TUI options. After using gurk for a while I decided to build my own client (faro), based on my own requirements and taste (you can probably see the UI/UX inspiration from tools like btop, OpenCode CLI, neovim). It covers all features I commonly use within Signal: - chats, replies, reactions, edits, mentions, search - inline images (if your terminal supports them) or halfblock rendering otherwise - voice notes and transcription (supports local whisper models) - quick navigation menu for everything (Ctrl+P) - copying over SSH, pasting images from clipboard There is a demo if you want to try it out, just run faro demo or try it out in your browser at getfaro.dev (the GitHub repo is public: harababurel/faro) It's exactly the same binary compiled using wasm and the same demo you see in the video. For setting it up with a real account, you can run faro link and link it as a secondary device just as you would with Signal Desktop or any other client. Disclaimer: I built it with a lot of help from AI coding agents, including open-weight models running locally on my own home server. However, I designed, reviewed and tested it thoroughly. I try to always pay attention to the details, and the general direction of the project is usually informed by my day to day experience using the project. I wrote this post myself with zero use of any LLM. I am as allergic to reading slop as everyone else these days. I hope some of you will give it a try and maybe provide some feedback on your experience!