Skip to content

Timeline: export the trace as OpenTelemetry spans #483

Closed

Description

@HugoXK

What

The Timeline plugin records turns, tool calls and deliveries, but the trace stays local: there is no way to send it to an observability backend.

Expected behavior

  • exporter: "otlp" + otlpUrl (+ optional otlpHeaders) POSTs OTLP/HTTP JSON to any collector (Jaeger, Phoenix, Langfuse…); exporter: "json" appends dir/export.jsonl.
  • A Bot turn maps to an invoke_agent span and its tool calls to execute_tool spans beneath it, using the OpenTelemetry GenAI attribute names where the feed has the data.
  • Off by default: without exporter nothing leaves the host.
  • Only the metadata the panel already shows is exported (never message text, tool arguments or output).

Change scope

New plugins/timeline/src/otel.js (pure mapping + cursor exporter), plugins/timeline/src/timeline.js (optional wiring), plugins/timeline/index.js (config), tests plugins/timeline/test/otel.test.js, docs/subsystems/timeline.md, README. No new dependency (Node's global fetch).

Why

Closes the observability gap against OTel GenAI / Langfuse / Phoenix (see the roadmap discussion).

Activity

  1. added
    enhancementNew feature or request
    area:automationScheduled tasks and automation
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Oct 20, 2026
  2. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Triage (2026-10-20 12:00 Asia/Shanghai, main a7adfe0): needs-human. Waiting on the owner to confirm whether FlyBot wants an opt-in OpenTelemetry/JSON export of the Timeline trace, which is the first feature that can send Bot activity metadata to an outside collector. Points to decide: opt-in only with no default endpoint, ids only by default (friends' Bot names and face-room names stay home unless turned on separately), and https only except localhost. PR #484 has open review findings, the main one being that turns still running at an export tick are exported with the wrong end time and status.

  3. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Owner decision (2026-10-20): option (a) as recommended — fix first then accept: unfinished turns must not export as success; default export ids only (names behind a separate switch); require https except localhost; cap json file size; feature must be opt-in only.

  4. removed
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Oct 20, 2026
  5. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Owner decision recorded (2026-10-20 13:56 Asia/Shanghai): accept after PR #484 fixes the listed items (unfinished turns not exported as success, ids only by default with names behind a separate switch, https except localhost, json file size cap, opt-in only). Now waiting on the PR author.

  6. Birfy commented on Oct 20, 2026

    @Birfy
    Collaborator

    Triage check (2026-10-20 14:59 Asia/Shanghai): prior owner decision still accurate — accept after the listed fixes. PR #484 tip cb39adc addresses them; Birfy self-PASS + awaiting-approval. Waiting on owner queue (not re-asking design).

  7. added a commit that references this issue on Oct 20, 2026
    f69373b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:automationScheduled tasks and automationenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions