Core Concepts
kexsh has a simpler resource model than tmux. Instead of four layers (server → session → window → pane), kexsh uses just two: Terminals and Views.
Terminals
Section titled “Terminals”A Terminal is an independent process running a shell (or any program). Terminals live in a flat pool managed by the kexsh server — they don’t belong to any hierarchy.
Each terminal gets an auto-assigned short ID (like a3f) similar to Docker container IDs. You can also give terminals a name:
kexsh terminal create --name devBoth the ID and name can be used to reference a terminal in any command.
A View is a layout configuration that defines which terminals are displayed and how they’re arranged. Views don’t own terminals — they reference them.
Key properties:
- The same terminal can appear in multiple views
- Deleting a view doesn’t affect the terminals it references
- Creating a terminal automatically wraps it in a temporary view
You can create named views for persistent layouts:
kexsh view create codingkexsh view add coding a3fkexsh view add coding b7cA Pane is a rectangular region within a view that displays a terminal. Panes are created by splitting — you don’t manage them directly. Use Command mode (Ctrl-a) to split, navigate, and resize panes.
How it compares to tmux
Section titled “How it compares to tmux”| Concept | tmux | kexsh |
|---|---|---|
| Hierarchy | server → session → window → pane | server → terminal + view |
| Terminal ownership | Pane owns the process | Terminal is independent |
| Reuse | One pane per process | Same terminal in multiple views |
| Naming | Sessions and windows | Terminals and views |
| Default behavior | Creates session + window + pane | Creates terminal + temporary view |
The server
Section titled “The server”The kexsh server is a background daemon that owns all terminal processes. It starts automatically when needed and persists across terminal closures. Terminals survive as long as the server is running — detach and reattach freely.
kexsh server status # Check if the server is runningkexsh server stop # Stop the server (kills all terminals)