Skip to content

MaikBuse/gosuto

Repository files navigation

License Crates.io Stars


Logo

Gōsuto

ゴースト — ghost — a cyberpunk terminal Matrix client
Releases · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Features
  3. Getting Started
  4. Usage
  5. VoIP & Prebuilt libwebrtc
  6. License
  7. Contact

About The Project

gosuto-demo.mp4

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.

(back to top)

Built With

(back to top)

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

(back to top)

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:

chmod +x gosuto
sudo mv gosuto /usr/local/bin/

Windows:

Download gosuto.exe and place it in a directory on your PATH, or run it directly:

.\gosuto.exe

Install from crates.io

cargo install gosuto

Build from source

git clone https://github.com/MaikBuse/gosuto.git
cd gosuto
cargo build --release
./target/release/gosuto        # Linux
.\target\release\gosuto.exe    # Windows

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.

(back to top)

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 gosuto                        # Linux
$env:GOSUTO_LOG="debug"; .\gosuto.exe          # Windows (PowerShell)

(back to top)

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
export LK_CUSTOM_WEBRTC=/path/to/your/libwebrtc/build
cargo build --release

See the build scripts in the fork repo for full instructions.

(back to top)

License

Licensed under either of

at your option.

(back to top)

Contact

Maik Buse — Homepage

Project Link: https://github.com/MaikBuse/gosuto

(back to top)

About

A performant cyberpunk styled terminal Matrix client with Vim motions

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages