macOS · public beta · free while in beta

Every terminal,
everywhere you are.

Agents, shells, servers: every terminal you have open, in one Mac window across split, timeline and grid. Swap to any of them the instant you need it, and the ones waiting on a decision follow you to your phone.

Download for Mac
First classClaude CodeCodexzshbashfishsshvim

50+ engineers on the waitlist

Multiplex
Grid
mcp-serverRunning
claudefeat/rate-limit

✓ 8 passing (1.2s)

docs-siteNeeds you
claudefix/landing-spacing

Read(Hero.tsx)

governance-svcFailed
codexfeat/audit-log

npm run build

on-callRunning
codexfeat/alert-webhook

✓ 4 passing (0.6s)

dev-serverRunning
zshmain

▲ ready on :3000

startship-cliDone
claudefeat/flags-parser

go test ./...

docs-site · needs you

wants to edit hero.css

01

Split · Timeline · Grid

Three views over the same live terminals. One key to switch.

02

“Needs you” alerts

Surfaces the sessions blocked on a decision, before they stall.

03

Pair your phone

Approve or redirect a run from anywhere you happen to be.

04

Claude Code, Codex, any shell

First-class agent support, plus every ordinary terminal you run.

The timeline

See every session
in one scroll.

Stop cmd-tabbing between terminal windows. The timeline stacks every live terminal newest-first, whether that's Claude Code, Codex, a dev server or a test watcher, so you can read the latest tool call, watch tests go green, and catch the one waiting on your approval before it stalls.

  • Live tool calls & diffs render inline, exactly like the terminal.
  • Type into any terminal without leaving the stack.
  • Focus › pops one session into full split view.
  • Multiplex · Timeline
    platform/mcp-serverclaude
    Running
    Add rate limiting to /v1/query: 100 req/min per key, 429 + Retry-After.

    I'll add a token-bucket limiter as middleware, wire it into the route, then cover it with tests.

    Write(src/middleware/rateLimit.ts)

    export function rateLimit({ rpm }) {
    const buckets = new Map()

    wrote 41 lines

    Bash(npm test -- rateLimit)

    PASS test/rateLimit.test.ts

    ✓ 8 passing (1.2s)

    Tests pass. Running the full suite to make sure nothing regressed.

    Working… (esc to interrupt)

    platform/docs-siteclaude
    Needs you
    The hero spacing is off. The gap between the two cards doesn't match the section padding.

    Update(src/components/Hero.tsx)

    - <div className="grid grid-cols-2 gap-6">
    + <div className="grid grid-cols-2 gap-8">

    applied 1 edit

    Edit(src/styles/hero.css): change the hero bottom padding to match the top.
    - padding: 64px 0 40px;
    + padding: 64px 0 64px;

    Do you want to proceed?

    ❯ 1. Yes

    2. Yes, and don't ask again this session

    3. No, tell Claude what to do differently (esc)

    platform/dev-serverzsh
    Running
    npm run dev

    next dev (Turbopack)

    Local: http://localhost:3000

    ▲ ready in 812ms

    compiled /layouts in 94ms

    platform/governance-svccodex
    Failed
    Log every admin mutation to audit_log with actor, action, before/after.

    Update(src/admin/routes.ts)

    + app.use('/admin', auditLog())

    applied 1 edit

    Bash(npm run build)

    error TS2345: Argument of type undefined is not assignable

    src/admin/audit.ts:22: 'actor' is possibly undefined

    Build failed. req.user can be undefined on service tokens. Should service tokens be audited?

    One workspace, three shapes

    Reshape your terminals to match the work.

    Same terminals, same keystrokes. Switch layout with a single key: S, T, or G.

    One terminal front and centre on the right, every other one listed on the left, so you can swap between them without losing your place.

    Multiplex
    SplitTimelineGrid

    Sessions

    mcp-serverRunning
    claudeAdd token-bucket rate limiting to /v1/query
    docs-siteNeeds you
    claudeFix inconsistent spacing on the docs hero
    governance-svcFailed
    codexAdd audit-log middleware to admin routes
    on-callRunning
    codexPage sev0/sev1 to #incident-response with runbook
    dev-serverRunning
    zshnext dev, hot reload on :3000
    startship-cliDone
    claudeSupport --key=value and short -k in the parser
    platform/mcp-serverclaude
    Running
    Add rate limiting to /v1/query: 100 req/min per key, 429 + Retry-After.

    I'll add a token-bucket limiter as middleware, wire it into the route, then cover it with tests.

    Write(src/middleware/rateLimit.ts)

    export function rateLimit({ rpm }) {
    const buckets = new Map()

    wrote 41 lines

    Bash(npm test -- rateLimit)

    PASS test/rateLimit.test.ts

    ✓ 8 passing (1.2s)

    Tests pass. Running the full suite to make sure nothing regressed.

    Working… (esc to interrupt)

    iOS app · coming soon

    Approve from anywhere.

    Scan once to pair Multiplex Mobile with your Mac. The moment a terminal needs a decision you get a push: approve, redirect, or type a follow-up from your phone, and it lands in the session instantly.

    Push on “needs you”

    Only the terminals actually blocked on you.

    Multi-host

    All your paired Macs in a single list.

    App Store · coming soon

    Multiplex

    docs-site needs you

    now

    Sessions

    raja@mac-studio · 2 need you

    docs-siteNeeds you

    Edit hero.css: change bottom padding to match top.

    ApproveRedirect
    mcp-serverRunning

    ✓ 8 passing (1.2s)

    governance-svcFailed

    error TS2345: actor possibly undefined

    dev-serverRunning

    ▲ ready on :3000

    Stop babysitting terminals.

    Download the Mac app free during beta, and join the waitlist for what's next, including the iOS app.

    Download for Mac

    Apple silicon only · no card required