Skip to content

Phoenix-Observed Agent with TUI

This playbook configures best-effort, terminal-batched export to a Phoenix tracing dashboard as OpenInference semantic spans. After a successful terminal recorder boundary, a separate sensitive-key-redacted, credential-scanned, capped JSONL snapshot remains local. Neither path is crash-safe: process death before that boundary can omit the Phoenix batch and lose RAM-buffered JSONL events. You drive the agent from the terminal TUI and inspect successfully exported prompts as AGENT / LLM / TOOL spans.

Agent builders evaluating runs in a tracing dashboard — you want to inspect prompts, model output, and tool calls visually instead of grepping logs.

Run an agent locally with the TUI, attempt a best-effort terminal-batched Phoenix export as OpenInference semantic spans, and retain an independent bounded JSONL snapshot when terminal persistence succeeds.

  • observability.phoenix-exporter — additive, best-effort OTLP/HTTP protobuf export of each run as a semantic timeline (config).
  • observability.jsonl-artifacts — empty events plus a running summary at start, then redacted and capped run-*.summary.json + run-*.events.jsonl snapshots at finish/fail; non-numeric values under sensitive-looking object keys are redacted; numeric values under matched keys are retained; retained free text is scanned for a closed set of high-confidence credential shapes; a pre-terminal crash can lose buffered events (config).
  • observability.trace-registry — heartbeat manifests that mono-agent status reads (config).
  • tui.chat — the operator console: live chat with thinking/tool/telemetry insight, run replay, and a config view (cli).
{
"runtime": {
"model": "anthropic:claude-sonnet-4-6"
},
"artifacts": {
"dir": ".mono-agent/artifacts"
},
"traceability": {
"registryDir": ".mono-agent/trace-sources",
"sourceId": "my-agent",
"heartbeatMs": 10000
},
"observability": {
"exporters": [
{
"type": "phoenix",
"endpoint": "http://127.0.0.1:6006/v1/traces",
"projectName": "my-project",
"includeSensitiveData": false,
"contentPatternRedaction": false,
"timeoutMs": 5000
}
]
}
}

The exporters array can also be supplied via the MONO_AGENT_OBSERVABILITY_EXPORTERS env var (a JSON array of exporter objects). The local recorder is independent of Phoenix: it creates an empty-event start snapshot and replaces it with sensitive-key-redacted, credential-scanned, capped events at finish/fail. Phoenix adds a best-effort terminal batch; exporter failure does not change the run outcome, and process death before terminal persistence can leave neither terminal batch nor buffered JSONL events.

  1. Start Phoenix locally (listening on 6006).
  2. mono-agent init --model anthropic:claude-sonnet-4-6.
  3. Add the artifacts, traceability, and observability.exporters[] phoenix entry to mono-agent.config.json.
  4. mono-agent validate (it POSTs an empty protobuf to confirm export-compatibility, not just reachability), then mono-agent start (it prints the Phoenix endpoint as the trace source).
  5. mono-agent tui (from any directory — it discovers the running agent) and complete a prompt.
  6. Open Phoenix and confirm the run appears as AGENT / LLM / TOOL spans under my-project.