Showcase / opentine v0.7.0

The artifact layer, put to work.

Capture a first run from one command or bring an existing trace into opentine, keep it as portable or repository provenance, and send modern OpenTelemetry GenAI back to the systems already operating your agents. Then see ecosystem projects build on the same artifact layer—with their current compatibility boundaries intact.

09v0.7.0 workflows
02published integrations
01source experiment
02companion apps
07core examples

v0.7.0 current-release workflows

Provenance across the ecosystem.

These 9 workflows ship in the core opentine release for v0.7.0. Together they cover one-command capture and export, the full v3 operator surface introduced in v0.6, deterministic replay, cross-run statistics, live framework capture, fork identity, transport, and cost evidence without changing the v2 or v3 formats.

01v0.7.0 core

Interop & Adoption in v0.7.0

First run to OpenTelemetry

Capture a provider-backed run without writing a Python file, retain it as verifiable provenance, then render or deliver the same history as modern OpenTelemetry GenAI data.

Stable v0.7 · portable v2 · repository v3

The no-code run and export surfaces are additive. Artifacts and repositories written by v0.3 through v0.6 remain readable; neither storage format changed.

  • tine run --model <provider>[:model] --prompt captures a first run through any bundled adapter without a Python script.
  • tine export writes OTLP/JSON GenAI to stdout or a file, or posts it to an OTLP/HTTP collector with explicit cleartext safeguards.
  • Semconv 1.36 structured messages, complete usage dimensions, a schema URL, and per-event span kinds travel with the export.
  • Pricing, export, run receipts, and the existing machine-readable commands share one JSON serializer.
Capture and exportshell
tine run --model openai:gpt-5.6 --prompt "Explain this branch" --save first.tine
tine verify first.tine --json
tine export first.tine --output spans.json
tine export first.tine --endpoint http://127.0.0.1:4318
02Introduced v0.6 · current

Surface Release in v0.6.0

The full provenance workflow at the terminal

Inspect, compare, search, attest, evaluate, promote, fork, and resume v3 repository runs from the CLI, then turn deterministic replay and cross-run statistics into CI checks.

Stable CLI surface · no format bump

The v0.6 operator surface remains part of v0.7. Its read and write verbs share engines with the MCP tools, while stored v0.3–v0.5 data remains covered by compatibility fixtures.

  • repo-show, context, repo-log, repo-diff, and repo-search expose the v3 read path with stable machine-readable output.
  • attest, evaluate, promote, repo-fork, and repo-resume append operator-directed provenance without a hidden force path.
  • tine replay --verify returns a binary reproducibility verdict; harness mode re-executes twice to surface nondeterministic drift.
  • tine stats aggregates local indexed runs by model, status, tag, day, or format version, with deep loading explicitly opt-in.
Operator and CI surfaceshell
tine repo-show heads/main --repo . --json
tine repo-diff heads/main experiments/terse --repo . --exit-code
tine replay first.tine --verify
tine stats --group-by model --deep --json
03Introduced v0.5 · current

Trace normalization introduced in v0.5.0

Telemetry in, telemetry out

Bring supported agent traces into opentine from the shell, emit stable JSON for automation, and export a run as OpenTelemetry GenAI for the observability system already beside it.

No format bump · portable v2 · repository v3

The v0.5 import and library-export surface remains current in v0.7. The current compatibility gate covers stored v0.3 through v0.6 data; export is read-only over provenance.

  • to_otel_genai and to_otel_genai_document export portable runs, loaded artifacts, repository runs, or TraceEvents as GenAI spans or complete OTLP/JSON.
  • tine import accepts OTel GenAI spans, OTLP/JSON, OpenTine JSONL, and serialized LangChain, LlamaIndex, AutoGen, CrewAI, and OpenAI Agents logs.
  • An import can write a portable artifact, advance a repository ref, or do both without changing either format.
  • Stable --json objects on show, verify, ls, search, and cost make the same evidence usable from scripts and CI.
Shell interopshell
tine init .
tine import trace.json --format otel-json --save imported.tine --repo . --ref heads/imported
tine show imported.tine --json
04Introduced v0.4 · current

Fork-act identity, current in v0.7

Collision-free portable forks

Fork one portable run at the same step more than once and keep every intervention: each default fork act receives its own verifiable ID instead of colliding on one run and filename.

Portable .tine v2 · new fork IDs only

There is no storage-format migration. Existing v0.3 artifacts load with their IDs unchanged, while pre-v0.4 forks simply have no verdict under the new fork-identity check.

  • Source lineage, retained history, fork point, branch, declared intent, and a recorded 128-bit nonce form the identity basis.
  • Two ordinary forks from one point receive distinct IDs and default output paths.
  • Cached replay stays reproducible with an empty nonce; v3 repository IDs remain content-addressed and unchanged.
  • The artifact-body checksum, fork-ID consistency, and signatures covering metadata.fork remain distinct verification checks.
Distinct fork actsshell
tine fork failed.tine --from-step 3
tine fork failed.tine --from-step 3
# same point, two independently addressable run IDs
05Introduced v0.3 · current

Content-addressed run history

Git-shaped repository

Store agent provenance as typed, immutable objects in a .tine/ repository, then move refs with compare-and-swap semantics and verify the graph from the bytes up.

Repository objects: verified v3

Portable .tine artifacts remain format v2. migrate-v3 imports one into a repository; it does not rewrite the portable format in place.

  • Typed SHA-256 blob, event, run, attestation, and separately versioned annotation objects.
  • Refs, reflogs, compare-and-swap updates, semantic log and diff, causal slices, and forks.
  • Deep fsck, deterministic packs, shallow boundaries, missing-object negotiation, fetch, push, and clone.
  • Client-side redaction happens before canonicalization and hashing.
  • When writable, Repo.open recreates missing empty layout directories best-effort; read-only repositories remain readable, and fsck treats missing packs/ as empty.
Repository workflowshell
tine init .
tine migrate-v3 result.tine --repo . --ref heads/main
tine fsck --repo .
tine repo-log heads/main --repo .
06Introduced v0.5 · current

Recorder and framework interop

Live capture + normalized traces

Record native activity or capture LangChain and LangGraph live through their callback protocol, while supported serialized traces enter the same event and repository model after the fact.

Live LangChain/LangGraph · supported imports

CrewAI has no verified live adapter in v0.7; its serialized logs import post hoc. Framework log import remains best-effort because upstream shapes can drift.

  • Recorder captures code, dirty patch, environment, policy, budget, and pricing manifests.
  • OpenTineCallbackHandler records LangChain and LangGraph as they run through the optional opentine[langchain] extra.
  • Model, tool, human, policy, approval, subagent, and error events keep partial runs inspectable.
  • Modern OpenTelemetry message shapes and supported framework logs normalize through the same TraceEvent and Recorder path.
  • to_otel_genai exports the resulting run back to an existing OpenTelemetry GenAI pipeline.
  • Evaluate, attest, promote, fork, resume, search, inspect, and semantic diff build on one event model.
Live LangChain / LangGraphpython
from opentine import Repo
from opentine.integrations.langchain import OpenTineCallbackHandler
handler = OpenTineCallbackHandler(Repo.init("runs"))
graph.invoke({"question": "..."}, config={"callbacks": [handler]})
run_id = handler.run_id
07Current in v0.7

A bounded remote foundation

Self-hosted synchronization

Synchronize repository objects through a minimal HTTP remote with discovery, shallow or filtered fetch, resumable pack upload, and tenant-scoped ref updates.

Reference deployment, not turnkey HA

The bundled WSGI server is intended for development and small self-hosted installations. It is not a hosted control plane, payment product, or turnkey high-availability service.

  • Tenant namespaces and reader, writer, and admin RBAC with static-token and OIDC seams.
  • Encrypted filesystem objects, SQLite metadata, and hash-chained audit records.
  • Pluggable storage, index, identity, authorization, KMS, audit, retention, and admission policies.
  • Bounded downloads and uploads, timeouts, concurrency limits, and fail-closed audit-key handling.
Self-hosted workflowshell
tine serve --root /srv/opentine --cert cert.pem --key key.pem
tine push https://runs.example --tenant team --repo .
tine clone https://runs.example ./clone --tenant team
08Current in v0.7

Capture terminal agents

CLI harness matrix

Wrap an external coding-agent CLI and turn its output into a bounded, inspectable run artifact while retaining reported usage, latency, and cost when the harness exposes them.

Table-driven presets + generic fallback

Harnesses do not inherit the parent environment by default. Their process controls bound resources, but they are not an operating-system sandbox.

  • Profiles cover Claude Code, Codex, Cursor, Gemini CLI, Grok Build, Hermes, Kimi Code, OpenClaw, OpenCode, Pi, and generic commands.
  • Configurable wall-time, output, event-count, and line-size ceilings contain noisy processes.
  • Shell and Python execution drains child pipes, terminates owned process groups, and keeps bounded diagnostics.
  • Table-driven presets let new terminal agents join the same recording path without a new subclass.
Harness captureshell
tine run --harness codex --prompt "Inspect this repo" --save run.tine
tine run --harness kimi-code --prompt "Summarize README.md" --save run.tine
tine run --harness generic --harness-command "agent run" --prompt "Fix tests"
09Current in v0.7

Cost with provenance

Signed pricing + billing

Normalize provider usage into explicit billing states and calculate known subtotals from a signed, effective-dated catalog instead of silently guessing a price.

Signed catalog + local overlays

Provider APIs usually report consumption rather than the final invoice. Cost is an estimate tied to the pinned catalog and overlays; unsupported price dimensions remain visibly partial or unknown.

  • Complete, partial, unknown, and unmetered states distinguish certainty from a known subtotal.
  • Decimal arithmetic separates input, output, cache, and reasoning dimensions with effective dates and tiers.
  • Unknown hosted model identifiers remain runnable and visibly unpriced rather than receiving a guessed rate.
  • Strict-cost budgets stop before the next call once billing becomes indeterminate.
Catalog inspectionshell
tine pricing check
tine pricing list --provider anthropic
tine pricing show openai gpt-5.6 --json
tine pricing update ./new-signed-catalog.json

Published integrations

Keep the architecture. Add provenance.

These 2 independently installable packages use opentine beneath declared graphs and branching loops. Their current 0.1.0 distributions require Python 3.11 or newer and explicitly cap opentine below 0.5. Keep them visible as published 0.2–0.4 integrations, but use a separately pinned v0.4 environment until they publish and test a wider compatibility range.

010.1.0 / Compatibility hold

Declared agent graphs with portable provenance

Graph Engineering

A framework-independent graph engine and capture layer that records the edge actually taken, state snapshots, joins, and forkable resume points into opentine artifacts and repositories.

Published 0.1.0 · opentine 0.2–0.4

The published package explicitly requires opentine >=0.2.0,<0.5 and cannot share a normal environment with v0.5, v0.6, or v0.7. Use a separately pinned v0.4 environment until a tested compatibility release expands that range.

  • GraphSpec and GraphEngine cover static edges, routers, multi-parent joins, bounded cycles, state snapshots, and resume from a recorded step.
  • Shipped adapters cover LangGraph, Burr, CrewAI Flows, LlamaIndex Workflows, and pydantic-graph.
  • OTLP/JSON, opentine TraceEvent, framework callback, and JSONL ingestion feed the same graph-aware capture surface.
  • V3 persistence adds graph-layer diff, evaluation, promotion, and search, with CLI and non-promoting MCP operations over the recorded provenance.
Published packageshell
pip install "opentine==0.4.0" "opentine-graph-engineering[cli,mcp]==0.1.0"
graphforge run-demo-fanout --question "graphs vs loops"
graphforge show <run-id-prefix>
graphforge mermaid <run-id-prefix>
020.1.0 / Compatibility hold

Branchable iterative systems

Loop Engineering

A policy-gated loop engine that records iterations, candidate states, scores, and branch decisions in portable artifacts, with repository workflows for evaluating and promoting the best run.

Published 0.1.0 · opentine 0.2–0.4

The published package explicitly requires opentine >=0.2.0,<0.5 and cannot share a normal environment with v0.5, v0.6, or v0.7. Use a separately pinned v0.4 environment until a tested compatibility release expands that range.

  • LoopEngine bounds branch fan-out and enforces run-wide step, cost, duration, and score policies.
  • Each iteration retains state, candidates, deltas, scoring, and fork ancestry so alternative paths remain inspectable.
  • V3 repository support adds shared ancestry, evaluation attestations, candidate search, and explicit promotion.
  • Provider usage normalization, signed-catalog pricing, artifact signing, and loop-aware MCP operations keep cost and provenance attached.
Published packageshell
pip install "opentine==0.4.0" "opentine-loop-engineering[mcp]==0.1.0"
loopforge run-numeric 42 --start 0 --max-steps 25
loopforge verify ./<run-id>.tine

Source experiment

Early integrations, shown with their boundaries.

This source integration is useful and inspectable, but it is not a bundled v0.7 feature, a PyPI release, or a verified v0.7-compatible package. Its source and compatibility caveats are part of the showcase.

01Source 0.1.0 / v0.7 unverified

Subagent provenance and slash commands

Hermes + opentine

A source integration that records Hermes subagent and audit lifecycles as .tine artifacts, with a /tine command surface and MCP wrapper for inspecting those runs.

Source only · no PyPI release

Its open-ended opentine >=0.1.1 dependency is not proof of v0.6 or v0.7 compatibility. The source was last updated June 29, 2026 and its documentation still describes the v1 artifact line, so review and test it before use.

  • HermesRunRecorder captures subagent start, tool, completion, and failure events.
  • The Hermes plugin groups list, show, fork, diff, replay, budget, verify, and help beneath /tine.
  • A separate recorder maps authorization, evidence, and completion into robotics audit artifacts.
  • The MCP wrapper exposes list, show, fork, and diff operations to compatible clients.
Install from sourceshell
git clone https://github.com/0xcircuitbreaker/hermes-opentine-integrations.git
cd hermes-opentine-integrations
python -m opentine_cli_commands install --target hermes
/tine help

Core repository

Start with a source pattern.

These 7 links point to runnable patterns in the current opentine repository. The descriptions stay provider-neutral so the examples track whichever current adapters you configure.

Browse all examples

Build on the artifact

Made something with opentine?

Share the repository and the workflow it enables. Stable release or useful experiment, its status and compatibility will be shown clearly.

Submit a project