Skip to content

A lightweight, keyboard-driven terminal user interface for SimpleX Chat. Built in Rust with ratatui, designed for cyberdeck enthusiasts, privacy advocates, and anyone who prefers the terminal.

License

Notifications You must be signed in to change notification settings

cannatoshi/simplex-tui

SimpleX TUI (cyberdeck)

Terminal-Based Chat Client for SimpleX Messaging Protocol

License: AGPL-3.0 Rust SimpleX Status Platform Maintenance PRs Welcome Legal

A lightweight, keyboard-driven terminal user interface for SimpleX Chat. Built in Rust with ratatui, designed for cyberdeck enthusiasts, privacy advocates, and anyone who prefers the terminal.

Version: 0.1.1-alpha (06. January 2026)
Status: Active Development
Tested on: Debian 12, Ubuntu 24.04, Raspberry Pi OS (64-bit)
Companion to: SimpleX Private Infrastructure Tutorial

Main Chat Interface

Main Chat

Real-time messaging with colored avatars, message status indicators (βœ“/βœ“βœ“), and animated status bar


⚠️ ALPHA SOFTWARE

This project is in active development. Core features work, but expect rough edges. Not recommended for production use without thorough testing.

βœ… What works: Real-time messaging, contact management, address creation/sharing, message status tracking, keyboard navigation, mouse support
🚧 In progress: File transfers, group chats, settings UI, Tor integration
πŸ“‘ Planned: Optional radio transport layer for off-grid communication


πŸ”’ What's New in v0.1.1-alpha

This release brings a complete UI/UX overhaul with professional polish:

UI/UX Improvements

  • Fullscreen Modals - Help, Add Contact, and Panic screens now use full terminal
  • Box-Bordered Buttons - Professional button styling with clean separators
  • Mouse Click Support - All buttons and action bar clickable
  • Animated Status Bar - Rotating messages with typewriter effect
  • Colored Avatars - Unique colors per contact based on name hash
  • Unread Badges - Orange (N) counter for unread messages

Address Management (Complete)

  • Create New Address - Proper deleteβ†’create workflow
  • Auto-Refresh - Modal updates automatically after address creation
  • Share Address - Display and copy invite links
  • Connect via Link - Add contacts using SimpleX invite links

Message System

  • Real-Time Delivery - WebSocket-based instant messaging
  • Status Tracking - β—‹ (pending) β†’ βœ“ (sent) β†’ βœ“βœ“ (delivered)
  • Correct Routing - Messages appear in the right chat
  • Blinking Cursor - Visual feedback in input field

Upgrade from v0.1.0

cd ~/simplex-tui
git pull
cargo build --release

✨ Features

βœ… Implemented (v0.1.1-alpha)

Feature Description
Real-Time Messaging WebSocket connection to SimpleX CLI backend
Contact List Navigable list with selection markers and avatars
Message History Per-contact message storage with timestamps
Delivery Status β—‹ pending β†’ βœ“ sent β†’ βœ“βœ“ delivered
Unread Counters Badge showing unread messages per contact
Address Management Create, refresh, share invite links
Connect to Contacts Add contacts via SimpleX invite links
Keyboard Navigation Full keyboard control (vim-style optional)
Mouse Support Click on contacts, buttons, action bar
Dark Theme Cyan/blue color scheme optimized for terminals
Animated Status Rotating status messages with typewriter effect
Help System Built-in keyboard shortcut reference
Panic Mode Quick screen clear for privacy

🚧 In Progress

Feature Status Target
File Transfers Planned v0.2.0
Group Chats Planned v0.2.0
Settings UI Planned v0.2.0
Tor Integration Planned v0.3.0
Notifications Planned v0.3.0

πŸ“‘ Planned: Radio Transport (Experimental)

For users running cyberdeck hardware like the uConsole with AIO V2 expansion, an optional radio transport layer is planned for v0.5.0. This is entirely optional and designed for advanced users who want resilient off-grid communication.

Feature Description
LoRa Transport Encrypted messaging over 868 MHz (EU) / 915 MHz (US)
Reticulum Support Interoperability with existing mesh network ecosystem
Custom Protocol Lightweight option for closed groups
Dual Transport Automatic fallback: Tor when online, radio when offline
RTL-SDR Monitor Optional spectrum awareness integration
GPS Integration Optional location-aware features

Range Expectations:

Environment Metric Imperial
Urban (buildings) 2-5 km 1-3 miles
Suburban 8-15 km 5-10 miles
Line of sight 50+ km 30+ miles

⚠️ Note: Radio features require additional hardware and are subject to local regulations. See DISCLAIMER.md for details.

πŸ“‹ Planned

Feature Description
Message Search Search through chat history
Export/Import Backup and restore conversations
Themes Customizable color schemes
Plugins Extensible architecture for testing and automation

πŸ“Έ Screenshots

Contact List

Coming soon

Help Modal

Coming soon

Add Contact Modal

Coming soon


πŸ—οΈ Architecture

Current Architecture (v0.1.x)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     SIMPLEX TUI (Terminal)                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  UI Layer (ratatui)                                       β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ Contact List    β”œβ”€β”€ Chat View    β”œβ”€β”€ Input Field    β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ Status Bar      β”œβ”€β”€ Modals       └── Action Bar     β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                              β”‚                                  β”‚
β”‚                    Event Loop (crossterm)                       β”‚
β”‚                              β”‚                                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  App State                                                β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ Contacts         β”œβ”€β”€ Messages     β”œβ”€β”€ Current Chat   β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ Mode (Normal/Input/Modal)         └── Invite Link   β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                              β”‚                                  β”‚
β”‚                    WebSocket (tokio-tungstenite)                β”‚
β”‚                              β”‚                                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  SIMPLEX CHAT CLI (Backend)                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  WebSocket API (Port 5225)                                β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ /contacts         β”œβ”€β”€ /ad (address)   β”œβ”€β”€ /c (connect)β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ @contact msg      β”œβ”€β”€ /sa (show addr) └── Events     β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                              β”‚                                  β”‚
β”‚                    SimpleX Protocol                             β”‚
β”‚                              β”‚                                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     SMP/XFTP SERVERS                            β”‚
β”‚  (Your own .onion servers or public SimpleX infrastructure)    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Planned Architecture (v0.5.0+ with Radio Transport)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     SIMPLEX TUI (Terminal)                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  UI Layer (ratatui)                                       β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ Contact List    β”œβ”€β”€ Chat View    β”œβ”€β”€ Input Field    β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ Status Bar      β”œβ”€β”€ Modals       └── Action Bar     β”‚  β”‚
β”‚  β”‚  └── Transport Indicator: [πŸ§… Tor] [πŸ“‘ Radio]             β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                              β”‚                                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Transport Manager                                        β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ SimpleX Transport (WebSocket β†’ CLI β†’ Tor β†’ .onion)  β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ Radio Transport (Serial β†’ LoRa β†’ Encrypted RF)      β”‚  β”‚
β”‚  β”‚  β”‚   β”œβ”€β”€ Reticulum/LXMF Mode (mesh interoperability)     β”‚  β”‚
β”‚  β”‚  β”‚   └── Custom Protocol Mode (closed groups)            β”‚  β”‚
β”‚  β”‚  └── Capability Detection (per contact)                   β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                              β”‚                                  β”‚
β”‚              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚
β”‚              β–Ό                               β–Ό                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚  SimpleX CLI        β”‚         β”‚  LoRa Module        β”‚       β”‚
β”‚  β”‚  (Tor Transport)    β”‚         β”‚  (Radio Transport)  β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚                               β”‚
              β–Ό                               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  SMP/XFTP SERVERS       β”‚     β”‚  RADIO NETWORK                  β”‚
β”‚  (.onion via Tor)       β”‚     β”‚  β”œβ”€β”€ Direct P2P (custom proto)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚  └── Mesh (Reticulum network)   β”‚
                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“¦ Installation

Prerequisites

Requirement Version Notes
Rust 1.92+ With cargo
SimpleX CLI Latest Running with WebSocket enabled
Terminal Any 256-color support recommended

Optional Hardware (for Radio Transport v0.5.0+)

Hardware Description Notes
uConsole AIO V2 Primary target platform LoRa + RTL-SDR + GPS integrated
RNode Reticulum-native LoRa device For mesh interoperability
USB LoRa Module SX1262/SX1276 based Alternative for desktop use

Build from Source

# Clone repository
git clone https://github.com/cannatoshi/simplex-tui.git
cd simplex-tui

# Build release binary
cargo build --release

# Binary location
./target/release/simplex-tui

Pre-Built Binaries

Coming soon in GitHub Releases


πŸš€ Quick Start

1. Start SimpleX CLI Backend

# Start simplex-chat with WebSocket API enabled
simplex-chat -p 5225

2. Run SimpleX TUI

# From the project directory
./target/release/simplex-tui

# Or if installed globally
simplex-tui

3. Basic Usage

Key Action
↑/↓ or j/k Navigate contacts
Enter Open chat / Send message
i Add contact (show address)
Esc Close modal / Cancel
q Quit application
? Show help
p Panic mode (clear screen)

⌨️ Keyboard Shortcuts

Navigation

Key Action
↑ / k Move up in contact list
↓ / j Move down in contact list
Enter Select contact / Send message
Tab Switch focus (contacts ↔ input)

Actions

Key Action
i Add contact (show invite address)
r Refresh contacts
? Toggle help modal
p Panic mode (emergency clear)
q Quit application
Esc Close modal / Cancel input

In Add Contact Modal

Key Action
g Refresh address
c Create new address
Enter Connect using pasted link
Esc Close modal

Mouse Support

  • Click contact β†’ Select and open chat
  • Click buttons β†’ Activate (Refresh, Create, Close)
  • Click action bar β†’ [i]Add, [r]Rfsh, [?]Help

πŸ”§ Configuration

Environment Variables

# WebSocket connection (default: ws://localhost:5225)
SIMPLEX_WS_URL=ws://localhost:5225

# Enable debug logging
RUST_LOG=debug

SimpleX CLI Setup

The TUI requires SimpleX CLI running with WebSocket API:

# Basic setup
simplex-chat -p 5225

# With custom database
simplex-chat -p 5225 -d ~/.simplex/myprofile

# With Tor (for .onion servers)
simplex-chat -p 5225 --socks-proxy=localhost:9050

πŸ“ Project Structure

simplex-tui/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main.rs           # Entry point, event loop
β”‚   β”œβ”€β”€ app.rs            # Application state
β”‚   β”œβ”€β”€ types.rs          # Data structures
β”‚   β”œβ”€β”€ colors.rs         # Color scheme and avatar colors
β”‚   β”œβ”€β”€ handlers.rs       # Keyboard and mouse event handlers
β”‚   β”œβ”€β”€ websocket.rs      # WebSocket connection to SimpleX CLI
β”‚   └── ui/
β”‚       β”œβ”€β”€ mod.rs        # UI module exports
β”‚       β”œβ”€β”€ layout.rs     # Main layout structure
β”‚       β”œβ”€β”€ contacts.rs   # Contact list rendering
β”‚       β”œβ”€β”€ chat.rs       # Chat view rendering
β”‚       β”œβ”€β”€ input.rs      # Input field rendering
β”‚       β”œβ”€β”€ status.rs     # Animated status bar
β”‚       └── modals.rs     # Help, Add Contact, Panic modals
β”œβ”€β”€ Cargo.toml            # Rust dependencies
β”œβ”€β”€ README.md             # This file
β”œβ”€β”€ LICENSE               # AGPL-3.0
β”œβ”€β”€ CHANGELOG.md          # Version history
└── screenshots/          # UI screenshots

πŸ› οΈ Tech Stack

Current Dependencies

Component Technology
Language Rust 1.92+
TUI Framework ratatui 0.29
Terminal Backend crossterm
Async Runtime tokio
WebSocket tokio-tungstenite
JSON Parsing serde_json
Backend SimpleX Chat CLI

Planned Dependencies (v0.5.0+ Radio Transport)

Component Technology Purpose
Serial Communication serialport LoRa module interface
Key Exchange x25519-dalek Curve25519 ECDH
Encryption chacha20poly1305 Message encryption
Signatures ed25519-dalek Message authentication
Reticulum reticulum (Python) Mesh interoperability

πŸ—ΊοΈ Roadmap

See ROADMAP.md for detailed development plans.

Summary

Version Target Highlights
v0.2.0 Feb 2026 File transfers, group chats
v0.3.0 Apr 2026 Tor integration, encryption indicators
v0.4.0 Jul 2026 Themes, plugins, multi-instance testing
v0.5.0 Oct 2026 Radio transport (LoRa, Reticulum)
v1.0.0 Mar 2027 Stable release

πŸ› Troubleshooting

WebSocket Connection Failed

# Check if SimpleX CLI is running
ps aux | grep simplex-chat

# Start SimpleX CLI with WebSocket
simplex-chat -p 5225

# Check port is listening
ss -tlnp | grep 5225

No Contacts Showing

# Verify SimpleX CLI has contacts
# In SimpleX CLI directly:
/contacts

# Check WebSocket response
websocat ws://localhost:5225

Messages Not Sending

# Check terminal size (minimum 80x24 recommended)
echo "Columns: $COLUMNS, Lines: $LINES"

# Enable debug logging
RUST_LOG=debug ./target/release/simplex-tui

Build Errors

# Update Rust
rustup update

# Clean and rebuild
cargo clean
cargo build --release

🀝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feat/amazing-feature)
  3. Commit your changes (git commit -s -m 'feat: Add amazing feature')
  4. Push to the branch (git push origin feat/amazing-feature)
  5. Open a Pull Request

See CONTRIBUTING.md for detailed guidelines.

Priority Areas

Area Difficulty Impact
File Transfer UI Medium High
Group Chat Support Hard High
Theme System Easy Medium
Vim Keybindings Easy Medium
Documentation Easy High
Radio Protocol Testing Hard High

πŸ“š Related Projects


βš–οΈ License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

See LICENSE for the full license text.


⚠️ Disclaimer

This software is provided "AS IS" without warranty of any kind. The authors are not responsible for any damages or issues arising from its use.

Note: This project is not affiliated with or endorsed by SimpleX Chat Ltd.
"SimpleX" is a trademark of SimpleX Chat Ltd. See TRADEMARK.md for details.

Radio Features: Radio transmission is subject to local regulations. Users are responsible for compliance with applicable laws. See DISCLAIMER.md for details.

For complete legal information, see:


πŸ“ Changelog

See CHANGELOG.md for detailed version history.

Recent Changes

v0.1.1-alpha (2026-01-06)

  • Complete UI/UX redesign
  • Address management system
  • Message routing fix
  • Unread counters
  • Mouse support
  • Animated status bar

v0.1.0-alpha (2026-01-05)

  • Initial release
  • Basic messaging
  • Contact list
  • WebSocket integration

πŸ“¬ Contact


Disclaimer: This project is not affiliated with, endorsed by, or officially connected with SimpleX Chat Ltd.
"SimpleX" is a trademark of SimpleX Chat Ltd. See TRADEMARK.md for details.
Built with πŸ’™ for the SimpleX ecosystem and cyberdeck enthusiasts.

i(N) cod(E) w(E) trus(T)

About

A lightweight, keyboard-driven terminal user interface for SimpleX Chat. Built in Rust with ratatui, designed for cyberdeck enthusiasts, privacy advocates, and anyone who prefers the terminal.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

No packages published

Contributors 2

  •  
  •