MaelyClaw Operator Console — TUI dashboard + embedded terminal + web UI
Project description
MaelyClaw Console
Operator dashboard for MaelyClaw — the autonomous AI coding agent runtime. Provides real-time monitoring of lanes, workers, cycles, and logs with an embedded AI terminal session (Claude Code, Codex, or shell) that has live MCP tools for engine control.
Works as both a terminal TUI and a browser-accessible web UI.
Installation
Requires Python 3.10+ and uv (recommended) or pipx.
Install from PyPI:
uv tool install maelyclaw-console
# or
pipx install maelyclaw-console
If you already installed the Node package from npm, you can also run:
maelyclaw console-install
For local development from a git checkout:
# From the maelyclaw repo root:
./console/install.sh
This creates a venv, installs dependencies, and symlinks maelyclaw-console and maelyclaw-web into bin/ at the repo root.
Alternatively, install manually:
cd console
uv venv .venv
uv pip install -e ".[dev]" -p .venv
Usage
Terminal TUI
maelyclaw-console --provider claude
Web UI (browser)
maelyclaw-web --provider claude
Opens at http://localhost:9090. Each browser tab gets its own session. The AI conversation persists across browser refreshes via --continue / resume --last.
Options
| Flag | Default | Description |
|---|---|---|
--provider |
From config | claude, codex, or shell |
--socket |
/tmp/maelyclaw.sock |
Engine IPC socket path |
--config |
~/.maelyclaw/maelyclaw.config.json |
Config file |
--log-file |
From config | Log file to tail. Defaults to logging.dir/maelyclaw.log or <stateDir>/logs/maelyclaw.log |
--tmux |
Off (TUI) / On (web) | Persistent terminal via tmux |
--port |
9090 | Web UI port (web only) |
--host |
0.0.0.0 | Web UI bind address (web only) |
Layout
+------------------------------------------+
| ✦ maelyclaw ● ▲ 2h15m idle |
| Ctrl+o panels F2-F5 jump F1 help |
+----------+-------------------------------+
| Lanes | Operator Terminal |
| ✓ closer| Claude Code / Codex / shell |
| ▶ health| with MaelyClaw MCP tools |
| — plan | |
+----------+ |
| Cycle | "check engine status" |
| 042 exec| "disable lane-improve" |
+----------+ "kill worker QA-038" |
| Workers | |
| ▶ QA-042| |
| ● fix | |
+----------+-------------------------------+
| Logs ⤢ Enter / l|
| [04-10 14:32] sched executing health |
| [04-10 14:33] QA-042 All tests passed |
+------------------------------------------+
Keybindings
Navigation (work everywhere, including inside the terminal)
| Key | Action |
|---|---|
Ctrl+o |
Cycle to next panel |
F2-F5 |
Jump to panel (Lanes, Cycle, Workers, Terminal) |
F1 |
Help overlay |
Outside the terminal
| Key | Action |
|---|---|
Tab / Shift+Tab |
Cycle panels |
1-4 |
Jump to panel |
h |
Help |
q |
Quit |
r |
Force refresh engine data |
e / d |
Enable / disable selected lane |
k |
Kill selected worker |
Enter |
Expand focused panel to full-screen modal |
l |
Expand logs with search and filter |
Inside the terminal
All keys go to the embedded CLI session. Use Ctrl+o or F2-F5 to navigate out.
Panels
Lanes
Shows all scheduled lanes with status icons (▶ running, ✓ done, ✗ failed, ○ disabled, — never run), next cron minute, and duration. Use e/d to enable/disable.
Cycle
Current cycle details: ID, label, branch, Linear issue, queue items with completion state, pending actions. Scrollable with mouse wheel.
Workers
Active and recent workers sorted by state (running first). Shows task name and elapsed time. Use k to kill. Border title shows active/total count.
Logs
Color-coded log stream with timestamps. Sources: scheduler (yellow), workers (blue), engine (dim), slack (purple), console (green). Expandable modal with search and source filtering.
Operator Terminal
Embedded PTY running Claude Code, Codex, or a shell. Auto-discovers MaelyClaw MCP tools for status, sessions, work-state, lane control, memory ops, log ops, spawn/kill workers, messages, and gate checks. On first launch, the AI introduces itself and suggests actions based on current engine state.
Configuration
The console reads ~/.maelyclaw/maelyclaw.config.json:
{
"agentDir": "/path/to/agent/workspace",
"targetRepoDir": "/path/to/target/repo",
"stateDir": "/path/to/state",
"logging": {
"dir": "/path/to/state/logs"
},
"defaults": {
"conversation": {
"provider": "claude",
"model": "opus"
}
}
}
agentDir— working directory for the terminal session; where.mcp.jsonis generatedstateDir— wherework-state.jsonlives (for cycle panel)logging.dir— optional override for the tailed log directorydefaults.conversation.provider— default--providerif not specified on CLI
Architecture
maelyclaw (TypeScript) — engine, scheduler, workers, IPC server
maelyclaw-mcp (TypeScript) — MCP server (engine + memory + log tools, stdio JSON-RPC)
maelyclaw-console (Python) — TUI dashboard + embedded terminal
maelyclaw-web (Python) — web UI via textual-serve
The console connects to the engine via Unix socket IPC (/tmp/maelyclaw.sock), polls every 5s for status updates, and tails the persistent MaelyClaw text log every 200ms. The embedded terminal spawns a PTY process with MCP environment variables so the AI CLI auto-discovers engine tools.
Key dependencies
- Textual — TUI framework with CSS layout, 38+ widgets, and web serving
- pyte — Python terminal emulator (ANSI/VT100)
- textual-serve — serves Textual apps in the browser via WebSocket
- Rich — terminal rendering (colors, styles, markup)
Development
# Run console tests
cd console
.venv/bin/python3 -m pytest maelyclaw_console/tests/ -q
# Or from repo root:
npm run console:test
npm run console:test bootstraps console/.venv automatically if it does not exist yet.
License
Same as MaelyClaw (see root LICENSE).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file maelyclaw_console-0.1.0.tar.gz.
File metadata
- Download URL: maelyclaw_console-0.1.0.tar.gz
- Upload date:
- Size: 48.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d7d089217d1ce07ceceea2df8fbbf2e88b8af3e94fe09889ac3c36270157ee7
|
|
| MD5 |
d4719a2563cb5bb2b4e0ea36ddc0e55f
|
|
| BLAKE2b-256 |
01ca94d91d65b11b058f67883d205d40c2da268208f9673f88465c50ffc22ec6
|
File details
Details for the file maelyclaw_console-0.1.0-py3-none-any.whl.
File metadata
- Download URL: maelyclaw_console-0.1.0-py3-none-any.whl
- Upload date:
- Size: 53.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b3859793b1a571d271c72d7163b9d9e3c309bf5622957896595ca24e45f61fa
|
|
| MD5 |
18c13d6ab01912442d0cc1a85fdee0f9
|
|
| BLAKE2b-256 |
5b76efd2a63ec48510b5470ead851554dc5865c7048afb41065ede4b76a6d2c5
|