The Persistent Workflow Orchestrator for AI-Native Development
Aethel is a terminal multiplexer built for developers who work with AI coding assistants. Unlike tmux or screen, Aethel understands projects — it persists your entire workspace across reboots, automatically resumes AI sessions, and provides typed panes with context-aware behaviors.
Type aethel after a reboot and your entire multi-tool environment snaps back: Claude Code conversations resumed, webhooks re-connected, builds re-watching.
Agentic developers run 5-10 terminal sessions per project: AI assistants, webhook listeners, build watchers, SSH tunnels. Every reboot destroys this setup. Re-opening tabs, re-attaching sessions, and re-typing resume commands is a daily 10-15 minute tax.
Existing tools don't solve this:
| Tool | Gap |
|---|---|
| tmux / screen | No concept of "projects" or typed sessions. No automatic resume. |
| Terminal emulators | Great rendering, zero persistence across reboots. |
| IDE terminals | Tied to a single editor. Can't orchestrate standalone CLI tools. |
Aethel continuously snapshots your workspace — tabs, panes, layouts, working directories, and metadata. On restart, everything is restored. Ghost buffers render the last 500 lines instantly while shells re-initialize.
- Output replay — a ring buffer per pane captures PTY output. Reconnecting clients instantly see previous terminal content.
- Layout persistence — the pane split tree is serialized to JSON and stored in the daemon. On reconnect, the exact split configuration is restored.
Binary split tree enables arbitrarily nested horizontal and vertical splits. Each split has its own direction and ratio. Mouse clicks resolve to the correct pane via spatial hit-testing.
Pane borders display the shell's current working directory in real-time. Aethel auto-injects OSC 7 hooks into bash, zsh, and PowerShell at spawn time — no manual shell configuration required. Fish emits OSC 7 natively.
Full mouse support — click tabs to switch, click panes to focus, scroll wheel for terminal history. All keybindings are configurable via config.toml.
Select text in terminal panes with Shift+Arrow (character), Ctrl+Shift+Arrow (word), or mouse click+drag. Enter copies selection to clipboard, Ctrl+V pastes with bracketed paste support. The TOML plugin editor also supports full text selection, clipboard, and paragraph navigation.
Rename tabs (F2) and panes (Alt+F2). Cycle through 8 tab colors (Alt+C) for visual distinction. Clipboard paste (Ctrl+V) with cross-platform support.
Claude Code sessions resume automatically after reboot. Aethel assigns a UUID to each AI pane at creation and uses claude --resume <session-id> on restart — no manual copy-paste. Other tools can use regex scraping or command re-run strategies.
Panes aren't just shells. Press Ctrl+N to create a typed pane from 4 built-in plugins:
| Plugin | Description | Resume Strategy |
|---|---|---|
| Terminal | System shell | Restore working directory |
| Claude Code | AI coding assistant | UUID-based session resume |
| SSH | Remote connection (POC) | Re-run same command |
| Stripe | Webhook listener (POC) | Re-run same command |
Create your own plugins as TOML files in ~/.aethel/plugins/ without recompiling. Plugins define commands, error handlers, persistence strategies, and pre-configured instances.
Linux, macOS, and Windows from day one. PTY management via creack/pty (Unix) and ConPTY (Windows). IPC over Unix domain sockets or Named Pipes.
aethel (TUI Client)
├── Bubble Tea UI with tabs, splits, status bar
├── Keyboard-driven navigation
└── Connects via IPC
│
▼
aetheld (Daemon)
├── PTY session management
├── State persistence (JSON snapshots)
├── Resume engine (regex scrapers)
└── Plugin registry (TOML definitions)
See ARCHITECTURE.md for detailed design decisions.
- Docker or Go 1.25+
# With Docker (no local Go required)
./scripts/dev.ps1 build # PowerShell (Windows)
./scripts/dev.sh build # Bash (Linux/macOS)
# With local Go
make build# Start the daemon
aethel daemon start
# Launch the TUI (auto-starts daemon if needed)
aethel| Key | Action |
|---|---|
Ctrl+T |
New tab |
Ctrl+N |
New typed pane (plugin dialog) |
Ctrl+W |
Close active pane |
Alt+W |
Close active tab |
Alt+H |
Split horizontal |
Alt+V |
Split vertical |
Tab / Shift+Tab |
Navigate panes |
F2 |
Rename active tab |
Alt+F2 |
Rename active pane |
Alt+C |
Cycle tab color |
Alt+PgUp / Alt+PgDn |
Scroll page up/down |
Ctrl+V |
Paste from clipboard |
Shift+Arrows |
Select text |
Enter |
Copy selection |
Ctrl+Q |
Quit |
All keybindings are configurable in ~/.aethel/config.toml under [keybindings].
Aethel looks for ~/.aethel/config.toml:
[daemon]
snapshot_interval = "30s"
auto_start = true
[ghost_buffer]
max_lines = 500
dimmed = true
[ui]
tab_dock = "top"
theme = "default"
mouse_scroll_lines = 3
page_scroll_lines = 0 # 0 = half-page (dynamic)
show_disclaimer = true # beta disclaimer on startup
[keybindings]
quit = "ctrl+q"
new_tab = "ctrl+t"
close_pane = "ctrl+w"
split_horizontal = "alt+h"
split_vertical = "alt+v"
next_pane = "tab"
prev_pane = "shift+tab"
rename_tab = "f2"
rename_pane = "alt+f2"
cycle_tab_color = "alt+c"
scroll_page_up = "alt+pgup"
scroll_page_down = "alt+pgdown"
paste = "ctrl+v"cmd/
├── aethel/ # TUI client
└── aetheld/ # Background daemon
internal/
├── clipboard/ # Cross-platform clipboard read (Win32 API, pbpaste, xclip)
├── config/ # TOML configuration
├── daemon/ # Session management, message routing
├── ipc/ # Length-prefixed JSON protocol, client/server
├── persist/ # Atomic workspace/buffer persistence (JSON + binary)
├── plugin/ # Pane plugin system (registry, TOML loading, scraper)
├── pty/ # Cross-platform PTY (Unix + Windows)
├── ringbuf/ # Circular byte buffer for PTY output history
├── shellinit/ # Automatic shell integration (OSC 7 injection)
└── tui/ # Bubble Tea model, tabs, panes, layout tree, styles
All commands are available via scripts/dev.sh (Docker, no local Go) or make (local Go):
| Task | Docker (scripts/dev.ps1 / scripts/dev.sh) |
Local Go |
|---|---|---|
| Build | build |
make build |
| Test | test |
make test |
| Test + race detector | test-race |
make test-race |
| Lint | vet |
make vet |
| Cross-compile | cross |
make cross |
| Docker image | image |
— |
See CONTRIBUTING.md for development guidelines.
| Milestone | Status | Description |
|---|---|---|
| M1: Foundation | Done | Daemon, TUI, IPC, PTY, tabs, splits, shell integration, mouse, scrollback, daemon lifecycle |
| M2: Persistence | Done | Workspace snapshots, ghost buffer persistence, shell respawn, reboot-proof sessions |
| M3: Resume Engine | Done | Regex scrapers, token extraction, AI session resume via pre-assigned UUIDs |
| M4: Plugin System | Done | TOML plugins, typed panes, pane creation dialog, error handlers, window size persistence |
| M5: Polish | Planned | JSON transformer, observability, encrypted tokens, OS service integration |
| M6: Pane Focus | Planned | Full-window focus mode for single pane |
| M7: Pane Notes | Planned | Side-by-side note-taking linked to panes |
| M8: Bubble Tea v2 | Done | Bubble Tea v2/Lipgloss v2 migration, text selection, clipboard, editor enhancements |
See ROADMAP.md for detailed progress and feature descriptions.
MIT — Copyright (c) 2026 Artjoms Stukans