Skip to content

Launch Control

This page lists Launch Control keys for usage, effort, capacity, routing, drain, tmux Agent, and alias history. Default configurable actions are listed in the generated TUI keymaps reference.

Launch Control

Press ,m from any tab to open Launch Control — one keyboard-driven surface for launch configuration, model aliases, temporary provider routing, and launching an interactive agent CLI in a new tmux window. The top level has three visible sections: Launch settings, Built-in size aliases, and Your aliases. Consecutive visible sections are separated by exactly one non-selectable blank row; there is no leading, trailing, or doubled spacer.

Data rows use the grid ownership gutter | name | value/model | state. Labels such as launch, setting, role, user, and bucket do not appear as their own column. See TUI migration notes. User-owned aliases and buckets still have the tan ▌ ownership gutter, misplaced built-in aliases keep a gold ! marker in the name cell, and collapsed buckets put ▸ directly before the bucket name.

Launch settings contains six rows: default model, epic lander, big epic lander, big epic starts at, default effort, and max runners. The three model rows show raw alias/config value → effective provider/model. big epic starts at shows the effective bead.big_epic_phase_threshold as <N> phase or <N> phases: epics with N or more authored phases use the big epic lander, while smaller epics use the regular epic lander. default effort and max runners show their launch-effective scalar values and any active temporary override state.

Alias rows show the alias name, effective provider/model as a provider-themed badge, and a state tag — configured, implicit / implicit → @<fallback> / implicit → @<fallback> @ <effort>, or an override · <time> left / override · until cleared chip when a temporary override is active. Configured references use the same configured → @<target> @ <effort> form. A model-specific effort carried by an override appears beside the effective provider/model badge. When one or more providers have temporary routing state, the title adds a compact line for active priority and/or disables. Priority renders as priority: CODEX ★ <time>, hard disables as disabled providers: CODEX <time>, and soft disables as CLAUDE soft <time>.

The alias area is split into Built-in size aliases and Your aliases. Each header reports the aliases represented by its rows (including members of collapsed custom buckets) and its bucket count. Built-in size aliases always lists exactly five rows in size order — @xsmall, @small, @medium, @large, @xlarge — with no bucket to drill into; each row is edited, overridden, reset, or cleared directly like any other alias row. Your aliases holds only user-owned aliases and custom buckets, in alphabetical order. If there are no custom aliases or buckets, Your aliases remains visible with a non-selectable hint naming llm_provider.model_aliases.custom.

Custom buckets group your own aliases under a shared display name, either through model_aliases.buckets.<name> or a custom alias's bucket: tag; there is no built-in bucket for a custom alias to join, so every bucket that appears is entirely user-owned. Each collapsed bucket row reports the member count and active overrides, while the description strip summarizes distinct effective models. Open a bucket with l, Right, or Enter; return with h or Left. Inside the bucket, each alias keeps its own configured/implicit state and can be edited, reset, overridden, or cleared independently. A configured description under model_aliases.buckets.<name> replaces the default. A custom bucket renders its bucket state in the ownership accent, and the drilled-in title ends with · custom bucket plus the ownership glyph.

The two-line strip below the list explains the highlighted row. Launch settings show their config path, effective value, and boundary/override context. Builtin aliases use fixed descriptions. User aliases use llm_provider.model_aliases.custom.<name>.description; a malformed user alias without one shows that config path as the fix. A non-pool alias with an explicit effort uses the second line to say whether it matches or overrides the configured default. For a selector-valued alias, the strip lists every parsed member with an available/unavailable marker. A round-robin pool's row state includes an availability count such as pool 2/2 that counts only pool members (a last-resort tail does not inflate the denominator), and → marks the exact next peeked selection without advancing its cursor — including when the tail is selected. After the last pool member, a fallback: separator introduces last-resort rows. An ordered fallback labels candidates in priority order, marks the current winner, and never reads rotation state. The row's provider/model/effort badge is derived from that same selected member. Temporarily hard-disabled providers count as unavailable for this display and render as a red ×. Soft-disabled members stay selectable and still count in pool <available>/<total>: a selected one renders as amber → ✓ provider/model@effort, and a spared one as amber × provider/model@effort, with no trailing soft chip. Temporary provider priority uses distinct wording: the preferred member is labeled priority, and other usable members that remain behind it are labeled backup. If a temporary alias override targets a hard-disabled provider, the override is preserved but paused: the row shows the live fallback/pool target, the state tag says the override is paused, and the description names the disabled provider that must expire or be re-enabled before the override resumes. An active override whose provider remains available, including a soft-disabled one, still bypasses selector choice for the override's lifetime.

If a builtin size alias is mistakenly configured under llm_provider.model_aliases.custom, opening the panel emits one warning toast listing every affected @alias. A gold warning glyph remains on the affected alias row even while a temporary override is active, and highlighting it replaces the normal description with the same actionable advice. Move the entry's model value from llm_provider.model_aliases.custom to llm_provider.model_aliases.builtin; sase's TUI identifies the misplaced entry but does not rewrite the configuration automatically. Because ownership follows the alias kind rather than where it is configured, the misplaced alias stays in the Built-in size aliases section — never inside a custom bucket — and does not receive the ownership gutter.

Navigate with j/k (or arrows / Ctrl+N / Ctrl+P) and act on the highlighted row. Navigation, and jump hints, skip headers, spacer rows, and the empty-custom hint.

Key Action
l / Right / Enter Open the highlighted bucket
h / Left Back to the top level from an open bucket
' Jump — paint adaptive hints; a hint moves the highlight without activating the row, and a second ' jumps back
o Override — set/change a time-bound temporary alias/default-effort/runner-limit override
x Clear — remove the active temporary override on the highlighted override-capable row
e Edit — change the persistent configured value
r Reset — unset an alias/model setting or the big-epic threshold
p Providers — disable, prioritize, or re-enable registered providers for future routing
u Usage — inspect cached provider subscription usage and request a bounded update
t tmux Agent — launch an interactive agent CLI in a new tmux window
H History — view recorded prior runs for the highlighted alias, alias-backed launch setting, or bucket
Ctrl+E Effort — persistently edit, temporarily override, or clear the global default effort
Ctrl+R Limit — persistently edit, temporarily override, or clear the global runner limit
Esc / q Close the panel

Providers · Usage

Press u in Launch Control to open the read-only Providers · Usage view. The same view is available from the global command palette as Open Providers · Usage, with search aliases including usage, quota, limits, capacity, subscription, and providers.

The first paint reads only the local usage cache. Each provider row shows remaining capacity or collection status, applicable account scope, freshness, and an Updating… marker when a durable refresh is live. Select a provider for its plan, account mode, collection status, last observation, and per-window remaining percentage, reset, age, state, and source. The layout drops the meter and combines detail columns as the terminal narrows.

Rows reserve the orange ⚠ failing badge for collectors with three or more consecutive probe failures. The selected provider detail shows collector health for both degraded and failing states, including the failure streak, failing-since age when known, and last successful probe age when known. This health describes the collector pipeline only: stale-but-numeric allowance data can still render, passive stream observations do not hide a dead probe pipeline, and the indicator never changes launch routing.

The application header groups independently selected usage windows by provider on the right of the existing title row, for example:

🎭 62% 3d4h · fable 0% 1d8h  🤖 81% 5d2h

The title is centered on the header line. Usage occupies a right-docked reserve sized so the complete title still fits centered; changing usage text never moves the title, and the navigation and routing controls on the row below stay put. The complete title has priority: sase's TUI never truncates it merely to show more usage, and a clipped title keeps the full string in its tooltip.

The rendered segment owns one quiet space before the first provider icon and one after the block. Each provider icon appears once, followed by one space, and providers are separated by two quiet spaces with no inter-provider punctuation. Windows of the same provider are joined with a middle dot (·). A single visible window has no extra separator even when hidden windows remain.

The default weekly all-model window renders as <remaining-percent> <reset-countdown>; additional selected windows include compact names such as fable, 5h, mo, 5h/fable, or 5h/gemini. Compact names omit redundant weekly and all-model components and drop the family: prefix of family-scoped windows (5h/3p, not 5h/family:3p) while retaining model/family distinctions; tooltips (scope: family: 3p) and sase usage list (scope=family:3p) still show the session scope; scope? means the provider did not expose exact applicability. The name, percentage, and reset countdown share the window's ten-step remaining-capacity color, from red (nearly exhausted) to blue (nearly full), except an exact 0% highlights the window's whole value run — its name, percentage, and reset countdown together — with the inverted red style. Provider icons, middle dots, provider gaps, and outer padding keep their normal surfaces; a non-zero window's name and rejected marker do too. Structural punctuation is neutral, normal weight in both themes. Which windows appear, and at what remaining percentage, is fully configurable through llm_provider.usage_metrics.indicator.

Stale or unknown-age numeric observations render with neutral text and disclose their freshness in the tooltip instead of adding a visible marker. <1% remains a low but nonzero reading on the normal badge surface. ?% 0h0m↻ means the window's reset has passed and sase's TUI is awaiting a new observation, retaining the last known percentage only in the tooltip. A bare ? in the countdown position means the provider never reported a reset time. ! marks a vendor-rejected window that still shows remaining capacity. An exact 0% window never shows it, because the inverted red run already signals exhaustion, so every provider's exhausted window looks the same whether or not its vendor reports a rejection. Collector failures do not add a header warning glyph; selected failing windows keep collector-failure prose in the tooltip, and model picker hints keep their own separate ⚠ usage failing identity.

Provider groups always render in provider-name order. Within a provider, the default weekly all-model window is first, followed by additional windows by window key. Attention is shown only through color and markers; it never changes order. sase's TUI shows the longest prefix of complete windows that fits the measured header remainder after the icon and unclipped title, allowing the final provider group to be partially visible, before adding a +N overflow count. If no complete window prefix plus disclosure fits, sase's TUI falls back through usage N, N, and …, relaxing the text-only padding at one-cell boundaries. Every selected and overflowed window's full identity, exact key, precise percentage, scope, effective display policy, and reset timestamp are in the tooltip. Clicking the usage cluster — including a window, +N, usage N, a bare count, or … — opens Providers · Usage at the first displayed provider and does not expand the header. Clicking the routing pill still opens Config > Launch. The Usage command is also reachable from Launch Control's u and the command palette when there is no display space at all.

Press u inside the view to submit or join bounded refresh work for eligible providers. The modal stays responsive, reattaches to an in-flight refresh when reopened, reloads the cache as operations settle, and reports partial failures by provider. Enter focuses the detail table, Tab moves focus, j/k navigate, and Esc/q closes. Collection requires llm_provider.usage_metrics.enabled; see Subscription Usage.

On big epic starts at, Enter and e open a focused positive-integer editor, and r previews a reset. The input accepts an unsigned base-10 whole number with minimum 1 and no spaces, signs, floats, or booleans; the inline constraint reads minimum 1 · package default 5. The preview targets the writable user-base sase.yml or its chezmoi source at bead.big_epic_phase_threshold. Reset uses an unset operation so lower-precedence or package defaults resume; it does not write a literal 5. There is no temporary threshold override. Pressing o or x on that row warns and points back to Edit/Reset.

After a successful threshold write, Launch Control reloads the effective value and the epic-lander row descriptions from the same provider/launch snapshot. If a higher-precedence layer keeps the requested user value from winning, the notification reports the actual effective value and the requested value. Dirty Git-backed targets receive the standard tracked commit/pull/push offer with chore: update big epic phase threshold.

Default effort controls

Ctrl+E works from every alias and bucket row because default effort is global. The Default Effort card shows the exact value used for new launches and, while a temporary override is active, the configured value beneath it. Press e to edit permanently, o to override temporarily, or x to clear the active temporary override; x is shown only when there is something to clear. Explicit prompt effort and effort carried by an alias or selected pool member still win, and already-running agents are unaffected.

Both Edit and Override open the same ordered, single-key effort ladder: 1 none, 2 minimal, 3 low, 4 medium, 5 high, 6 xhigh, and 7 max. Edit also offers 0 Provider default. That option writes the schema's empty sentinel into the user-base sase.yml, deliberately masking a lower-precedence package/plugin value; Override does not offer a pseudo-level, because cancelling or clearing honestly resumes configured/provider behavior. Config-derived values are best-effort: a provider that cannot honor a level retains its provider behavior.

Temporary effort Override reuses the model-alias duration workflow unchanged: 15m, 30m, 1h, 2h, 4h, Until cleared, a combined custom duration, or t for an exact local time/date. It is machine-wide state in ~/.sase/llm_effort_override.json; setting replaces the prior effort override, expiry is enforced on the next launch, and Clear is idempotent. This state is independent of ~/.sase/llm_override.json, which stores concrete model-alias overrides.

Permanent Edit always targets the writable user base config rather than a project-local layer. Its preview shows llm_provider.default_effort, configured before/after values, the actual target, validation, and the source-preserving YAML diff. With use_chezmoi: true, the actual write goes to the chezmoi source and the target is applied before sase's TUI reports success. A dirty Git-backed target receives the usual tracked commit/pull/push offer with chore: update default model effort. An active temporary override remains launch-effective after this write until it expires or is cleared; the preview and success notification both make that explicit.

Runner capacity controls

Ctrl+R is a fixed Launch Control binding and works from every alias, collapsed bucket, and open bucket. It is not a leader-keymap setting. The Runner Capacity card shows the current effective capacity budget and, while a temporary override is active, its remaining time plus the configured value. Press e to edit the user-base configuration, o to set a temporary machine-wide override, or x to clear an active override.

Edit and Override open a focused positive-integer card. Edit is prefilled with the configured value; Override is prefilled with the current effective value. The input accepts an unsigned base-10 whole number with minimum 1 and no product maximum. A persistent edit previews the exact max_running_agents path, actual user or chezmoi source target, configured before/after values, validation diagnostics, and source-preserving YAML diff. Its tracked commit offer uses chore: update max running agents. A higher-precedence overlay can keep the configured effective value different from the requested user-layer value, which the reload notification reports truthfully.

Temporary Limit overrides reuse the same relative/custom/exact-time duration cards as model and effort overrides. The versioned machine-wide record is ~/.sase/max_running_agents_override.json; setting a value replaces the previous runner-limit override, now >= expires_at expires it, and Clear is idempotent. A persistent edit does not clear a live temporary override. Lowering the effective cap never stops an already-running agent: occupied capacity may temporarily exceed the cap, and new work waits until enough capacity drains. Raising the cap lets eligible parked agents advance through the existing priority/FIFO gate on their next poll. Launches with an explicit %queue(capacity=N) use that positive-integer budget for their own admission decision, so they can intentionally start above the global budget while still holding an ordinary weighted claim once admitted. Question continuations reacquire against the current effective global cap after their gate turn has released capacity.

Provider routing controls

Press p from Launch Control to open Provider Routing. The modal lists every user-facing registered LLM provider in stable order with its model count and one of these states:

State Meaning
available The provider is registered and its declared CLI is present.
CLI missing Automatic alias routing already skips it because its CLI is missing.
disabled · manual · <time> left Launch Control manually hard-disabled it until expiry or clearing.
disabled · usage-limit automatic · <time> left Usage-limit detection automatically hard-disabled it.
soft · manual · <time> left Launch Control manually soft-disabled it until expiry or clearing.
soft · usage-limit automatic · <time> left A usage-limit automatic disable that was flipped to soft.
★ priority · <time> left This provider is preferred in pools that include it.
backup · CODEX priority This provider remains usable behind the active priority provider.
CLI missing · ★ priority unavailable Priority intent remains, but routing uses backups until it can run.

Hidden testing providers stay out of this human-facing modal. Disabling a provider does not unregister it, change sase.yml, change model aliases, or stop provider processes that are already running. A hard disable (d / Enter) keeps today's fail-closed behavior: new launches, follow-ups, later retry/fallback resolution, model pickers, and %model completion drop that provider. A soft disable (s) spares the provider in | pools while another member can cover, never diverts a || fallback, and still accepts explicit %model / picker / completion choices for that provider. Provider priority (p inside the modal) is temporary preference state, not a disable: pools prefer that provider when it is a usable member, while explicit choices and || fallback order continue to do what they say.

On any row, press d or Enter for a hard disable or s for a soft disable, then choose how long. The duration picker is the same set of choices as alias overrides: 15m, 30m, 1h, 2h, 4h, Until cleared, a custom duration, or t for an exact local time/date. When the highlighted row already has an active disable in the other mode, the picker's first row is x Keep current window (<time> left) — one keypress to flip hard ↔ soft without re-choosing a window. That row is omitted when the mode already matches, so it is never a no-op. On a disabled row, x enables the provider immediately, including an automatic usage-limit disable. Pressing x on an enabled row warns without mutating state. Successful changes refresh the provider rows, Launch Control title, alias routing rows, and the top-bar indicators without closing the modal, so several providers can be managed in one pass. Unknown disable sources are shown as readable labels instead of being folded into the manual state.

On an enabled, installed, user-facing row, press p to set or change provider priority, then choose the same relative, until-cleared, custom, or exact-time duration used by provider disables. Press c to clear the active priority, even when no selectable provider rows remain. The modal keeps the current selection after writes and refreshes the rows in place. If another session changed priority between the modal's snapshot and the attempted write, the modal reloads the current state and asks you to press p or c again against the fresh snapshot. If a write commits but the follow-up refresh fails, the toast says the routing write succeeded and leaves the modal open for retry.

A sparing (soft) pool member still counts toward pool <available>/<total> and remains selectable. In the alias description it renders as amber → ✓ provider/model@effort when selected or amber × provider/model@effort when skipped, with no soft chip. Priority members render with priority and backup members with backup, including in the guided selector builder, model picker, and %model completion. Soft-disabled providers stay in the model picker (header labelled soft, rows dimmed one step) and in %model completion (annotated soft in the provenance column). Hard-disabled providers are still omitted from both.

sase's TUI also shows active provider routing state as pills inside the violet overrides: top-bar group (the launch-default and current-project chips moved one row down, to each tab's status-row launch-context cluster). An active priority renders like overrides: CODEX ★ 42m (with a state word only for soft-disabled or unavailable, such as overrides: CODEX ★ soft-disabled 42m). One hard-disabled provider renders like overrides: CLAUDE off 42m; one soft-disabled provider renders like overrides: CLAUDE soft 42m. Several disables render the most severe (hard first) provider plus a count, such as overrides: CLAUDE +2, and use the soft palette only when every active disable is soft. When alias, priority, and disable facts are active their pills sit side by side under the one overrides: label. Each pill keeps its color and its tooltip section, and clicking the group opens Launch Control.

Disabled-provider launch panel

When sase's TUI is about to launch an agent that can only run on a hard-disabled provider, it opens a one-keypress panel instead of submitting a launch that would fail at invoke time. Soft disables never open this panel. After the instant input and project-tag checks pass, the prompt bar is released and the accepted launch appears as a preparing proc row while the provider check runs. Aborting restores the prompt when the bar and screen are free; if the user is already typing or another modal owns focus, it saves the prompt to the stash instead and never steals focus.

The panel is one blocked agent at a time. A four-agent swarm with two blocked units shows the panel twice in sequence. Enabling a provider while resolving one agent can unblock a later one, so sase's TUI re-checks after every write.

Key When it appears Action
e Always Enable every provider blocking this agent, then re-check and continue the launch.
s Always Soft-enable those providers (same remaining window) so this agent can run while pools still spare them.
1…9 Only when two or more providers block this agent Enable that one provider and re-check. The panel stays up if another blocker remains.
m Only when every slot of this agent agrees on one model Open the model picker and rewrite this agent's %model. A fan-out unit shows a dim edit-the-prompt line instead.
a Always Abort this agent. The other agents in the launch still start.
A Only when the launch has more than one agent Abort the whole launch. The label states the real agent total.
esc/q Always Same as a.

A single-agent launch that only enables or soft-enables submits the original prompt. Picking a different model on a one-agent launch rewrites that prompt. Dropping or re-modelling a unit in a multi-agent launch submits only the agents that remain.

Automatic provider drain

After a manual hard disable in Provider Routing (p from Launch Control, above) newly hard-disables a provider, sase's TUI automatically relaunches the agents that disable just stranded. No prompt is shown. The drain is submitted only when all of these hold:

  • The write was a hard disable (a soft disable never drains — it strands nothing).
  • The write transitioned the provider into hard-disabled (no disable → hard, soft → hard, or an expired disable → hard). Re-hard-disabling or extending an already hard-disabled provider never re-drains; use sase agent drain <provider> for that case.

The disable write returns immediately with the usual "disabled" toast, then a Draining <PROVIDER> start toast follows. The drain runs as the durable agent.drain proc (sase agent drain <provider> --yes --json) with the shared provider-drain:<provider> concurrency key the automatic usage-limit path uses (see Draining a Disabled Provider), so it appears in the Procs tab and dedups against an automatic drain already in flight for that provider rather than running twice. A completion toast summarizes the durable result envelope, and the Procs row holds the full JSON envelope. If the TUI exits first, the proc still finishes and its result stays in Procs / sase proc show.

An empty or no-longer-disabled automatic drain records a successful no-op: when the drain finds nothing to relaunch (nothing_to_drain) or the provider is not hard-disabled by the time the proc plans (not_disabled, soft_disabled), the proc succeeds with exit 0 and the completion toast says nothing was drained.

Draining onto a chosen model is still available as sase agent drain <provider> -m <model>.

tmux Agent

Press t from Launch Control to open tmux Agent. The panel lists every registered provider that declares an interactive CLI, in shortcut-key order, and launches the chosen one in a new tmux window in the current pane's directory. The same catalog and launch engine back sase tmux-agent on the command line; only the presentation differs. These windows are unmanaged agent CLIs, not SASE agents — they do not appear in sase agent list.

If sase's TUI is not running inside tmux, t warns sase's TUI is not running inside tmux; start sase's TUI in a tmux window to launch agent CLIs. and does not open the panel.

Each row is <key> ● <display name> <vendor> <state>: the key in the selector accent, the bullet and display name in the provider's accent color, the vendor dim, and the state one of:

State Meaning
ready The CLI is installed and launchable.
not installed The row is dim and unselectable; the description strip shows the install hint.
routing disabled · <time> left Hard-disabled for SASE automatic routing, but still launchable from here.
soft · <time> left Soft-disabled for SASE routing; still launchable from here.

A disabled-for-routing provider stays selectable because a human choosing an agent CLI is not automatic routing. The annotation is visible, not a wall.

The two-line description strip shows the exact command that will run, then the preview window name (ai, ai2, ai3, …) plus effort and bypass state. A skipped config-default effort is named rather than swallowed. Bypass is on by default (matching the shell script this feature replaces) and is always visible in the strip; it is never applied invisibly.

Key Action
Enter / the row's assigned key Launch the highlighted (or keyed) agent CLI
s Launch once without the provider's approval-bypass args
j/k (arrows, Ctrl+N/Ctrl+P) Navigate; not-installed rows are skipped
Esc Close and return to Launch Control
q Close, but only when no provider claimed q (Qwen keeps q; the title and footer say so)

A successful launch notifies Opened tmux window: <name> · <display name> and dismisses back to Launch Control. A failure notifies with an error and leaves the panel open.

See sase tmux-agent and the tmux_agent config block for the CLI surface, the drop-in tmux binding, and the documented parity recipe against the script this feature replaces.

Alias History

Press H on an alias row, an alias-backed launch setting (default model, epic lander, big epic lander when configured as a raw @alias reference), or a collapsed bucket to open Alias History — bounded prior runs for that alias or, for a bucket, every member alias. A concrete (non-alias) launch setting and the default effort, max runners, and big epic starts at scalar settings are not aliases; pressing H on one of those rows only shows a warning toast. The panel loads off-thread and never changes Launch Control's own state.

The title names the alias or bucket, keeps the tan ownership accent for a user-owned source, shows the effective provider/model/effort badge when a single alias supplied it, and reports the total recorded, returned (currently visible), and done/failed/running counts. A bucket's runs are grouped under a disabled header per member alias, separated by the same single-spacer convention used elsewhere in Launch Control; headers, spacers, and per-group empty hints are never jump targets. Rows render newest first exactly as recorded, with a status marker, relative time, agent/workflow identity, the configured project display name, a provider-themed model badge with effort, and one of four provenance chips:

Chip Meaning
direct An explicit %model directive named this alias.
default The configured default model resolved to this alias.
via @<...> This alias was reached indirectly, through an earlier alias in the chain.
unrecorded No alias origin was captured for this run — recording predates it.

The fixed detail strip below the list explains the highlighted run: the recorded alias trail resolved to its concrete provider/model/effort, the same origin explanation as the chip (an honest, non-speculative note for unrecorded rather than a guessed reason), and the prompt snippet plus whichever of project, workspace, bead, Patch, start time and duration, retry attempt, hidden state, and macro context are actually present — nothing is invented for a field the query did not return. The returned window is a display limit, not the full retention history; the title's recorded/shown counts and the footer's "more available" hint make the difference visible.

Below the detail strip, a compact model-usage region ranks the models the currently shown runs actually used. Counts cover the loaded window only, after deduplicating the same artifact directory when a bucket lists one run under more than one member alias; a dim (deduped) marker appears when that filter removed rows. Bar color follows the same provider palette as the PROVIDER(model) badges above. Configured selector members with no runs in the window render as unused; a model that ran but is not in the current pool is tagged off-pool; runs with no recorded model collapse to one unrecorded row. When every counted run for a model shares one effort the row shows @ <effort>; mixed efforts show a dim @ mixed. At most four rows render; a +N more overflow row carries the leftover count and percent so the shown shares still total 100%. Ctrl+J, Ctrl+K, r, and . recompute the strip with the new window; j/k never do.

Key Action
j/k (arrows, Ctrl+N/Ctrl+P) Navigate
' Jump — adaptive hints over selectable runs only
Enter Open the highlighted run's full prompt in the preview panel
y Copy the highlighted run's durable @agent:... reference
Ctrl+J Load more — add 10 runs to the per-alias limit and reload, keeping the highlighted run
Ctrl+K Unload — subtract 10 runs, never dropping below the initial model_alias_history_limit window
r Refresh — revalidate this load, bypassing the cache once
. Toggle hidden runs in or out of the results
Esc / q Close and return to Launch Control, unchanged

A run without a durable agent name warns instead of copying a guessed reference, and a missing or unreadable raw_macros.md warns instead of closing the panel.

Moved to Launch Control overrides. Moved to Launch Control overrides. Moved to Launch Control overrides. Moved to sase tmux-agent. Moved to sase tmux-agent. Moved to sase tmux-agent.

_[project]: A sase project is a named unit of work registered with SASE. _[workspace]: A sase workspace is a numbered clone of a project's primary repo, managed by the workspace store and tracked in that project's registry.json. _[agent]: A sase agent is an agent session or a single agent that does not belong to a session. _[prompt]: A prompt is the text SASE hands to a provider to start an agent turn. _[macro]: A macro is a reusable prompt triggered with #name in agent prompts. _[Patch]: A Patch is SASE's local unit of change. _[bead]: A bead is one tracked work item in SASE's git-native issue tracker. _[plan]: A plan is a persisted, approved artifact recording the intent behind agent work. _[TUI]: The TUI is SASE's terminal interface for running agents and reviewing results. _[epic]: An epic is an executable multi-phase plan run with sase bead work. _[gate]: A sase gate is a durable, command-backed request for one user decision, created when work must pause for the user. _[monitor]: A sase monitor is a monitor turn that runs one long command under a detached supervisor, so the command outlives the agent that started it. *[stitch]: A stitch is the lightweight ordered change record inside a Patch's STITCHES: section.