Skip to main content

Desktop GUI for opentine — browse, inspect, compare and fork agent runs

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opentine_gui-0.2.0.tar.gz (99.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opentine_gui-0.2.0-py3-none-any.whl (37.6 kB view details)

Uploaded Python 3

File details

Details for the file opentine_gui-0.2.0.tar.gz.

File metadata

  • Download URL: opentine_gui-0.2.0.tar.gz
  • Upload date:
  • Size: 99.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for opentine_gui-0.2.0.tar.gz
Algorithm Hash digest
SHA256 960c75d6383aaeb727fea8391015a64f89a22e1928487ccec81f342962d61b14
MD5 48b4a0296e00f1ceb7f63b244aa79988
BLAKE2b-256 5e690cbe2613607c7e2338bc8c436e2cd081a5f3160ef5285b79b9f0210c1752

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentine_gui-0.2.0.tar.gz:

Publisher: publish.yml on 0xcircuitbreaker/opentine-gui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opentine_gui-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: opentine_gui-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 37.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for opentine_gui-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8044817e213496acb79a39f92efca699ec7edd388d2c25d81021b9b67428ffdd
MD5 87cb2d48d9bc7e2942977735140b4104
BLAKE2b-256 65898853762397dd12540baf5d0c750b8b583155c14a6d231e8e1652ee2d1170

See more details on using hashes here.

Provenance

The following attestation bundles were made for opentine_gui-0.2.0-py3-none-any.whl:

Publisher: publish.yml on 0xcircuitbreaker/opentine-gui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page