One named rig = a whole workspace
A rig stores project path, terminal count, layout, and per-slot name, role, startup command, and auto-start. Load it to set the path and rebuild the slots; launch it to start the entire grid in that folder.
A rig captures your project path, shell count, grid layout, and every named, role-tagged slot with its startup command. Define the setup once, launch the entire grid from the sidebar.
A rig is a saved, reusable terminal workspace: a project path, a shell count, a grid layout, and a list of named, role-tagged slots, each with an optional startup command and an auto-start flag. Instead of re-opening shells, cd-ing into your project, and re-typing npm run dev / claude / git status every session, you define it once and launch the whole grid. Rigs are the backbone of 13x — Resume, Relay, Map context, and Broadcast all attach to rig slots by their stable slot ids.
A rig stores project path, terminal count, layout, and per-slot name, role, startup command, and auto-start. Load it to set the path and rebuild the slots; launch it to start the entire grid in that folder.
Startup commands are stored verbatim in the rig and only run when a slot's auto flag is set — typed into the shell as if you entered them. 13x never runs hidden commands.
At launch only auto-start slots come up eagerly. Every other slot renders empty with a TERMINAL / RELAY activity picker, so you start it when you need it instead of spawning every shell up front.
Slots carry a role — SHELL, DEV, TEST, GIT, AGENT, LOG, or SCRATCH. AGENT slots can attach 13x Map code-context on launch, and the role drives the empty-slot picker and downstream agent selectors.
rigs.json is a versioned envelope. A corrupt file is moved aside to rigs.corrupt.<timestamp>.json with a readable error instead of crashing, and a legacy presets.json is migrated automatically on first load.
Rigs live entirely on disk in the app config dir. No account, no sync, no network call — the whole feature works fully offline.
Define the rig
Open the RIG editor, name it, pick a project path and a layout, then set a shell count of 2 to 12. For each slot, set a name, a kind (Terminal or Relay), a role, an optional startup command, and the auto-start flag.
Save it
Click SAVE (or Ctrl+S) to persist the draft to rigs.json. An unsaved setup prompts for a name; an existing rig updates in place. Backend normalization fills slot ids, reindexes 1..N, and clamps Map limits.
Launch the grid
Click LAUNCH (or Ctrl+L from idle) and 13x validates the path, then starts a PowerShell session per eager slot in that folder and auto-runs each auto-start command. Lazy slots come up empty.
Start slots on demand
Click TERMINAL on an empty slot to lazily launch just that one PTY without tearing down the rest of the grid, or click RELAY to define a headless relay chain on that slot.
Load any saved rig
Click a rig in the sidebar RIGS list to load it back into the draft — it sets the path and count, rebuilds and reconciles slots, marks the rig active, and clears the dirty marker.
In a single versioned JSON file at <app config dir>/com.thirteenx.desktop/rigs.json (on Windows: %APPDATA%\com.thirteenx.desktop\rigs.json). Per-slot task-title overrides live in <project root>/.13x/slot-titles.json. All local, never uploaded.
No. Startup commands are stored verbatim and visible in the rig editor, and a command only runs when its slot's auto flag is set — typed into the shell as if you entered it, only in the selected project path.
13x moves the bad file aside to rigs.corrupt.<timestamp>.json, surfaces a readable error, and starts from an empty list rather than crashing. The corrupt file is preserved, not deleted, so nothing is silently destroyed.
Not yet. Slots are PowerShell-only — the shell is hardcoded across the type, defaults, and editor, with no per-slot shell choice in the UI. On Windows pwsh falls back to powershell.exe; on macOS/Linux pwsh must be installed.
13x is local-first and free of telemetry — your code, commands and shells never leave the machine. Join the waitlist for the next build.