← wiki

signal-tui

overview

A keyboard-driven terminal UI for Signal messenger, backed by signal-cli over JSON-RPC. The original Python/Textual implementation has been archived; the project is currently being rewritten in Rust using ratatui for a faster, leaner interface.

The Python version is preserved in archive/python-tui/ for reference but is no longer maintained. The Rust rewrite targets a buddy-list-style TUI with the same signal-cli JSON-RPC backend.

tech stack

Language: Rust.

UI framework: ratatui — a Rust library for building terminal UIs.

Backend: signal-cli — a Java-based command-line Signal client. signal-tui communicates with it over a local JSON-RPC Unix socket to send and receive messages. Requires signal-cli installed and a linked Signal account on the host.

Archived implementation: Python 3 + Textual (see archive/python-tui/).

status

Early-stage Rust rewrite. The scaffold has been committed to the repository: Cargo.toml (ratatui 0.29, crossterm, tokio, serde/serde_json for JSON-RPC, toml for config, directories for XDG paths), a src/ directory with modules for the app, UI, signal client, config, and types, and a config/ directory for default config templates. The design and remaining work are tracked in PLAN.md.

The archived Python/Textual implementation remains in archive/python-tui/ for reference.