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.
Who this is for
Section titled “Who this is for”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.
Features used
Section titled “Features used”observability.phoenix-exporter— additive, best-effort OTLP/HTTP protobuf export of each run as a semantic timeline (config).observability.jsonl-artifacts— empty events plus arunningsummary at start, then redacted and cappedrun-*.summary.json+run-*.events.jsonlsnapshots 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 thatmono-agent statusreads (config).tui.chat— the operator console: live chat with thinking/tool/telemetry insight, run replay, and a config view (cli).
Configuration
Section titled “Configuration”{ "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.
- Start Phoenix locally (listening on
6006). mono-agent init --model anthropic:claude-sonnet-4-6.- Add the
artifacts,traceability, andobservability.exporters[]phoenix entry tomono-agent.config.json. mono-agent validate(it POSTs an empty protobuf to confirm export-compatibility, not just reachability), thenmono-agent start(it prints the Phoenix endpoint as the trace source).mono-agent tui(from any directory — it discovers the running agent) and complete a prompt.- Open Phoenix and confirm the run appears as AGENT / LLM / TOOL spans under
my-project.
Smoke test
Section titled “Smoke test”Related
Section titled “Related”- Phoenix exporter and backfill
- Artifacts and traces
- Observability CLI reference
- TUI
- Backfill historical runs
- mono-agent composer skill:
packages/agent-app/skills/mono-agent-composer