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.5–3.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
.tinefiles 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
.tinefiles 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)
| File | Size | Uploaded | |
|---|---|---|---|
| opentine_gui-0.2.0.tar.gz | 99.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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