Browse documentation
Docs target stable release v0.10.0; v0.11.0 on main is unreleased.Stable vs main checked 2026-10-22

On main · v0.11.0 · unreleased · checked 2026-10-22

v0.11 preview

This page describes source at commit 998adb5. GitHub and PyPI still publish v0.10.0. These commands and storage changes are not part of that stable package.

Ask which agents did an action

Tool calls become redacted action records: verb, programs, read/write paths, hosts, MCP server/tool, and agent identity. who groups matching actions; actions RUN lists a run's calls; touched finds writes and deletes.

v0.11 preview
# Requires the unreleased v0.11 source
tine who --program rm --since 7d --by agent,model --json
tine touched --path src/main.py --json
tine actions result.tine --json
tine audit --policy action-policy.toml --strict

Queries support tool, command, program, path, host, MCP, verb, agent, model, provider, session, run, and time filters. Verbs include exec, file.read, file.write, file.delete, net, mcp, git, and spawn_subagent. Use --repo PATH for repository refs; the default covers the legacy runs directory.

audit checks TOML or JSON deny/warn rules against a fresh action index. Deny rules exit 1; --strict also fails on warnings. Unreadable runs or an action-cap hit fail coverage unless --allow-partial is explicit. This checks recorded evidence, not unrecorded activity. MCP adds bounded find_actions.

Rebuildable SQLite caches live in .tine_runs/actions.sqlite or .tine/indexes/actions.sqlite. A per-user keyed stamp causes foreign indexes to be rebuilt. Run-index v2 adds tool arguments, full-file fallback for truncated text, and harness: / provider: predicates.

Media pricing with explicit units

The preview catalog grows from 190 to 224 cards under opentine-pricing/3. It supports per-image, second, minute, character, and request rates, per-modality token dimensions, and explicit shared rates through same_rate_as. Used media dimensions without rates produce partial billing and warnings.

Gemini and OpenAI adapters split supported image/audio/video usage from text. OpenTelemetry imports and exports modality counters without double billing inclusive totals. Coverage includes Gemini Omni Flash, image/TTS/Live/Lyria models, OpenAI realtime/audio/image/transcription families, and MiniMax M3.1 Flash. Coverage remains dependent on exact cards and recorded usage.

v0.10 refuses catalog /3. Older /1 or /2 catalogs carrying media units or same_rate_as are refused. Media overlays need their own rates; text rates are not silently reused.

Compression changes reader compatibility

New files use a binary TINEZ1 wrapper. New compressed or packed repositories use a version-2 descriptor. The underlying portable payload stays v2 and repository objects stay v3; releases before v0.11 cannot read the new compressed storage.

v0.11 storage preview
# Requires v0.11; choose plain output for older readers
tine --no-compress run --harness codex --prompt "Inspect this repo" --save plain.tine
tine compress result.tine --decompress

# Repository packing and archive operations
tine gc --repo .
tine repack --repo .
tine archive create backup.tinearchive --repo .
tine archive restore backup.tinearchive restored-repo

# Compressed telemetry export
tine export result.tine --output spans.json.gz --compress gzip

OPENTINE_COMPRESS=0 also selects plain writes; zlib or zstd selects a codec. Python 3.11–3.13 needs the zstd extra to read zstd data; writes otherwise use zlib. Existing version-1 repositories stay uncompressed until gc upgrades them.

IDs, digests, and signatures remain over canonical uncompressed bytes. Compression conversion preserves those bytes. GC verifies packed data before deleting loose objects and runs under a lock. Archive restore verifies object IDs and requires a new destination. Network transfer continues to exchange canonical bytes between compressed and plain repositories.

Stricter git tool policies

Git runs through exact subcommand and option allowlists with paths confined to the shell root. Network operations require ShellPolicy.git_network; init, archive, format-patch, and other write-out operations require git_write_out. Clone needs both. Git helpers, abbreviated options, unsafe pathspec forms, and environment-driven hooks/pagers are refused or disabled.

See the pinned changelog, repository reference, and pricing reference for source-level details. The release-status page tracks publication.