Simple Relay packages an administrative Web UI directly inside the Go binary via go:embed. It requires zero external Node.js dependencies or separate frontend server processes.
Access the dashboard at:
http://localhost:8080/ui/
Key Features of the Dashboard
1. Real-time Delivery Log
Inspect all inbound webhooks and outbound proxy calls:
- Chronologically sorted by monotonic ULID timestamp.
- Filter by status (
QUEUED,DELIVERING,DELIVERED,FAILED). - Visual latency badges showing duration per delivery attempt.
2. Payload & Header Inspector
Clicking any request opens an inspection modal showing:
- Bit-for-bit raw incoming request headers and payload body.
- Forwarded destination URL.
- Upstream response headers and response body (truncated to safe size limits).
3. Attempt History & Error Traces
When upstream services fail, inspect:
- Number of attempts made.
- Exact backoff delay calculated with full jitter.
- Error messages (e.g. connection refused, TLS handshake timeout, 502 Bad Gateway).
4. One-Click Request Replay & DLQ Triage
- Replay Any Request: Click the Replay button on any row in the Requests Explorer or inside the inspection drawer to requeue deliveries immediately. This allows re-running previously successful webhooks (
200 OK) against your backend after making code adjustments—see the Local Webhook Inspection Recipe. - Dead Letter Queue (DLQ): Deliveries that exhausted all retry policies are isolated in the DLQ view with individual and bulk replay buttons.
5. Authentication & Route Secret Masking
- Loopback Dev Mode vs. Protected Mode: When running locally on loopback (
127.0.0.1/localhost) withRELAY_ADMIN_PASSWORDunset, the dashboard opens directly without a login prompt. WhenRELAY_ADMIN_PASSWORDis configured, the dashboard presents a rate-limited session login screen (relay_sessionHTTP-only cookie). - Masked Route Secrets: Inbound route
signature_secretvalues are automatically masked in API responses (whse*****9a1bor********). Editing a route in the UI safely preserves the existing secret unless you explicitly type a new secret to rotate it.
6. Interactive Route Configuration & Backoff Tuning
Create and modify routes dynamically:
- Configure per-route
base_backoff_msandmax_backoff_msoverrides with mode-aware pre-filling (100ms–10sfor sync proxy,5s–15mfor async background delivery). - Toggle
Retry Non-Idempotent Requestson synchronous outbound routes to permit safePOST/PATCHretries. - View the active backoff policy (
100ms–10sor5s–15m) directly in the Routes table Policy column.