Browse documentation
Docs target stable release v0.10.0.Stable vs main checked 2026-10-17

Upgrade to v0.10

Terminal
python -m pip install --upgrade "opentine==0.10.0"
tine harnesses --installed
tine import --help

GitHub and PyPI published v0.10.0 on October 17, 2026; the changelog entry is dated October 15. Python 3.11–3.14 remains supported. Portable files remain v2 and repository objects remain v3, with stored data from v0.3 onward still readable.

Harness defaults

Presets now request each CLI's documented JSON mode. Codex uses exec --json, Cursor invokes agent --print --output-format stream-json, and Pi no longer requires a custom command. Use tine harnesses to inspect the actual command and field fidelity. The last output-format option wins; stderr remains text.

Unconfigured harness autosave checkpoints at most every two seconds and only after the run grows by a quarter. Explicit interval or time throttles retain their meaning.

Import and pricing

Terminal
tine import --from-default-location
tine import latest --from-default-location --price --save session.tine
tine price session.tine --json

--format now defaults to auto. Session logs and OTLP logs join existing trace formats. Session imports carry agent_writable: true; those files could have been edited by the agent.

Imported cost and billing are no longer trusted totals. Source cost becomes opentine.source_reported_cost; catalog pricing supplies the billed subtotal. Without a matching card, imported calls stay unknown. Recorder.import_events applies the same rule unless an operator explicitly passes trusted_billing=True for independently priced events.

Post-hoc totals can rise: tine price now prices billed done, think, and error steps and applies recorded service tiers. Capture-time totals do not change. Local calls remain unmetered only with the required capture evidence; imported or cloud-tagged calls never become free from a provider label.

Endpoints and defaults

--base-url and --api-key-env configure model mode. An overridden hosted-vendor URL requires an explicit key environment variable. Explicit non-Anthropic endpoints use ANTHROPIC_COMPAT_API_KEY or an explicit key. First-party keys and SDK custom headers do not follow an explicit endpoint override.

Groq and OpenRouter default to openai/gpt-oss-120b; Together defaults to meta-models/Muse-Glimmer-30B. Gemini 3.5 Flash was retired: recorded calls after October 7 re-price unknown. Choose a current model explicitly.

Repository and catalog trust

Fetch keeps annotations for already-held runs under remote refs. Adopt them deliberately with --adopt-annotations. Remote URLs refuse credentials, queries, and fragments; use --token-file or TINE_REMOTE_TOKEN. Clone refuses targets already holding refs or objects.

Older signed workspace pricing catalogs cannot roll back an installed catalog. A different signed catalog at the same generation timestamp is refused. Ed25519 blocks require their embedded public key, null signature fields are errors, and a public-key file cannot be used as a private seed.

Review the tagged changelog for the full third-audit fixes and the harness reference before changing automation.