βββββββββββββββββββββββββββββββββββββββββββββ
β _____ _____ ____ ____ ___ __ __ β
β | ___| ____| _ \| _ \|_ _|\ \/ / β
β | |_ | _| | |_) | |_) || | \ / β
β | _| | |___| _ <| _ < | | / \ β
β |_| |_____|_| \_\_| \_\___/_/\_\ β
β β
β Modern Terminal Multiplexer β
β Built with Rust β
βββββββββββββββββββββββββββββββββββββββββββββ
A modern take on terminal multiplexing inspired by GNU Screen and Tmux
Ferrix is a modern terminal multiplexer that combines the reliability of GNU Screen with features from Tmux, while exploring new possibilities with Rust's safety and performance. The name combines "Fe" (iron - representing Rust's memory safety) with "Matrix" (representing the matrix of terminal sessions).
π Production Ready (v1.0.0): Ferrix has achieved its first stable release with comprehensive UX improvements, bug fixes, and production-grade reliability. Includes working directory inheritance for split panes, improved terminal restoration, clean session list formatting, and zero compiler warnings. Ready for production use with enterprise-grade reliability features.
- β Session Management - Create, attach, detach, list, and kill sessions
- β Multi-Client Support - Multiple clients can attach to the same session simultaneously
- β
Optional Crash Recovery - Auto-save every 5 minutes, restore with
--recoverflag (experimental) - β Client-Server Architecture - Robust separation with async Rust
- β Multiple Windows & Panes - Split panes, navigate between them, and manage layouts
- β Last-Pane Toggle - Quick switch between recent panes (Ctrl-b ;)
- β Pane Numbering - Direct pane selection with 0-9 indices
- β Display-Panes Overlay - Visual pane numbers with ASCII art (Ctrl-b q)
- β Pane Respawning - Restart dead panes with remain-on-exit support
- β PTY Process Management - Each pane runs its own independent terminal
- β Detach/Reattach - Seamlessly disconnect and reconnect to sessions
- β Session Persistence - Full session content restoration on reattach with 50KB raw output buffer
- β Automatic Session Cleanup - Sessions automatically destroyed when all panes exit (configurable)
- β Visual Pane Rendering - Borders, focus indication, and content display
- β User Feedback System - Color-coded status bar messages (info/success/warning/error)
- β Session Snapshots - Save and restore complete session state including layouts
- β Enhanced Status Bar - Session info, window/pane counts, messages, and time
- β Copy Mode - Visual selection, yank to clipboard, search functionality
- β Configuration System - Generate and validate TOML configuration with hot reload
- β Scrollback Buffer - Optimized scrollback with configurable capacity
- β Pane Synchronization - Broadcast input to all panes in a window
- β Session Locking - Read-only mode for secure session viewing
- β Activity Monitoring - Visual indicators for pane activity (bell, output, silence)
- β Window Renaming - Rename windows for better organization
- β Pane Zoom - Focus on a single pane by zooming it to full window
- β Keybinding Customization - Load custom keybindings from config, runtime modification
- β Full ANSI/VT100 Terminal Emulation - Complete DEC modes, colors, attributes
- β Command Mode - 40+ tmux-compatible commands for advanced control
- β Hooks System - Event-driven hooks for session lifecycle events
- β Format System - Customizable status bar formatting with conditionals
- β Plugin System - WASM-based plugin architecture with hot loading
- β Session Recording & Replay - Record and replay terminal sessions with compression
- β Remote Sessions - TCP/TLS support for remote multiplexing
- β Extended Protocols - SSH tunnel and Mosh UDP transport support
- β Performance Optimizations - Adaptive batching, delta compression, backpressure handling
- β Comprehensive Test Suite - 277+ tests covering unit, integration, protocol, and E2E testing
- β Metrics & Observability - Comprehensive metrics collection for connections, sessions, performance
- β Health Checks - Component health monitoring with degraded state detection
- β Crash Analysis - Automated crash capture with pattern detection and analysis
- β Resource Management - Configurable limits with backpressure detection
- β Error Recovery - Retry mechanisms with exponential backoff and circuit breakers
- β Rate Limiting - Brute force protection with configurable thresholds
- β Security Hardening - Session timeouts, mTLS support, stable authorization
- β Production Debugging - Inspect, state dump, and profiling commands
- β Graceful Degradation - Memory pressure handling and fair resource allocation
- β Contextual Help System - Press Ctrl-b ? for comprehensive help with 8 categories
- β Enhanced Mouse Support - Improved border detection, corner resize, full drag support
- β Intelligent Error Messages - Context-aware suggestions and "Did you mean?" for typos
- β Command Suggestions - Fuzzy matching for command mode with Levenshtein distance
- β Improved Control Key Handling - Proper support for Ctrl combinations in Emacs, vim, etc.
- β Optimized Performance - 4.6MB binary, ~8ms cold start, async/await architecture
- π Advanced Scripting - Lua or Rhai scripting support for automation
- π Multi-User Collaboration - Real-time collaborative editing
- π Advanced Layout Management - Custom layout presets and templates
Ferrix combines the best of traditional terminal multiplexers with modern innovations:
| Feature | Ferrix | tmux | Zellij | GNU Screen |
|---|---|---|---|---|
| Core Multiplexing | β | β | β | β |
| Session Persistence | β | β | β | β |
| Copy Mode | β Vim-style | β Vim/Emacs | β | β |
| Mouse Support | β Full | β Basic | β Full | β |
| Configuration | β TOML/Hot reload | β Custom format | β KDL/YAML | |
| Remote Access | β TCP/TLS/SSH/Mosh | |||
| Session Snapshots | β Built-in | β | β | β |
| Session Recording | β With replay | β | β | β |
| Plugin System | β WASM (safe) | β Scripts | β WASM | β |
| Language | β Rust | C | Rust | C |
| Memory Safety | β Guaranteed | β Guaranteed | ||
| Async Architecture | β Tokio | β | β | β |
| Binary Size | 4.6-9.7MB | ~1MB | ~15MB | ~300KB |
| Startup Time | ~8ms | ~5ms | ~20ms | ~3ms |
| Observability | β Metrics/Health | β | β | |
| Security Hardening | β TLS 1.3/mTLS/Rate limiting | |||
| Crash Analysis | β Automated | β | β | β |
| Circuit Breakers | β | β | β | β |
| Time Travel | β Experimental | β | β | β |
| Versioning | β Git-like | β | β | β |
| AI Assistance | β Experimental | β | β | β |
| Test Coverage | 277+ tests | β Good | β Good | |
| Production Ready | β v1.0.0 | β Mature | β Mature | |
| Ecosystem | π± Growing | π³ Huge | π± Growing | π³ Large |
| Learning Curve | β Easy |
-
Enterprise-Grade Reliability
- Comprehensive observability (metrics, health checks, crash analysis)
- Circuit breakers and error recovery with exponential backoff
- Graceful degradation under resource pressure
- Production debugging tools (inspect, dump, profile)
-
Modern Security
- TLS 1.3 with optional mutual authentication
- Bcrypt password hashing with rate limiting
- Session timeouts and secure locking
- Regular security audits
-
Developer-Friendly Features
- Session snapshots for instant backup/restore
- Session recording and replay with compression
- Git-like versioning for session history
- Time-travel debugging (experimental)
- WASM-based plugin system (safe sandboxing)
-
Performance & Architecture
- Async Rust with Tokio (efficient I/O multiplexing)
- Zero-copy operations where possible
- Configurable feature flags (build only what you need)
- Memory-safe by design (no segfaults, no data races)
-
Flexible Deployment
- Multiple transport protocols (TCP/TLS/SSH/Mosh)
- Feature flags for minimal or full builds
- Comprehensive shell completions (bash/zsh/fish/powershell/elvish)
- Hot configuration reload
Choose Ferrix if:
- You need enterprise-grade reliability and observability
- You want modern security features (TLS 1.3, mTLS, rate limiting)
- You value session snapshots, recording, and versioning
- You prefer memory safety and modern async architecture
- You need advanced remote access capabilities
Choose tmux if:
- You need maximum ecosystem (plugins, scripts, tutorials)
- You want the smallest binary size and fastest startup
- You rely on existing tmux workflows and muscle memory
- You need a battle-tested solution with 30+ years of history
Choose Zellij if:
- You prioritize beginner-friendliness and discoverability
- You want the easiest learning curve
- You prefer modern UX with floating panes
- You're starting fresh without existing multiplexer experience
Choose GNU Screen if:
- You need the absolute minimum footprint
- You work on very old systems
- You prefer simplicity over features
Ferrix is designed with tmux compatibility in mind:
- Similar keybindings (Ctrl-b prefix by default)
- Compatible command mode (
:commands) - Familiar session/window/pane concepts
- Configuration can mirror tmux patterns
See docs/USER_GUIDE.md for migration tips.
# Coming soon: Install from Homebrew tap
# brew tap davidliedle/ferrix
# brew install ferrix
# For now, install from source or use cargo# Install from crates.io (coming soon after v1.0 release)
cargo install ferrix
# Or install from source
git clone https://github.com/davidliedle/Ferrix
cd Ferrix
cargo install --path .# Clone the repository
git clone https://github.com/davidliedle/Ferrix
cd Ferrix
# Build with default features (minimal - 4.6MB)
cargo build --release
# Build with all features (full - 9.7MB)
cargo build --release --features full
# Build with specific features
cargo build --release --features remote,versioning,plugin
# The binary will be at ./target/release/ferrix
# Optionally, copy to your PATH:
sudo cp target/release/ferrix /usr/local/bin/Ferrix uses a tiered feature-flag architecture allowing you to build only what you need:
# Minimal build (core multiplexing only) - 4.6MB
cargo build --release
# Full build (all features) - 9.7MB
cargo build --release --features full
# Γ la carte (pick features you want)
cargo build --release --features remote,versioning,pluginAvailable Features:
- Tier 1 (Always Enabled):
clipboard,scrollback,recording - Tier 2 (Advanced):
remote(TCP/TLS access),performance(output optimization) - Tier 3 (Experimental):
versioning,collaboration,time-travel,plugin,ai-assist
See FEATURES.md for detailed information about each feature.
# Start Ferrix (creates a new session if none exist)
ferrix
# Start the server explicitly
ferrix server --foreground
# Create a new named session
ferrix new -s my-session
# List all sessions
ferrix list
# Attach to a session
ferrix attach -t my-session
# Detach from current session
# Press Ctrl-b d while in a session
# Kill a session
ferrix kill -t my-sessionFerrix supports shell completions for bash, zsh, fish, powershell, and elvish:
# Generate completions for your shell
ferrix completions bash --output ~/.local/share/bash-completion/completions/ferrix
ferrix completions zsh --output ~/.zsh/completions/_ferrix
ferrix completions fish --output ~/.config/fish/completions/ferrix.fishSee docs/SHELL_COMPLETIONS.md for detailed installation instructions.
All commands are prefixed with Ctrl-b (similar to tmux):
| Key Combo | Action |
|---|---|
Ctrl-b d |
Detach from current session |
Ctrl-b c |
Create new window |
Ctrl-b n |
Next window |
Ctrl-b p |
Previous window |
Ctrl-b % |
Split pane vertically |
Ctrl-b " |
Split pane horizontally |
Ctrl-b + arrows |
Navigate between panes |
Ctrl-b z |
Zoom/unzoom current pane |
Ctrl-b x |
Close current pane |
Ctrl-b [ |
Enter copy mode |
Ctrl-b w |
List windows |
Ferrix uses TOML for configuration. The default configuration file is located at ~/.config/ferrix/config.toml.
Example configuration:
[general]
default_shell = "/bin/zsh"
escape_key = "ctrl-a" # Use Ctrl-a like GNU Screen
mouse = true
clipboard = true
[colors]
background = "#1e1e1e"
foreground = "#d4d4d4"
pane_border = "#444444"
pane_active_border = "#569cd6"
[status_bar]
position = "bottom"
left = "[{session}]"
right = "{time:%H:%M}"Ferrix takes security seriously and has undergone comprehensive security audits:
- β TLS 1.3 Support - Secure remote connections with rustls
- β Authentication - Bcrypt password hashing with rate limiting (5 attempts, 15min lockout)
- β Authorization - Role-based permission system for multi-user environments
- β Session Locking - Read-only mode for secure viewing
- β
Dependency Auditing - Regular security audits with
cargo audit
For detailed security information, see:
- SECURITY_AUDIT.md - Comprehensive security analysis and hardening measures
- DEPENDENCY_AUDIT.md - Dependency security status and mitigation strategies
- DEPLOYMENT.md - Production deployment security best practices
See SECURITY.md for information on reporting security vulnerabilities.
Security Status: β All critical vulnerabilities addressed for v1.0 release
Production Status: Ferrix v1.0.0 is production-ready with enterprise-grade reliability features and comprehensive UX improvements.
- β Error Handling: Comprehensive error handling with Result types throughout
- β Code Quality: Clippy-clean codebase with minimal warnings
- β Observability: Metrics, health checks, and crash analysis
- β Security: Rate limiting, session timeouts, TLS/mTLS support
- β Resilience: Error recovery, circuit breakers, graceful degradation
- β Resource Management: Configurable limits, backpressure handling
- β Testing: 277+ tests (247 unit, 25 integration, 5 stress)
- β htop - Works perfectly (process monitor)
- β nano - Works correctly (text editor)
- β less - Works correctly with status bar
- β Shell usage - bash, zsh, fish work correctly
- β vim - Terminal rendering stable
- β Emacs - Terminal emulation compatible
# Monitor server health
ferrix health
# View metrics
ferrix metrics
# List crash reports
ferrix crashes
# Analyze crash patterns
ferrix crash-analyze
# Inspect session state
ferrix inspect <session>Remaining work for v1.0 release:
- β P0/P1 items complete (Observability, Security, Resilience)
- π Performance optimization (lock contention, DashMap)
- π Validation testing (chaos engineering, 7-day load tests)
- π Security penetration testing
- π Operations documentation completion
Recommendation: Ferrix is ready for production use with comprehensive reliability features. For mission-critical systems, perform your own validation testing before deployment.
Ferrix uses a modern async Rust architecture:
- Async/Await - Tokio-based runtime for efficient concurrency
- Binary Protocol - Efficient bincode serialization for IPC
- Memory Safe - 100% safe Rust with no unsafe blocks
- Modular Design - Clean separation of concerns for maintainability
Performance benchmarks (v1.0 baselines):
- ANSI Parser: 4.7 Β΅s (100 chars) to 5.5 ms (100k chars)
- Protocol Serialization: ~16-18 ns per message
- Snapshot Operations: ~2.84 Β΅s
- Multi-pane Handling: ~58 Β΅s for 10 panes
See benches/performance.rs for detailed benchmarks.
Contributions are welcome! Please see the DEVELOPMENT_PLAN.md for the project roadmap and architecture details.
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Clone and build
git clone https://github.com/davidliedle/Ferrix
cd Ferrix
cargo build --release
# Run tests
cargo test
# Run benchmarks
cargo benchFerrix is developed using Claude Code, an AI-assisted development workflow that combines human creativity with AI capabilities. This approach enables rapid iteration, comprehensive testing, and high-quality code.
Development Tools:
- Claude Code CLI - For local development, complex refactoring, and testing workflows
- Claude Code Web - For quick iterations, documentation updates, and collaborative planning
- Traditional Tools - Git, Cargo, and the Rust toolchain
AI-Assisted Development Workflow:
- Architecture & Planning - Human developer defines requirements and system architecture, Claude Code helps explore design alternatives and identifies potential issues
- Implementation - Claude Code generates code following Rust best practices, while the developer reviews and provides domain expertise
- Testing & Validation - Comprehensive test suites written with AI assistance, validated by human testing
- Documentation - Detailed documentation maintained by both human and AI, ensuring accuracy and completeness
- Refactoring & Optimization - Continuous improvement guided by benchmarks and real-world usage
Benefits of This Approach:
- Speed: Rapid prototyping and implementation of complex features
- Quality: Consistent code style, comprehensive error handling, and extensive testing
- Learning: Code includes detailed comments and documentation for maintainability
- Innovation: Quick experimentation with new ideas and architectural patterns
Transparency: All code is human-reviewed and validated. The AI assists but doesn't replace human judgment, domain expertise, or architectural decisions. This collaborative approach allows for faster development while maintaining high standards of code quality and design.
For more details on contributing to this AI-assisted project, see CONTRIBUTING.md.
Ferrix is a production-ready terminal multiplexer with comprehensive features and enterprise-grade reliability.
Production Features:
- β Complete terminal multiplexing (sessions, windows, panes, layouts)
- β Full ANSI/VT100 terminal emulation with DEC modes
- β Multi-client support with session sharing
- β Remote sessions (TCP/TLS, SSH, Mosh)
- β Session snapshots and recovery
- β Plugin system (WASM-based)
- β Metrics and health monitoring
- β Crash analysis and debugging tools
- β Security hardening (rate limiting, mTLS, timeouts)
- β Error recovery and circuit breakers
v1.0.0 Release Highlights:
- β Working directory inheritance for split panes (tmux-compatible)
- β Terminal state restoration with RAII guards (prevents corruption)
- β Clean session list formatting with shortened UUIDs
- β Configuration options for working directory behavior
- β Zero compiler warnings and clippy-clean code
- β Comprehensive bug fixes and UX improvements
Post-v1.0 Roadmap:
- π Performance optimizations (lock contention, batching)
- π Extended testing (chaos engineering, long-running load tests)
- π Advanced features (GPU acceleration, Lua scripting)
- π Community plugins and ecosystem growth
See ROADMAP_ROCK_SOLID.md for detailed development plan.
Ferrix is dual-licensed under MIT OR Apache-2.0. Choose whichever license works best for you.
Inspired by:
- GNU Screen - The original terminal multiplexer
- Tmux - The feature-rich successor
- The Rust community - For amazing libraries and support
- Report issues on GitHub Issues
- Discussions on GitHub Discussions
Built with β€οΈ and Rust by DavidCanHelp and Claude Code Opus 4.1