LineageIR logo

Hex versionHexDocsLicense

LineageIR

Lineage IR for cross-system traces, spans, artifacts, and provenance edges. Provides a shared Event envelope and Sink interface for consolidation across runtimes without forcing shared storage.

What it covers

Installation

Add lineage_ir to your dependencies:

def deps do
  [
    {:lineage_ir, "~> 0.1.0"}
  ]
end

Quick start

alias LineageIR.{Event, Span, Sink}

span = %Span{
  id: Ecto.UUID.generate(),
  trace_id: Ecto.UUID.generate(),
  name: "llm.call",
  started_at: DateTime.utc_now()
}

event = %Event{
  id: Ecto.UUID.generate(),
  type: "span_start",
  trace_id: span.trace_id,
  span_id: span.id,
  occurred_at: DateTime.utc_now(),
  source: "flowstone",
  source_ref: "run_123",
  payload: span
}

:ok = Sink.emit(event, adapter: LineageIR.Sink.Adapters.Ecto, repo: MyApp.Repo)

Guides

Conventions

License

MIT. See LICENSE.