Skip to main content

opentine-gui

Desktop GUI for opentine — visual management console built with Dear PyGui.

Install

pip install opentine-gui
tine-gui

Or from source with uv:

uv sync
uv run tine-gui

Requires Python 3.11+ and opentine 0.4.0 or newer (tested against 0.5.0), which pip installs for you.

Runs on Windows, macOS and Linux — lint and the whole test suite run on all three in CI.

Usage

tine-gui                # reads last used dir, then ./.tine_runs
tine-gui path/to/runs   # point at a different runs directory

Keyboard

Key Action
Up / Down Move through the visible run list
Esc Close a dialog, else clear the DAG filter, else clear the run search
Ctrl+F Focus the run search box
Ctrl+C Copy the selected run id
Ctrl+R Force a reload of the runs directory

Navigation keys stay out of the way while a text field has focus or a dialog is open.

Environment

Variable Effect
OPENTINE_GUI_PREFS Preferences file location (default: the platform config dir, below)
OPENTINE_GUI_SCALE UI scale factor, 0.53.0. Overrides DPI auto-detection
OPENTINE_GUI_FONT Path to a .ttf/.ttc to render with. Set this for CJK text

Preferences live in %APPDATA%\opentine-gui\ on Windows, ~/Library/Application Support/opentine-gui/ on macOS and ~/.config/opentine-gui/ on Linux; an explicit XDG_CONFIG_HOME wins on every platform, matching opentine's own pricing-overlay convention.

The console picks up the display scale automatically (per-monitor DPI on Windows, GDK_SCALE/QT_SCALE_FACTOR on Linux) and loads a system monospace font so accented text, symbols and arrows in recorded output render properly. CJK glyphs need a font that has them — point OPENTINE_GUI_FONT at e.g. Noto Sans Mono CJK.

Features

  • Run list with status colors (running / paused / completed / failed)
  • Step DAG rendered as a real node editor (full multi-parent ancestry, per-kind colors, minimap)
  • Run detail: model, status, cost (with per-model / per-kind attribution), tokens, budget vs incurred, duration, tags, refs/branches, format + migration provenance, integrity and signature status, prompt + system prompt, and fork lineage — origin, fork point, branch, and whether the fork act was unique or reproducible
  • Step detail: inputs, outputs, tool info, error payloads, usage, billing, timestamp, cost
  • Compare any two runs — common ancestor, steps only on each side, and per-field before/after deltas including cost, model and token usage
  • DAG search with visual highlight over ids, kinds, tool names, payloads, and error text
  • Live auto-refresh — picks up new .tine files while agents run
  • Export a run as OpenTelemetry GenAI (OTLP/JSON) to ship a verified trace to whatever observability backend runs beside it — needs opentine 0.5.0+, and never touches the artifact
  • Run actions: Pause / Resume / Fork-from-step / Fork-to-branch / Compare (writes back to the file each run was loaded from; pause and resume reload disk state first so a stale GUI snapshot cannot truncate or clobber what an agent wrote since — a small write race remains without file locking)
  • File menu: Refresh, Change runs dir, Quit
  • Corrupt .tine files surfaced as load errors, not silently dropped; integrity-digest mismatches are flagged in the error panel and the run inspector
  • Lightweight local preferences for the last runs directory and run search filter

Reads the current open-source opentine .tine format (format_version == 2, opentine ≥ 0.4.0, tested against 0.5.0) — the same content-addressed, integrity-checked artifacts agents and CLI harnesses produce. Legacy format_version == 1 files are auto-migrated on load (pause/resume re-save the file as v2; fork writes its new artifact as v2 and leaves the source untouched). Try it with bundled demo runs:

uv run python demo/seed.py   # writes valid .tine fixtures into ./.tine_runs
uv run tine-gui

Layout

┌─ File   Run ─────────────────────────────────────────────────────┐
│ ┌── Runs ──────┐ ┌── Run ──────────┐ ┌── Step DAG ────────────┐ │
│ │ a3f8 complete│ │ id, model, cost │ │  ┌─think─┐   ┌─tool──┐ │ │
│ │ b7c1 complete│ │ steps, duration │ │  │ plan  │──▶│search │ │ │
│ │ c9d2 running │ │ prompt          │ │  └───────┘   └───────┘ │ │
│ │              │ │ ── Step ──      │ │                        │ │
│ │              │ │ inputs/outputs  │ │                        │ │
│ └──────────────┘ └─────────────────┘ └────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘

Development

uv sync --extra dev
uv run pytest
uvx ruff check opentine_gui tests

Manual GUI QA coverage lives in docs/gui-qa.md.

License

Apache 2.0

Release files for opentine-gui 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for opentine-gui 0.2.0
File Size Uploaded
opentine_gui-0.2.0.tar.gz 99.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for opentine-gui 0.2.0
File Interpreter ABI Platform
opentine_gui-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 136.7 kB

Release files / opentine_gui-0.2.0.tar.gz

Download URL opentine_gui-0.2.0.tar.gz
Size 99.0 kB
Tags Source
SHA-256 checksum
How to use checksums
960c75d6383aaeb727fea8391015a64f89a22e1928487ccec81f342962d61b14
BLAKE2b-256 checksum
How to use checksums
5e690cbe2613607c7e2338bc8c436e2cd081a5f3160ef5285b79b9f0210c1752
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 1, 2026.

Transparency log

Release files / opentine_gui-0.2.0-py3-none-any.whl

Download URL opentine_gui-0.2.0-py3-none-any.whl
Size 37.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8044817e213496acb79a39f92efca699ec7edd388d2c25d81021b9b67428ffdd
BLAKE2b-256 checksum
How to use checksums
65898853762397dd12540baf5d0c750b8b583155c14a6d231e8e1652ee2d1170
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page