>_ clhorde

Orchestrate multiple Claude Code CLI instances in parallel.
A daemon + TUI + CLI system built with Rust.

NORMAL | Workers: 2/4 | Queue: 3 | Done: 5 | Total: 10 | [interactive] ├──────────────────────┬───────────────────────────────────┤ │ #1 Review auth code (2.3s) │ │ │ #2 Fix login bug (1.1s)Claude is working on your │ │ #3 Add unit tests │ prompt... output streams here │ │ #4 Deploy script (0.5s)in real time. │ ├──────────────────────┴───────────────────────────────────┤ │ > type your prompt here_ │ ├─────────────────────────────────────────────────────────┤ │ i:insert q:quit j/k:nav Enter:view +/-:workers │
$ git clone https://github.com/abusi/clhorde.git
$ cd clhorde
$ cargo build --release
$ ./target/release/clhorded & # start daemon
$ ./target/release/clhorde # launch TUI

Why clhorde?

clhorde tmux-based tools
Architecture Hybrid: PTY for interactive + stream-json for one-shot Wraps interactive sessions in tmux panes
Work model Prompt queue + worker pool N independent sessions
Concurrency Queue any number, workers pull from queue Fixed number of parallel sessions
Dependencies Daemon + TUI + CLI (just needs claude in PATH) Requires tmux, git worktrees
Code isolation Fresh subprocess + optional worktree per prompt Git worktrees per session (always)
Interaction Full Claude TUI embedded via PTY + terminal emulator Full interactive terminal per session
Persistence Daemon survives TUI restarts, workers persist Tied to tmux session lifetime

Feature Highlights

Dual Architecture

Interactive workers get a full embedded PTY with the Claude Code TUI. One-shot workers use lightweight stream-json. Best of both worlds.

Worker Pool

Queue unlimited prompts and let 1–20 concurrent workers pull from the queue automatically. Batch 50 prompts and walk away.

Modal Interface

Vim-style modes: Normal, Insert, View, Interact, PTY Interact, and Filter. Navigate and control everything from the keyboard.

🔼

Git Worktrees

Opt-in per-prompt worktree isolation with Ctrl+W. Parallel workers modify separate directories—no file conflicts.

📦

Persistent Daemon

Workers survive TUI restarts. The clhorded daemon manages all workers in the background. Multiple TUI/CLI clients can connect.

💾

Persistent Sessions

Prompts are saved to disk as UUID v7 JSON files and restored on restart. Resume sessions with R to continue conversations.

🌐

Web Interface

Browser-based dashboard with real-time updates via WebSocket. Full xterm.js terminal for interactive prompts. REST API for automation.

Quick Start

See the Getting Started guide for a full walkthrough, or jump to the cheatsheet for a quick reference.