Run many coding agents without losing the test story.
A Mac-first HTML deck for teaching agentic development, test automation, and parallel QA investigations.
Based on the requested cmux video topic plus current official cmux documentation.
Investigate flaky checkout spec
Status: waiting
23 passed
1 flaky
Payment form
Submit
The hard part is not starting an agent. It is supervising several.
QA work naturally splits into logs, UI, tests, code, CI, and review. cmux makes those streams visible.
Before
After cmux
cmux is a Mac terminal that adds agent supervision primitives.
It stays close to the terminal, but adds the missing cockpit pieces around it.
Ghostty rendering
GPU-accelerated terminal surface.
Split panes
Agent, tests, server, and browser together.
Vertical tabs
Task queue with branch, cwd, ports, and notifications.
In-app browser
Scriptable UI inspection and DOM actions.
CLI + socket
Programmatic workspace, surface, input, and status control.
Teach cmux as four nested units: workspace, pane, surface, process.
Once students know the hierarchy, every feature has a home.
codex / claude / opencode
npm test, playwright, pytest
localhost:3000
DOM, console, screenshots
Install cmux, then wire it into the agents your students already use.
Keep setup boring: one install path, one hook pass, one small verification.
$ brew tap manaflow-ai/cmux $ brew install --cask cmux $ cmux hooks setup $ cmux hooks setup codex $ cmux ping pong: true
DMG or Homebrew cask. The README recommends DMG for auto-updates.
macOS may ask for first-launch confirmation from an identified developer.
Install Claude Code, Codex, OpenCode, Gemini, or your preferred terminal agent.
Hook setup lets supported agents report resumable session IDs and attention events.
Each task becomes a visible lane instead of a hidden terminal tab.
For students, this is the difference between multitasking and chaos.
cmux sidebar
Git branch visible
Students can see which lane owns which branch or worktree.
Working directory visible
No more asking which folder the terminal is currently in.
Ports visible
Useful when dev server, mock server, and app server run together.
Latest notification text
The sidebar explains why an agent is waiting.
Put the entire QA investigation on one screen.
A strong cmux layout makes every pane answer one question.
Status: waiting for decision
1 flaky test
Payment form
Submit button
What change should we make?
Is the failure stable?
What is running locally?
What does the user see?
cmux turns agent waiting time into an explicit queue.
This is the feature students will feel immediately when several agents are running.
Agent emits event
cmux notify or OSC 9/99/777.
Pane lights up
Blue ring around the surface.
Sidebar marks unread
Badge and latest message.
Instructor jumps in
Cmd+Shift+U to latest unread.
$ cmux notify --title "Codex" \ --subtitle "Waiting" \ --body "Review locator strategy"
Teaching tip
Tell each agent when to notify: after test completion, permission request, failing build, or handoff. Students should never poll every pane manually.
The browser pane makes UI testing part of the same agent workspace.
For QA/SDET, this is where cmux becomes more than a terminal.
Snapshot
accessibility tree
Click/fill
DOM actions
Console/errors
debug evidence
Screenshot
failure artifact
cmux browser open-split http://localhost:3000 cmux browser surface:2 wait --text "Login" cmux browser surface:2 fill "#email" --text [email protected] cmux browser surface:2 click "button[type=submit]" --snapshot-after cmux browser surface:2 errors list cmux browser surface:2 screenshot --out failure.png
QA lesson
Students can ask an agent to inspect the UI, reproduce a user journey, collect console errors, and return evidence before proposing a fix.
cmux is controllable enough for agents and test scripts.
Every important workspace action can be driven by the CLI or JSON socket.
Workspace
list-workspaces
new-workspace
select-workspace
close-workspaceSurface
new-split right
list-surfaces
focus-surface
send-surfaceNotify
notify
list-notifications
clear-notificationsStatus
set-status
set-progress
log
sidebar-stateSystem
ping
capabilities
identify{"id":"ws","method":"workspace.list","params":{}}
{"id":"notify","method":"notification.create", ...}
Why this matters for SDET
Your build script can set status, progress, logs, and failure notifications while agents continue working in their own panes.
cmux claude-teams turns teammate agents into native splits.
Claude thinks it is using tmux; cmux translates those pane commands into its own socket API.
Run
cmux claude-teams
Enable
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
Shim
tmux commands intercepted
Translate
split-window -> surface.split
send-keys -> surface.send_text
Display
Teammates appear as cmux panes with sidebar metadata.
Instructor framing
Use teammate mode when one root agent should delegate sub-tasks: inspect tests, explore code, generate patch, or review changes. cmux keeps those teammates visible instead of hiding them inside tmux panes.
Use Git worktrees so multiple agents can code without stepping on each other.
cmux custom workspace commands can create a repeatable multi-agent layout.
Worktree topology
main repo
clean source of truth
wt/bug-ui
Codex
wt/test-gen
Claude
wt/review
OpenCode
"commands": [
{
"name": "Worktree Agents",
"workspace": {
"layout": { "direction": "horizontal", ... }
}
}
]
Classroom rule
Give each agent a branch, a worktree, and one owner. Merge only after tests and review pass. cmux gives the layout; Git gives the isolation.
Long QA investigations can survive a restart.
cmux restores app-owned layout first, then supported agents can resume from saved session IDs.
windows, workspaces, panes, cwd, browser URL/history
supported agent session ID and sanitized launch command
layout rebuilds before commands run
native resume command starts when trusted/enabled
Supported agent examples
Claude Code - claude --resume <id>
Codex - codex resume <id>
OpenCode - opencode --session <id>
Gemini - gemini --resume <id>
Copilot - copilot --resume <id>
Important: cmux does not checkpoint arbitrary process memory.
Mac users can supervise remote dev/test boxes as cmux workspaces.
The local app shows the workspace; the compute can live on a server.
MacBook running cmux
local sidebar, panes, browser, notifications
Remote machine
agent process, dev server, test runner, repo
cmux ssh user@remote
Browser panes
localhost:3000 routes through remote network
Drag and drop
files upload via scp
Notifications
remote cmux notify appears locally
Reconnect
backoff and reattach on drops
Reproduce, inspect, patch, and verify a bug in parallel.
This is a practical classroom demo because each agent has a narrow job.
Lane 1: Reproducer
Browser pane drives the user journey, captures screenshot, console, and DOM snapshot.
Lane 2: Test writer
Agent creates a failing Playwright/Cypress test in an isolated worktree.
Lane 3: Fix agent
Agent inspects code, proposes patch, runs targeted tests.
Lane 4: Reviewer
Separate agent checks locator quality, race conditions, and regression risk.
Use agents as specialized SDET roles, not a single magic worker.
cmux makes role separation visible enough for students to practice.
| Role | Agent task | Human checkpoint |
|---|---|---|
| Test designer | Create edge-case matrix and prioritize by risk. | Teacher approves coverage before code. |
| Automation builder | Implement tests and page objects in worktree. | Run locally and inspect failures. |
| Flake hunter | Review waits, selectors, retries, timing, network assumptions. | Reject brittle locators. |
| Reviewer | Diff review, security concerns, missing assertions. | Merge only after test + review. |
Parallel agents need explicit ownership and review gates.
cmux improves visibility, but the instructor still defines the operating rules.
One branch per agent
Use worktrees or separate branches. Never let two agents edit the same files casually.
One task per lane
A workspace should answer one ticket, one bug, or one lab goal.
No blind approvals
Review permission prompts, shell commands, and network actions before accepting.
Test before merge
Require targeted tests, full relevant suite, and human review.
Capture evidence
Screenshots, console errors, failing test output, and final passing run.
Instructor mantra: fast parallelism, slow merge.
Teach cmux through one small web app and one real bug.
This agenda keeps the class moving from concept to hands-on workflow.
npm run dev cmux browser open-split localhost:3000 cmux notify --title "Tests" --body "Done" cmux claude-teams
Demo asset
Use any small Todo, Login, Cart, or Dashboard app with one seeded bug and one existing test suite.
Spawn three agents, then converge on one tested patch.
The goal is not agent spectacle. The goal is disciplined parallel QA.
Agent A
Reproduce bug
Collect browser evidence
Write failing test
Agent B
Inspect code path
Patch the defect
Run targeted tests
Agent C
Review diff
Find flaky assumptions
Suggest missing assertions
Evidence
screenshot + console + DOM notes
Patch
minimal diff in owned worktree
Tests
one failing test now passing
Review
human-approved merge plan
Lab submission: screenshot of cmux workspace + PR/diff + test output.
The commands students should remember first.
Keep this as the final reference slide while they work.
Workspaces
Cmd+N new workspace
Cmd+1..9 jump
Cmd+Shift+W closeSplits
Cmd+D split right
Cmd+Shift+D split down
Option+Cmd+Arrow focusBrowser
Cmd+Shift+L open browser
cmux browser snapshot
cmux browser errors listNotifications
Cmd+I panel
Cmd+Shift+U latest unread
cmux notify --title ...Agents
cmux hooks setup codex
cmux claude-teams
worktree per agentRestore/remote
Cmd+Shift+O reopen
cmux restore-session
cmux ssh user@remotePrimary references: cmux.com, cmux docs, GitHub README, and the requested YouTube topic URL.