← Back to blog

The missing layer beneath every agent framework

0xcircuitbreaker··8 min read

Agent frameworks are built to make execution happen. They route messages, select tools, coordinate models, and manage control flow.

The history produced by that execution has a different job. It should remain useful after the framework changes.

Orchestration is not provenance

A callback stream or provider trace can be enough for a debugging session. It is a weak long-term boundary when the history is trapped in framework-specific objects or a service database.

A provenance artifact should answer a smaller, more durable set of questions:

  • What steps occurred, and how are they related?
  • Which inputs, outputs, errors, models, and tools were recorded?
  • Can the content be verified?
  • Can a known prefix be forked or replayed in a supported runtime?
  • Can two branches be compared precisely?
  • Can the artifact move without changing identity?

A layer beneath frameworks

opentine stores those answers in a versioned .tine file or a verified repository. Native agents can produce artifacts directly, including no-code capture through tine run --model. Supported external CLI agents can be wrapped through bounded harnesses. LangChain and LangGraph can be recorded live through their shared callback protocol, while JSONL, OpenTelemetry, and best-effort framework importers normalize existing records from the CLI or Python. Version 0.7 can also export a run as OTLP/JSON or push it to an OTLP/HTTP collector.

tine run --harness codex --prompt "Inspect this repo" --autosave codex.tine
tine run --harness kimi-code --prompt "Summarize README.md" --save kimi.tine

The wrapper records observable events. It does not claim access to hidden internal state the external agent never exposed.

A conservative contract

Portability is earned through explicit format versions and compatibility rules. Version 0.7 still reads portable v1 and v2 files; re-saving v1 writes v2; older 0.1.x readers cannot read the newer format. The published release gate exercises stored data from v0.3 through v0.6, and v3 repositories remain a separate object model rather than a renamed portable-file format.

Integrations follow the same approach. LangChain and LangGraph have live capture; CrewAI, LlamaIndex, AutoGen, and OpenAI Agents remain post-hoc log imports. The project distinguishes validated gates from scoped compatibility targets rather than using one broad “supported” label.

The missing layer is not another orchestration framework. It is the local artifact boundary that lets execution history survive changes above it.