About The Project
https://github.com/user-attachments/assets/1601fa31-0495-4f21-8b0f-10fff035370a
Gōsuto is a native terminal client for the Matrix protocol, built for people who live in the terminal. It ships as a single Rust binary that handles chat, end-to-end encryption, and voice calls — no browser engine, no heavy runtime, just a lightweight TUI that stays out of your way.
The goal is simple: a fast, keyboard-driven Matrix experience with full voice support and under 60 MB of RAM.
Built With
Features
- Vim-first navigation — Normal, Insert, and Command modes
- Encrypted chat — rooms, spaces, DMs, full E2EE with automatic key forwarding
- VoIP calls — LiveKit-based voice with push-to-talk support
- Room management — create, join, leave, view member lists and power levels
- Visual effects — matrix rain, glitch, text reveal animations (all togglable)
- Element compatible — tested against Element Web and Element X
- Markdown messages — bold, italic, strikethrough, code, links, lists, and more — auto-converted to HTML for other Matrix clients
- Lightweight — under 60 MB of RAM for everything
Getting Started
Prerequisites
- Rust toolchain (only if building from source) — install via rustup
- Nerd Font (optional) — enables icon glyphs throughout the UI; toggleable in config, falls back to plain Unicode when disabled
Installation
Pre-built binaries
Pre-built binaries for Linux and Windows are available on the releases page.
Linux:
Windows:
Download gosuto.exe and place it in a directory on your PATH, or run it directly:
.\gosuto.exe
Install from crates.io
Build from source
Run gōsuto and log in with your Matrix homeserver, username, and password.
Supported Terminals
Gōsuto works on any modern terminal emulator — Kitty, WezTerm, Ghostty, Foot, Alacritty, GNOME Terminal, Windows Terminal, and others. Terminal multiplexers (tmux, screen) are also supported.
Usage
Gōsuto has a which-key popup — press a key (e.g. the spacebar) in normal mode and it shows you what's available. Command mode (:) has tab completion and suggestions. Between those two, you shouldn't need to memorize anything.
Config
Configuration is stored in config.toml inside the platform config directory:
| Platform | Path |
|---|---|
| Linux | ~/.config/gosuto/config.toml |
| Windows | %APPDATA%\gosuto\config.toml |
A default config file is created on first launch. Edit it to change network, audio, UI, and visual effect settings.
Data & Logging
Session and runtime data live in the platform data directory:
| Platform | Path |
|---|---|
| Linux | ~/.local/share/gosuto/ |
| Windows | %LOCALAPPDATA%\gosuto\ |
session.json encrypted session credentials
store/ matrix-sdk SQLite store
logs/ log files
To enable logging, set the GOSUTO_LOG environment variable before launching:
GOSUTO_LOG=debug
$env:GOSUTO_LOG="debug"; .\gosuto.exe # Windows (PowerShell)
VoIP & Prebuilt libwebrtc
Gōsuto uses a fork of the LiveKit Rust SDK for voice calls. The fork adds configurable key derivation (HKDF) so E2EE calls interoperate with Element X, and points the build script at prebuilt libwebrtc m137 binaries hosted as GitHub release assets on the fork repo.
The prebuilt libwebrtc.a (Linux) and webrtc.lib (Windows) are compiled from the webrtc-sdk/webrtc m137_release branch using the build scripts and patches checked into the fork. If you prefer to verify the native code yourself, you can build libwebrtc from source and point your build at it:
# Set LK_CUSTOM_WEBRTC to skip the prebuilt download
See the build scripts in the fork repo for full instructions.
License
Licensed under either of
at your option.
Contact
Maik Buse — Homepage
Project Link: https://github.com/MaikBuse/gosuto