Datasette container for browsing both VibePod SQLite databases:
logs.dbfor session/message historyproxy.dbfor HTTP traffic captured byvibepod-proxy- proxy requests include origin container name via
http_requests.source_container_name - built-in HTTP observability dashboard via
datasette-dashboardsat/-/dashboards/http-requests - dedicated Codex token dashboard via
datasette-dashboardsat/-/dashboards/codex-tokens
LOGS_DB_PATH(default/data/logs.db)PROXY_DB_PATH(default/proxy/proxy.db)DATASETTE_HOST(default0.0.0.0)DATASETTE_PORT(default8001)SQL_TIME_LIMIT_MS(default60000)TRUNCATE_CELLS_HTML(default80, compacts long cell values in list/table views)
Build:
docker build -t vibepod/datasette:latest .Run:
docker run --rm -p 8001:8001 \
-v "$HOME/.config/vibepod:/vibepod:rw" \
-e LOGS_DB_PATH=/vibepod/logs.db \
-e PROXY_DB_PATH=/vibepod/proxy/proxy.db \
vibepod/datasette:latestOpen http://localhost:8001/-/dashboards/http-requests to view an aggregated dashboard for proxied HTTP traffic.
The dashboards index is available at http://localhost:8001/-/dashboards.
It includes:
- total request volume and error-rate summary cards
- status code distribution
- top hosts by traffic/errors/latency
- request/error trend chart (hourly or daily buckets)
- filterable/sortable recent-request table
Available dashboard filters/sorting:
- time range (
1h,24h,7d,30d,all) - host substring match
- method filter
- agent filter (derived from
source_container_name, e.g.vibepod-codex-...->codex) - status-class filter (
2xx,3xx,4xx,5xx,error) - request table sort (time/status/duration/error-priority)
- host ranking sort (volume/error-count/latency)
If the dashboard reports that http_requests is missing, start VibePod traffic capture first (the proxy DB schema is created by vibepod-proxy once traffic is recorded).
Open http://localhost:8001/-/dashboards/codex-tokens to view token and model usage for Codex traffic proxied through chatgpt.com and api.openai.com.
It includes:
- total API calls
- total input and output tokens
- cached input token totals
- reasoning token totals
- token trend over time
- model and endpoint breakdowns
- websocket message volume and direction trend
- recent websocket-message table (with message type + content preview)
- recent-call table with per-request token fields
Available dashboard filters:
- time range (
1h,24h,7d,30d,all) - trend bucket (
auto,hour,day) - model
- container
- endpoint (
backend_codex,backend_codex_ws,responses,chat_completions) - request row limit
The dashboard only includes requests attributed to the codex agent from source_container_name.
- Codex websocket token-source findings and implementation notes:
docs/codex-websocket-findings.md
Use these proxy canned queries to inspect websocket payload structure and validate token calculations:
codex_ws_recent_messagescodex_ws_message_type_countscodex_ws_token_field_coveragecodex_ws_usage_event_duplicatescodex_ws_tokens_vs_http_by_request
Open from Datasette under the proxy database query list, or directly via paths like:
/-/queries/proxy/codex_ws_token_field_coverage/-/queries/proxy/codex_ws_tokens_vs_http_by_request