TermiHUI
A modern, native terminal with GUI β think of it as tmux with a graphical interface
Features β’ Architecture β’ Building β’ Roadmap β’ Contributing β’ License
Why TermiHUI?
Iβve been thinking about this project for years. Let me share the pain points that led me here.
tmux is amazing, but itβs still TUI. The moment you need modern UX β drag and drop, visual tab management, smooth animations β you hit a wall. tmux solves session persistence brilliantly, but itβs fundamentally limited by being text-based. I wanted something that keeps the power of tmux but isnβt trapped in the terminal.
Modern terminal emulators have a dilemma. Either they have mediocre UX, or theyβre bβ¦
TermiHUI
A modern, native terminal with GUI β think of it as tmux with a graphical interface
Features β’ Architecture β’ Building β’ Roadmap β’ Contributing β’ License
Why TermiHUI?
Iβve been thinking about this project for years. Let me share the pain points that led me here.
tmux is amazing, but itβs still TUI. The moment you need modern UX β drag and drop, visual tab management, smooth animations β you hit a wall. tmux solves session persistence brilliantly, but itβs fundamentally limited by being text-based. I wanted something that keeps the power of tmux but isnβt trapped in the terminal.
Modern terminal emulators have a dilemma. Either they have mediocre UX, or theyβre built on Electron and similar non-native technologies. Iβm going strictly native. Native means familiar UX (macOS users know what I mean), instant response times, and respecting the platform conventions your OS already taught you.
Tabs belong on the side, not the top. Top tabs have failed us. On macOS, the top edge of the screen is contested territory β try clicking a tab when Finderβs menu bar keeps expanding. And flat tab lists donβt scale. I want hierarchical tabs (inspired by Horse Browser) that let you actually organize dozens of terminal sessions without losing your mind.
AI chat for every tab. But hereβs the thing β you bring your own keys (BYOK) or run self-hosted models. No vendor lock-in, no surprise bills. You configure which tools the AI can use, and all execution permissions are closed by default. You grant them explicitly. Your terminal will never accidentally rm -rf anything.
Mesh network of terminals. If youβre testing distributed systems across multiple hosts, you know the pain of SSH-ing into five machines and running commands in sequence. TermiHUI lets you connect servers together and orchestrate commands across your entire infrastructure from one place.
The end goal? Pick up your phone, connect to your server, speak your task, close the app. The task keeps running. When itβs done β or when it needs permission for a sub-command β you get a push notification. Thatβs the terminal experience I want to build.
| | Traditional Terminal | tmux | TermiHUI | | | ββββββββββ | ββ | ββββ | | Session persistence | β | β | β | | Visual session management | β | β | β | | Native performance | β | β | β | | Cross-platform GUI | β | β | β | | Mobile + push notifications | β | β | π§ | | AI integration | β | β | π§ |
Features
| Feature | Status | Description |
|---|---|---|
| Client-Server Architecture | β | Server manages PTY sessions, clients connect via WebSocket |
| Native Clients | β | No Electron β pure native apps (Swift/AppKit for macOS) |
| Session Management | β | Create, switch, and manage multiple terminal sessions |
| Command Blocks | β | Visual separation of commands and their output |
| Cross-Block Text Selection | β | Select and copy text across multiple command blocks |
| Tab Completion | β | Smart completion from PATH executables and shell builtins |
| Command History | β | Persistent history within server runtime |
| Terminal Resize | β | Dynamic terminal size adjustment |
| Full UTF-8 Support | β | Including emoji and non-Latin scripts |
| Hierarchical Tabs | β³ | Tab grouping and organization (sidebar, not top bar) |
| Unit Tests | β | Comprehensive test coverage for server and client-core |
| Interactive Apps | π§ | Support for vim, htop, and other TUI applications (bug reports welcome!) |
| AI Chat Sidebar | π§ | Chat with AI in each tab, BYOK (Bring Your Own Key) |
| Mobile Clients | β³ | iOS and Android apps with push notifications |
| Linux & Windows Clients | β³ | GTK and WinUI native apps |
| Mesh Network | β³ | Connect servers together for distributed command execution β run scripts across multiple machines in sequence, test distributed systems, orchestrate deployments |
| AI Skills | π‘ | Specialized AI capabilities for common workflows |
| Voice Control | π‘ | Whisper integration for voice commands |
Legend: β Done | π§ In Progress | β³ Planned | π‘ Idea
Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TermiHUI β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ WebSocket ββββββββββββββββββββββββ β
β β Clients βββββββββββββββββββββΊβ Server β β
β β β β β β
β β β’ macOS β β β’ Session Manager β β
β β β’ Linux β β β’ PTY Controller β β
β β β’ Windows β β β’ ANSI Parser β β
β β β’ iOS β β β’ Completion Engine β β
β β β’ Android β β β’ History Storage β β
β β β β β β
β ββββββββββββββββ ββββββββββββββββββββββββ β
β β β β
β β β β
β βΌ βΌ β
β ββββββββββββββββ ββββββββββββββββββββββββ β
β β Client-Core β β PTY Process β β
β β (C++ lib) β β (bash/zsh) β β
β ββββββββββββββββ ββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Components
| Component | Description | Tech Stack |
|---|---|---|
| Server | Manages PTY sessions, handles WebSocket connections | C++20, libhv, SQLite |
| Client-Core | Shared C++ library for all clients | C++20 |
| macOS Client | Native desktop application | Swift, AppKit, SnapKit |
| Shared | Protocol definitions, serialization | C++20 |
Building
Requirements
- CMake 3.16+
- C++20 compatible compiler (Clang 14+, GCC 11+)
- Xcode 14+ (for macOS client)
Build Server
# Clone repository
git clone https://github.com/user/termihui.git
cd termihui
# Build server
mkdir build && cd build
cmake ..
make -j$(nproc)
# Run server
./server/termihui-server
Server starts on port 37854 (WebSocket).
Build macOS Client
# Open Xcode project
open macos-client/termihui-client.xcodeproj
# Build and run (Cmd+R)
Usage
Quick Start
Start the server:
./termihui-server
Launch the client and connect to localhost:37854
1.
Use the terminal β commands are visually separated into blocks
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Enter | Execute command |
Tab | Autocomplete |
β / β | Navigate history |
Cmd+C | Copy selection |
Cmd+V | Paste |
Roadmap
See FEATURES.md for detailed roadmap.
Phase 1 β MVP (Current)
- Server + Client-Core
- macOS client (basic functionality)
- Unit test coverage
- Stabilization, bug fixes
Phase 2 β AI Integration
- AI chat sidebar
- Command generation from natural language
- BYOK providers (OpenAI, Anthropic, local LLMs)
- AI Skills (specialized agents)
Phase 3 β Platform Expansion
- Linux client (GTK)
- Android client
- iOS client
- Push notifications
Phase 4 β Mesh & Orchestration
- Server-to-server connections
- Reverse tunnel (access servers behind NAT)
- Multi-server command orchestration
- Distributed script execution
Contributing
Contributions are welcome! Whether itβs bug reports, feature requests, or pull requests β all contributions help make TermiHUI better.
Code Style
- C++: Modern C++20 practices
- Swift: Appleβs Swift API Design Guidelines
- Commits: Conventional commits format
Testing
We aim for comprehensive test coverage. When contributing new features, please include appropriate unit tests.
Project Structure
termihui/
βββ server/ # C++ server
β βββ src/ # Server source files
β βββ tests/ # Server tests (Catch2)
βββ client-core/ # Shared C++ client library
β βββ include/ # Public headers
β βββ src/ # Implementation
β βββ tests/ # Client-core tests
βββ shared/ # Protocol definitions
β βββ include/ # Shared headers
βββ macos-client/ # macOS native client
β βββ Shared/ # Cross-platform Swift code
β βββ termihui-client/ # macOS-specific code
βββ FEATURES.md # Detailed roadmap
Acknowledgments
- libhv β High-performance network library
- fmt β Modern formatting library
- SQLite β Embedded database
- SnapKit β Auto Layout DSL for Swift
- Catch2 β Testing framework
License
This project is licensed under the MIT License β see the LICENSE file for details.
Built with β€οΈ for developers who love their terminal