Interactive shell
The terminal panel vibe opens with no arguments, with a live status bar, tabbed pages, and an always-on command prompt.
Running vibe with no arguments opens the interactive shell: a terminal panel that keeps the project’s context in front of you and gives you a prompt to drive Vibestrate without leaving the keyboard. It is built on Ink.
vibe
It runs full-screen in the terminal’s alternate screen buffer, the same way vim or htop do. The canvas is fixed: it never grows or scrolls as you type, and your previous terminal contents come back when you quit. It needs an interactive terminal. In a pipe or CI it prints a notice and exits.
Layout
The panel fills the terminal and is split into three bordered regions, top to bottom.
- Header. The brand, a “where am I” line (project · branch · activity · approvals · budget), the numbered tab menu, and the current page’s subtitle.
- Context and prompt. The mode · crew · flow line and the command prompt. Its border brightens to cyan while the prompt has focus. It sits above the body on purpose: when the autocomplete list opens, it shrinks the body below it, never the prompt, so the line you are typing on never moves.
- Body. The active page on the left, and on the right a COMMANDS panel listing what you can do on this page, plus the global keys. On Runs:
ppause ·rresume ·aabort ·Rre-run. On Roadmap:eedit ·nnew ·ddelete ·Qqueue. On Queue:sstart ·ppause/resume ·tcycle policy ·xremove. When a prompt command produces output, it takes that pane instead. The body clips to the fixed canvas rather than scrolling the terminal.
The status bar
A context strip sits at the top at all times, so you always know where you are and what the next run will do.
- project and branch. The project name and current git branch. A
⑂ worktreebadge appears when you are inside a linked git worktree (for example a run’s isolated worktree) rather than the primary checkout. - mode. The safety posture the next run will use:
write(normal) orread-only(investigation only, which adds--read-only). Pressmto toggle. - activity. Live from the snapshot:
idle,running · N active, and a· N queuedsuffix when the scheduler has work waiting. - approvals. A
⏳ N approvalschip (yellow) appears only when runs are blocked waiting on you, so a decision you owe is visible from any page. It is hidden when there is nothing to approve. - budget. Today’s spend against the daily cap, for example
budget $2.30 / $10.00. It tracksbudget.spendCapDailyUsd: gray under the warn threshold, yellow past it, red once exceeded. With no cap configured it shows today’s spend only ($2.30 today), and nothing at all when that is still$0. Spend is summed across all of today’s runs, using real cost where the CLI reports it and estimated otherwise, and refreshes a few seconds behind live. - crew and flow. The session’s selected Crew and Flow. These seed the next run you launch from the prompt. Press
cto pick a Crew,fto pick a Flow (a↑↓ / Enterselector). They default to the project’s default crew and thedefaultflow until you choose. - task. The task text of the most-recently-active run, when one is running.
The prompt
The prompt sits just under the header, always visible. Press i (or !) to focus it, type a vibe … command, and press Enter to run it. The output streams in place. Esc returns to navigation. ↑ / ↓ walk command history.
Line editing
The prompt moves like a terminal:
- Option+← / Option+→ jump by word.
- Ctrl+→ (or End / Ctrl+E) goes to the end of the line.
- Ctrl+← (or Home / Ctrl+A) goes to the start.
- Plain ← / → move one character.
- Backspace deletes before the cursor.
Autocomplete
As you type, a ghost list opens under the prompt with what fits the token at the cursor. It is read straight from the real CLI tree (plus your project’s live ids), so it never drifts. The list lives in a fixed-height slot, so it never resizes the panel as matches narrow.
What it completes depends on what you have typed:
- A word completes subcommands:
config->view/show/get/set/validate. - A dash completes flags:
config show -->--json. - After a value-taking flag it completes values: enums like
--effort low|medium|high, and live ids for--crew,--flow,--profile, and--task(also--effort=hi->--effort=high). - Id-typed positional arguments complete too:
replay-> your run ids;tasks show-> task ids;flows show-> flow ids.
Free-text arguments like a run "…" description never complete.
Tab accepts the highlighted candidate, ↑ / ↓ move the selection, Esc dismisses the list (and history stays on ↑ / ↓ while the prompt is empty).
Config keys show their value and what they do. For config set and config get, the list enumerates every settable key from the schema with its current value inline (git.mainBranch = main) and a one-line description of the highlighted key beneath the list, so you do not have to remember the keys or look up their state. The descriptions come from one source, the schema’s field docs, shared with the published config reference, so they never drift.
When you run a run … command from the prompt, the shell seeds it with your session selections: it appends --crew, --flow, and --read-only to match the status bar. Anything you type explicitly always wins.
▸ vibe config set git.▌
› git.mainBranch = main
git.branchPrefix = vibestrate/
git.snapshotRetentionRuns = 0
Branch the run merges into (default main).
⇥ complete · ↑↓ select · esc dismiss
Command output streams into a scrollable pane on the right (about 30% of the width), not the prompt, so long --help text or a status dump stays readable. It follows the tail by default. While the prompt is focused, Tab / Shift+Tab scroll it. When a command’s output is verbose (many lines, or wide YAML or tables like config show), the shell automatically opens the full-width readable view so it is not mangled by the narrow pane. Press O or Esc to collapse back.
Docs browser
Press d (or : → “Browse docs”) to open the docs in-terminal: a topic list on the left, the selected page rendered with terminal Markdown (headings, code blocks, lists, inline code, links) on the right.
- ↑ / ↓ (or
j/k) scroll the page. - Space /
bpage down/up. [/]switch topic.oopens the docs website.- Esc closes.
The pages are the same ones published at the docs site, bundled with the CLI.
Navigation
These are single-key, and work when the prompt is not focused.
1–9,0switch tabs (Dashboard, Roadmap, Queue, Runs, Approvals, Suggestions, Notifs, Crew, Skills, Doctor).:opens the command palette (fuzzy search every action).Escgoes back to the previous page.dopens the in-terminal docs browser.Bopens Mission Control (the web dashboard) in your browser.?shows context-sensitive help.qquits.
The pages mirror the same data the Mission Control web dashboard shows, read live from .vibestrate/. The shell spawns no shell commands itself: the prompt runs the vibe binary argv-only (no shell expansion), and it never reads secret-shaped files.