bext.dev
DocsTerminal UI
Terminal UI6 min read
On this page

Views

bext-tui is organized into 11 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 = TLS, 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, 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#

Interactive guided walkthroughs built into the TUI codebase. They are not yet wired to a navigable view or keybinding — the content below ships once the Tutorials view is exposed in an upcoming release.

Four tutorials are planned:

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.

Note

The Tutorials view is not yet exposed via a keybinding or tab entry — the content is implemented but the navigation hook ships in an upcoming release.

Edit this page ↗Need a hand? ↗
FIND YOUR NEXT STEP

Start with a topic, a command, or a question.