opentine v0.10.0: bring your agent, keep the run
opentine v0.10.0 is published on GitHub and PyPI. The main change is reach: capture the agent CLI you already use, import the sessions it already saved, and calculate cost from the usage it recorded.
Start with your existing agent
The harness catalog now has 25 choices, including Codex, Claude Code, Gemini CLI, Qwen Code, Goose, Amp, Droid, Copilot, OpenHands, Aider, and an operator-configured generic command.
tine harnesses --installed
tine run --harness codex --prompt "Inspect this repo" --save codex.tine
tine price codex.tine --json
Presets request documented JSON modes where available. The catalog reports model, usage, cost, and tool fidelity separately. Some fields depend on a flag; some schemas remain unverified. Check the row for your CLI before relying on a field.
Codex now runs exec --json by default. Its cumulative usage counters become per-turn differences in exclusive token buckets, and model resolution follows flags, configuration, and rerouting notices. Claude Code can join its own telemetry to the captured run through W3C TRACEPARENT.
Recover the sessions you already ran
Direct session import supports Claude Code, Codex, Gemini CLI, and Qwen Code. Claude Code subagent files are imported with the session under the tool step that spawned them.
tine import --from-default-location
tine import latest --from-default-location --price --save session.tine
Format detection defaults to auto. OTLP log imports also understand supported Claude Code, Codex, and Gemini CLI events. Session logs remain evidence from a writable local file: the run records agent_writable: true rather than implying independent attestation.
Cost comes from recorded usage and the catalog
The signed snapshot grows from 122 to 190 rate cards, adding current model families, historical cards for imported traces, and regional cloud tiers.
tine price now covers billed done, think, and error steps and applies recorded service tiers. Older runs may produce higher post-hoc totals because previously missed calls are now counted. Their capture-time totals remain unchanged.
Imported files cannot choose their own trusted total. Source cost becomes opentine.source_reported_cost, visible as an attribute and never summed. --price derives cost from the catalog; missing evidence remains unknown. An imported local-provider label cannot make a call free.
Point capture at your endpoint
tine run --model vllm:served-model --base-url http://127.0.0.1:9000/v1 --prompt "Summarize this branch" --save local.tine
Eleven new local presets and fifteen hosted vendors expand model capture. Model mode gains --base-url and --api-key-env. Endpoint overrides do not inherit a different vendor's credentials or SDK custom headers. Anthropic-compatible and Responses-compatible servers retain their own provider identity.
Another audit, the same formats
The release includes fixes from a third security audit: annotation adoption becomes deliberate for runs already held, association budgets protect pack transfer, redaction covers more credential shapes, exported content is redacted before serialization, MCP output is sanitized, and bounded Linux tool processes clean up escaped descendants.
Portable artifacts remain .tine v2 and repositories remain v3. Stored data written since v0.3 stays readable.
python -m pip install --upgrade "opentine==0.10.0"
Read the upgrade guide, harness reference, and official changelog for the behavior changes before updating an automated workflow.