A fast, native terminal multiplexer built in Rust with GPUI (the UI framework from Zed editor). Tabs, splits, detachable windows, command palette, and automatic workspace restore.
curl -fsSL https://raw.githubusercontent.com/contember/okena/main/install.sh | bashcurl -fsSL https://raw.githubusercontent.com/contember/okena/main/install.sh | bashirm https://raw.githubusercontent.com/contember/okena/main/install.ps1 | iexThe install script includes built-in auto-update support. On macOS and Linux, Okena is installed to ~/.local/bin/okena. On Windows, it installs to %LOCALAPPDATA%\Programs\Okena with a Start Menu shortcut.
- Split panes - Horizontal and vertical splits with drag-to-resize dividers
- Tabs - Organize terminals in tabbed containers with reordering support
- Detachable windows - Pop out any terminal into a separate floating window and reattach later
- Fullscreen mode - Focus on a single terminal with next/previous cycling
- Minimize/restore - Collapse terminals to their header to save space
- Per-terminal zoom - Adjust zoom level (0.5x to 3.0x) independently per terminal
- Directional focus navigation - Move focus between panes using arrow-key shortcuts
- Project columns - Manage multiple projects side-by-side with resizable columns
- Sidebar - Collapsible project list with tree view of terminals, drag-and-drop reordering, and auto-hide mode
- Folder colors - Color-code projects (red, orange, yellow, green, blue, purple, pink)
- Project switcher - Quick searchable project navigation overlay
- Workspace persistence - Auto-saves full layout, terminal state, and settings to disk
- Full terminal emulation - Powered by alacritty_terminal with complete ANSI support
- Search - Inline text search with regex support, case sensitivity toggle, and match count
- Link detection - Clickable URLs and file paths (supports
file:line:colsyntax) - File opener integration - Open detected files in your editor (VS Code, Cursor, Zed, Sublime, vim, etc.)
- Bracketed paste mode - Proper multi-line paste handling with escape sequence injection protection
- Shift+Enter - Send literal newline for multi-line input (useful for Claude Code, Python, etc.)
- Configurable scrollback - 100 to 100,000 lines
- Cursor blink - Toggleable cursor blinking
- Bell notification - Visual indicator when a terminal rings the bell
- Per-terminal shell selection - Choose a different shell for each terminal
- Context menu - Right-click for copy, paste, select all, and link actions
- Session backends - Keep terminals alive across app restarts using dtach, tmux, or screen (Unix)
- dtach support - Lightweight session persistence (preferred backend)
- Auto-detection - Automatically selects the best available backend (dtach > tmux > screen)
- WSL session support - Session backends work with WSL terminals on Windows
- Session manager - Save, load, rename, and delete named workspace sessions
- Export/import - Export workspaces to JSON and import them back
- Git worktree support - Create and manage git worktrees as projects directly from the UI
- Worktree sync watcher - Auto-discovers new git worktrees every 30 seconds
- Worktree auto-cleanup - Removes stale worktree projects when paths no longer exist
- Worktree path templates - Configure worktree paths with
{repo}and{branch}variables - Merge/stash on close - Options to merge, stash, fetch, push, or delete branch when closing a worktree
- Branch detection - Displays current branch, handles detached HEAD
- Diff stats - Tracks lines added/removed with cached git status
- Built-in themes - Dark, Light, Pastel Dark, and High Contrast
- Auto theme - Follows system light/dark appearance
- Custom themes - Load your own theme from a custom themes directory
- Configurable fonts - Font family, size (8-48pt), line height (1.0-3.0), and separate UI font size
- Command palette - Searchable list of all actions with keybinding hints
- File search - Fast file lookup within a project (respects .gitignore-style filtering)
- Settings panel - GUI for all preferences (theme, font, terminal, hooks, per-project settings)
- Theme selector - Live-preview theme picker
- Keybindings help - Categorized shortcut reference with search
- File viewer - Syntax-highlighted file preview with line numbers and search
- Diff viewer - Unified and side-by-side diff views with syntax highlighting
- Custom keybindings - Override any shortcut via
keybindings.json - Lifecycle hooks - Run commands on project open/close and worktree create/close (global or per-project)
- Per-project settings - Override global settings per project
- Shell configuration - Set default shell or pick per terminal (bash, zsh, fish, cmd, PowerShell, WSL)
- Hook terminals - Commands prefixed with
terminal:in hooks spawn visible PTY terminals (e.g.,terminal: claude -p "fix rebase conflict") - Hook monitor - Tracks execution history, status (Running/Succeeded/Failed), and duration for all hooks
- Git hooks -
pre_merge,post_merge,before_worktree_remove,worktree_removed,on_rebase_conflict,on_dirty_worktree_close - Environment variables - Hooks receive
OKENA_PROJECT_ID,OKENA_PROJECT_NAME,OKENA_PROJECT_PATH,OKENA_BRANCH,OKENA_TARGET_BRANCH, etc.
- Project services - Define services in
okena.yamlwith name, command, cwd, env vars - Docker Compose integration - Auto-detects and manages Docker Compose services
- Auto-start & restart - Services can auto-start on project open and auto-restart on crash
- Service panel - Monitor service status (Stopped, Starting, Running, Crashed) and ports
- Claude Code status - Real-time service status from status.claude.com
- Claude Code usage - OAuth-based usage tracking (5-hour, 7-day rate limits, credits)
- Codex status & usage - OpenAI Codex status monitoring with OAuth token refresh
- Both integrations are opt-in via settings toggles
- Remote API - Local HTTP/WebSocket server for remote terminal control (see
docs/remote.md) - Mobile app - Flutter + Rust FFI companion app for Android/iOS (see
docs/mobile-status.md) - Web client - Browser-based terminal access via built-in web UI
- Secure pairing - HMAC-SHA256 token auth with rate-limited pairing codes
- Built-in updater - Background update checks via GitHub Releases
- SHA256 verification - Downloaded updates are cryptographically verified
- Homebrew-aware - Skips self-update when installed via Homebrew
- macOS - Native traffic light buttons, extended PATH for homebrew shells
- Linux - Wayland maximize workaround, auto-detected shells
- Windows - Custom titlebar, cmd/PowerShell/WSL support with distro detection
- CPU usage, memory usage, and current time displayed at the bottom
Requires Rust toolchain (edition 2021).
cargo build --releasecargo run| Action | macOS | Linux/Windows |
|---|---|---|
| New terminal | Cmd+T | Ctrl+T |
| Close terminal | Cmd+W | Ctrl+W |
| Split horizontal | Cmd+D | Ctrl+D |
| Split vertical | Cmd+Shift+D | Ctrl+Shift+D |
| Navigate panes | Cmd+Alt+Arrow | Ctrl+Alt+Arrow |
| Next/prev terminal | Cmd+Shift+]/[ | Ctrl+Tab / Ctrl+Shift+Tab |
| Fullscreen terminal | Shift+Escape | Shift+Escape |
| Command palette | Cmd+Shift+P | Ctrl+Shift+P |
| File search | Cmd+P | Ctrl+P |
| Find | Cmd+F | Ctrl+F |
| Copy | Cmd+C | Ctrl+C |
| Paste | Cmd+V | Ctrl+V |
| Zoom in/out | Cmd++/- | Ctrl++/- |
| Reset zoom | Cmd+0 | Ctrl+0 |
| Toggle sidebar | Cmd+B | Ctrl+B |
| Settings | Cmd+, | Ctrl+, |
All shortcuts are customizable via ~/.config/okena/keybindings.json.
Settings are stored in ~/.config/okena/:
| File | Purpose |
|---|---|
settings.json |
Theme, font, shell, scrollback, hooks, and other preferences |
workspace.json |
Projects, layouts, and terminal state |
keybindings.json |
Custom keyboard shortcuts |
themes/*.json |
Custom theme files |
okena.yaml (project root) |
Project services and Docker Compose configuration |
| Guide | Description |
|---|---|
| Configuration | Settings, keybindings, custom themes, per-project overrides |
| Lifecycle Hooks | Hook terminals, git hooks, environment variables |
| Project Services | okena.yaml, Docker Compose integration, auto-restart |
| Git Worktrees | Worktree management, sync watcher, path templates |
| Remote Control API | HTTP/WebSocket API, pairing, authentication |
| Mobile Client | Flutter + Rust FFI mobile companion app |
- GPUI + gpui-component - UI framework
- alacritty_terminal - Terminal emulation
- portable-pty - PTY management
- smol - Async runtime
- tokio + axum - Remote control server
- syntect - Syntax highlighting
- serde_yaml - Service config parsing
This codebase has not been contaminated by human hands.
Every line of code, every architectural decision, every meticulously placed semicolon — pure, unfiltered Claude Opus. The human's contribution was limited to typing vague requirements like "make it work" and then pressing
Enterto approve tool calls with the mass-produced enthusiasm of a factory worker.If you find a bug, rest assured — it's not a bug. It's the AI testing whether you're paying attention.
Humans are kindly thanked for providing electricity.
MIT