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 1–9 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.