The :command bar

A vim-style colon prompt for actions that don't fit on the keymap: jump to a screen by name, fire on-demand checks, switch profiles, export a diagnostic bundle.

Opening + closing

KeyEffect
:Open the command bar (focus moves to a one-line prompt at the bottom)
EscClose without running
Run the command
BackspaceDelete left

The screen behind the bar keeps refreshing — gauges don't freeze while you're typing.

Status line

After a command runs, the bottom line shows the result for ~3 seconds before fading:

  • Info (green) — → Health, diagnostic bundle exported to /tmp/...
  • Err (red) — unknown command: "...", usage: :set-logger <expr> <level> ...

If you missed the message, just re-run — the status sticks until the next command or the next 3 s tick.

Screen jumps

Every screen has a name; :<name> jumps there.

CommandScreen
:healthS1 — Health gates
:stampsS2 — Stamps + bucket drill
:swapS3 — SWAP / cheques
:lotteryS4 — Lottery + rchash
:warmupS5 — Warmup checklist
:peersS6 — Peers + bin saturation
:networkS7 — Network / NAT
:apiS8 — RPC / API health
:tagsS9 — Tags / uploads
:pinsS11 — Pins
:manifest <ref>S12 — Manifests (preloads root + jumps)
:watchlistS13 — Watchlist
:feedtimelineS14 — Feed Timeline
:pubsubS15 — Pubsub watch

These are equivalent to pressing Tab until you reach the target screen, but faster on a 14-screen carousel.

Action commands

CommandPageWhat it does
:diagnose (alias :diag)diagnoseDump the full snapshot + recent log buffer to a file
:pins-check (alias :pins)pins-checkRun a full integrity check on every locally pinned reference
:loggersloggersSnapshot the live logger registry to a file
:set-logger <expr> <level>loggersChange one logger's verbosity at runtime
:topup-preview <batch> <amount>stamp-previewsPredict TTL + cost of topping up an existing batch
:dilute-preview <batch> <new-depth>stamp-previewsPredict capacity / TTL change of diluting a batch
:extend-preview <batch> <duration>stamp-previewsPredict cost to gain N days/hours of TTL
:buy-preview <depth> <amount>stamp-previewsPredict TTL / capacity / cost of a hypothetical fresh buy
:buy-suggest <size> <duration>stamp-previewsSuggest the minimum (depth, amount) to cover a target
:probe-upload <batch>probe-uploadUpload one synthetic 4 KiB chunk; report end-to-end latency
:upload-file <path> <batch>upload-fileUpload a single local file via POST /bzz, return Swarm reference
:upload-collection <dir> <batch>upload-collectionRecursive directory upload as a Swarm collection (tar POST /bzz); auto-detects index.html
:feed-probe <owner> <topic>feed-probeLatest update for a feed (read-only lookup)
:feed-timeline <owner> <topic> [N]S14 — Feed TimelineWalk a feed's history (newest first), open S14
:watch-ref <ref> [interval]watch-refRe-run :durability-check on <ref> periodically (default 60 s)
:watch-ref-stop [ref]watch-refCancel one (or all) active :watch-ref daemons
:pubsub-pss <topic>S15 — PubsubSubscribe to a PSS topic, surface frames in S15
:pubsub-gsoc <owner> <id>S15 — PubsubSubscribe to a GSOC SOC, surface frames in S15
:pubsub-stop [sub-id]S15 — PubsubCancel one (or all) active pubsub subscriptions
:pubsub-filter <substring>S15 — PubsubShow only S15 rows whose channel/preview contains substring
:pubsub-filter-clearS15 — PubsubRemove the active S15 filter
:pubsub-replay <path>S15 — PubsubLoad a prior session's pubsub-history JSONL into S15
:manifest <ref>Open a Mantaray manifest for browsing (preloads root + jumps to S11 Manifests)
:inspect <ref>Universal "what is this thing?" — auto-detects manifest / raw chunk / feed manifest
:durability-check <ref>Walk every chunk of <ref> and report retrieved / lost / corrupt / network-seen counts
:plan-batch <prefix> [usage] [ttl] [extra-depth]stamp-previewsRun beekeeper-stamper's Set algorithm read-only — outputs PlanAction (None/Topup/Dilute/Both)
:check-versionGitHub Releases API check; reports if a newer bee-tui is published
:config-doctorRead-only audit of bee.yaml against swarm-desktop's migration rules
:priceS3 — SWAPxBZZ → USD lookup via public token service
:basefeeS3 — SWAPGnosis Chain JSON-RPC basefee + tip lookup
:grantees-list <ref>Read-only GET /grantee/{ref} for ACT grantee inspection
:hash <path>Local Swarm-hash of a file via Mantaray (no Bee call)
:cid <ref> [--type=manifest|feed]Local Reference → CID conversion (no Bee call)
:depth-tablePrint canonical depth → capacity table (no Bee call)
:gsoc-mine <overlay> <identifier>Local CPU work — find a PrivateKey whose SOC address matches <overlay>
:pss-target <overlay>Extract the 4-hex-char target prefix Bee accepts on /pss/send
:watchlist (jump)Jump to S12 Watchlist (history of :durability-check results)
:context <name> (alias :ctx)contextSwitch to a different node profile from your config
:contextcontextList configured profiles (no switch)
:nodescontextOpen the node-picker overlay (also Ctrl+N)
:quit (alias :q)Exit the cockpit

Why a colon prompt?

Two reasons:

  1. Discoverability without clutter. The cockpit can have ten screen-jumps + half a dozen action commands without each one needing its own keybinding. The keymap stays minimal (Tab, , Esc, ?, :, q); rare commands live behind the colon.
  2. Familiarity. Anyone who's used vim, k9s, or lazygit has the muscle memory. The cockpit's job is to not require new muscle memory.

What's not on the bar

These actions deliberately don't have a :command form:

  • Cashing out cheques. Cashout is on-chain; it costs gas; you should think about whether to do it. The cockpit surfaces the data (S3 Pane 2) but won't trigger the on-chain transaction. Use curl POST /chequebook/cashout/<peer> if you really mean it.
  • Buying / topping up postage. Same reasoning. S2 shows TTL and worst-bucket; the :*-preview verbs (see stamp-previews) compute predicted TTL/cost without writing — but bee postage buy and bee postage topup themselves are operator decisions with funding consequences and stay outside the cockpit.
  • Stake deposit / withdraw. Same.
  • Connect / disconnect peers. Bee's kademlia handles this without operator help; manual connect is a debugging escape hatch.

The cockpit is a read-mostly observer. The mutating commands it does have are scoped to upload + diagnostic state, never chain-mutation:

  • :set-logger — changes a Bee logger level (no funds, no chain)
  • :probe-upload — uploads one synthetic 4 KiB chunk against a caller-supplied stamp to verify the upload path end-to-end
  • :upload-file / :upload-collection — real content uploads via POST /bzz; capped at 256 MiB (collections also at 10k entries). Stamp consumption is the operator's responsibility via the explicit <batch> argument.

There is intentionally no :reupload, :tx-bump, or :grantees-create verb yet — write tier verbs that consume stamps or mutate chain state warrant their own UX + confirmation pass. The current write surface stops at uploads.

See also