Ply — Development skill for Claude Code
macOS workspace for the real Claude Code and Codex CLIs: tabs of up to four terminal panes, per-pane status (running, needs permission, your turn), plan progress, session history and worktrees.
How to install Ply
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open 0xR32/ply and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What Ply does
macOS workspace for the real Claude Code and Codex CLIs: tabs of up to four terminal panes, per-pane status (running, needs permission, your turn), plan progress, session history and worktrees. Rust daemon on libghostty-vt, React UI on GPUIX. Not an LLM wrapper.
Alternatives in Development
- Alethe Agents — A local-first desktop workspace for running, organizing, and resuming multiple coding agents and shells with r 511 ★
- State Analyzer.Cn — 你是 Omux 的终端状态分析器 94 ★
- /chrome-cdp — Chrome Browser Automation — Control the user's live Chrome browser via Chrome DevTools Protocol 86 ★
README
ply
ply is a macOS app that runs the real `claude` (Claude Code) and `codex` (Codex CLI) terminal UIs side by side, each in its own terminal pane, and adds what a terminal multiplexer lacks: a status per pane (running, needs permission, needs input, your turn, exited), progress from the agent's own plan, a stored history of every session, the CLIs' own worktrees, and a keyboard-first layout of tabs with up to four panes each (side by side up to three, quadrants at four). The agents keep running when the window closes.
ply is **not** an LLM wrapper. It makes no network requests, calls no model API, holds no keys, rewrites no prompts, hands no transcripts between CLIs and never picks a model or effort level: those are changed inside the CLI session. ply only manages terminal panes and tracks and stores sessions.
How it works
Two processes cooperate over three local Unix-socket protocols:
- Ply.app is a Bun process running React on GPUIX (
@gpuix/reactand the prebuilt@gpuix/nativefrom npm, painted by Zed's GPUI with Metal). It draws the tabs, panes, overlays and the terminal view, owns the keymap and the UI state, and sends control requests. It never opens a pty, never spawns an agent and never sees raw pty bytes: it receives decoded screen rows and draws each row as a line of styled text runs in Geist Mono. - plyd is a per-user LaunchAgent, not a child of the app. It owns every pane's process and pty, runs one libghostty-vt terminal per pane, encodes keys, mouse, focus and paste against that terminal's live modes, derives each pane's status from the CLIs' own hooks and notifications, and stores sessions in SQLite. Quitting or crashing the app stops nothing; reopening it shows every pane's current screen at once.
The protocols are **C1** control (JSON lines on `run/plyd.sock`: panes, tabs, sessions, status events), **C2** screen data (binary frames on
Related Skills
Herdr Pane Topic Sync
herdr plugin: auto-name panes & tabs after each agent's live topic (Claude Code, Codex, …) instead of 1, 2, 3.
Agent Deck
Local web dashboard to orchestrate multiple Claude Code & OpenCode CLI sessions — real PTY terminals, persona
Pane Resume
Put your agents back in the panes they were in. After a Mac restart, Warp and Superset restore your panes as i
Jmux Control
Control jmux sessions, windows, and panes programmatically. Dispatch Claude Code instances, monitor their prog
Evidence And Tabs
How a real pentester uses Burp's surfaces — Proxy history search, Repeater tabs, Intruder, Organizer, annotati
Agentbox
A confined Ubuntu container for running the Claude Code and Codex CLIs, with the tooling an agent needs.
Related Agents
Shux Tui QA
General hard-gate QA subagent for shux TUI, terminal UX, CLI, pane automation, plugin, attach, mouse/input, an
Org Verifier
Independently verifies that a change does what its author claims — reruns the repository gate, exercises CLIs,
Agent Of Empires
Claude Code, OpenCode, Mistral Vibe, Codex CLI, Gemini CLI Coding Agent Terminal Session manager via tmux and