Views

bext-tui is organized into 12 top-level views, each focused on one aspect of running a bext instance. Switch between them with the tab bar at the top, with 19 shortcuts, with the g chord (gd = dashboard, gs = sites, gr = requests, gt = tutorials, etc.), or via the command palette.

Dashboard

The home view. Open with 1 or gd.

A four-panel layout:

- Platform health — colored dots for server, cache, workers, license, uptime

- Metrics — labeled sparklines for request rate and average latency (last 60 samples)

- Quick stats — totals for sites, cache entries, requests, errors, workers, certs

- Top sites — leaderboard of sites by request rate

- Recent events — last 10 requests with status code coloring

The Dashboard's data is refreshed on the fast polling tier (default 2s).

Sites

Open with 2 or gs. List view of every site bext is serving. Columns:

Column Source
Name site name
Framework detected framework (Next.js, Astro, PHP, static, …)
Status running / building / stopped / error (color-coded)
Version current version or deploy hash
Req/s per-site request rate
Cache hit ratio percentage
Domains comma-separated domain list

Press Enter on a row to drill into the detail view, which has five tabs (cycle with h / l):

- Info — name, framework, version, uptime, full domain list

- Metrics — request rate, cache hit, extended latency stats

- Deploys — deployment history filtered to this site

- Logs — recent requests filtered to this site's domains

- Workers — workers attached to this site

Esc collapses the detail view back to the list. Press d to deploy, r to rollback, e to edit env vars.

Requests

Open with 3 or gr. A live-scrolling request log — your tail -f for HTTP traffic.

Columns: timestamp, method, path, status, duration, cache status, host. Status codes are color-coded (2xx green, 3xx cyan, 4xx yellow, 5xx red bold). Cache status uses HIT green / STALE blue / MISS yellow / BYPASS dim.

Controls:

- Space — pause/resume the live feed (the count keeps ticking but rows freeze)

- / — filter on path, host, or status code. The filter is interpreted as a case-insensitive regular expression when it compiles, falling back to substring match when it doesn't. The active mode is shown in the input bar ((regex) or (substring)).

- Enter — open a detail popup for the selected row (full method, status, timing, headers)

- Esc — close the detail popup or clear the filter

The data source is the /__bext/admin/ws/logs WebSocket if available, polled /__bext/admin/api/requests otherwise. The TUI buffers up to 2,048 entries client-side.

Cache

Open with 4 or gc. Two panels:

- Cache overview — ISR entries, stampede locks, hit rate, miss rate, memory

- Hit rate meter — color-coded utilization bar (green > 60% > yellow > 85% > red)

Actions:

- p — purge all (with confirmation)

- P — purge by pattern (opens an input — supports glob)

- w — pre-warm the cache (queues a render of every known route)

Purge actions are confirmed before firing. Pattern purge accepts a path glob like /api/* or /blog/2025-*.

Workers

Open with 5 or gw. Table of every worker across every runtime (V8, V8, Bun, PHP, plugins).

Columns: kind, ID, PID, memory, requests handled, status, uptime.

Actions:

- r — restart the selected worker (single-worker restart, no confirmation)

- R — restart all workers of the selected kind (confirmed — drains in-flight requests first)

Worker restarts are graceful: in-flight requests finish before the worker is replaced.

TLS

Open with 6 or gt. Certificate inventory.

Columns: domain, issuer, valid until, days remaining, key type, OCSP status. The "days remaining" cell is color-coded:

- Green: > 30 days

- Yellow: 10–30 days

- Red: < 10 days

Actions:

- r — force renewal of the selected certificate

- p — provision a new certificate (opens domain input)

- Enter — show the full chain, fingerprint, and SANs

Proxy

Open with 7 or gp. Upstream health monitoring.

Columns: name, address, status, active connections, request rate, latency, error %, circuit breaker state. Statuses and circuit breaker states are color-coded.

Actions:

- h — force a health check probe right now

- d — drain the upstream (graceful removal — finishes in-flight requests, then removes from the pool)

- Enter — open the upstream detail with latency histogram and recent error log

WAF

Open with 8 or gf. Web Application Firewall monitoring.

Three summary panels at the top:

- Total blocked / 24h blocked

- Top rules by hit count

- Top blocked IPs

Below: rule table with ID, name, enabled flag, action, hit count.

Actions:

- e — enable / disable the selected rule

- Enter — show rule pattern and recent matches

Deploy

Open with 9 or gy. Deployment timeline across all sites.

Columns: timestamp, site, version, status, duration, triggered by. Status colors: green for success, red for failed, yellow for in-progress.

Actions:

- d — deploy the selected site (latest commit)

- r — rollback the selected deployment

- p — promote a canary to stable

All three are confirmed.

Logs

Open with gl. Searchable log viewer backed by the bext log store (SQLite).

- / — search across all stored logs (full-text)

- Time range picker at the top: 1h / 6h / 24h / 7d / custom

- Enter on a row shows the full structured log entry with JSON body

The Logs view is the right place to look for historical events — the Requests view shows live traffic only, and old entries scroll off the buffer.

Config

Open with go. Read-only viewer for the parsed bext.config.toml.

Actions:

- r — hot-reload the config (confirmed — runs validation first, refuses to apply if invalid)

- v — re-run validation only

The config text is fetched from /__bext/admin/api/config in remote mode, or read directly from disk in local mode.

Tutorials

Open with gt. Interactive guided walkthroughs built into the TUI.

Four tutorials are included:

Tutorial Steps Description
First 5 minutes 5 Init, dev mode, visit, edit config, check
Caching 4 Enable ISR, observe hits, purge, warm
Plugins 101 4 List, inspect, install, see pipeline
Deploying 4 Build, deploy, health check, rollback

Each tutorial is a scripted walkthrough that shows the command to run and a hint. Navigation:

- j / k — browse the tutorial list

- Enter — select a tutorial or advance to the next step

- Backspace — go to the previous step

- Esc — return to the tutorial list

The tutorial view is designed for terminal-first onboarding — new users can learn bext entirely from the TUI without switching to a browser.

Help

Press ? from any view to overlay a context-sensitive help sheet showing all keybindings active in the current view. Press ? again or Esc to close.