Skip to main content

Trino query monitoring: CLI, TUI dashboard, and progress library

Project description

trinops

CI PyPI Python License

Trino query monitoring from the terminal. CLI commands for listing and inspecting queries, a live TUI dashboard, and a progress-tracking library for use in Python scripts.

trinops TUI dashboard

Installation

pip install trinops

The default install includes the CLI and TUI dashboard. For tqdm progress bars in library usage:

pip install trinops[tqdm]

Quick Start

Configure your Trino connection interactively or with flags:

# Interactive prompts
trinops config init

# Non-interactive
trinops config init --server trino.example.com:443 --user myuser --auth basic

Or pass the server directly:

trinops queries --server trino.example.com

Or set environment variables:

export TRINOPS_SERVER=trino.example.com
export TRINOPS_USER=myuser
export TRINOPS_AUTH=basic

CLI Usage

List queries

# Your recent queries
trinops queries

# All users' queries
trinops queries --query-user all

# Filter by state
trinops queries --state RUNNING

# JSON output (pipe to jq, etc.)
trinops queries --json

# Select specific fields
trinops queries --select query_id,state,user,elapsed_time

Inspect a single query

# Rich formatted detail
trinops query <query-id>

# Full REST API response as JSON
trinops query <query-id> --json

# Select specific fields from the raw response
trinops query <query-id> --select queryId,state,queryStats.elapsedTime,queryStats.peakUserMemoryReservation

TUI dashboard

trinops tui
trinops top  # alias

The dashboard shows a live-updating table of queries with sorting, detail pane, and configurable refresh interval. Keybindings: r refresh, u toggle user filter, a show all, -/+ adjust refresh rate, q quit.

Configuration

Config file lives at ~/.config/trinops/config.toml:

[default]
server = "trino.example.com"
scheme = "https"
user = "myuser"
auth = "none"
query_limit = 50

[profiles.prod]
server = "trino-prod.example.com:443"
auth = "oauth2"

Manage config from the CLI:

# Set individual values
trinops config set server trino.example.com
trinops config set user myuser
trinops config set query_limit 100

# Configure a named profile
trinops config set server trino-prod:443 --profile prod
trinops config set auth oauth2 --profile prod

# View current config
trinops config show
trinops config show --profile prod

Authentication

Supported methods: none, basic, jwt, oauth2, kerberos.

# Check auth status
trinops auth status

# Run OAuth2 flow
trinops auth login

For basic auth, trinops uses the system keyring to store passwords securely.

Library Usage

Wrap a trino cursor or connection to get live progress display during query execution:

import trino
from trinops import TrinoProgress

conn = trino.dbapi.connect(host="trino.example.com", port=443, user="myuser")
cursor = conn.cursor()

with TrinoProgress(cursor) as tp:
    tp.execute("SELECT * FROM catalog.schema.table")
    rows = tp.fetchall()

You can also monitor an already-running query by passing a connection and query ID:

with TrinoProgress(conn, query_id="20260310_143549_08022_abc") as tp:
    tp.start()
    tp.wait()

Claude Code Integration

trinops ships with a Claude Code skill that teaches Claude how to query and inspect Trino cluster activity. If you have trinops installed in a project, Claude can use trinops queries --select and trinops query <id> --select to investigate query performance, find long-running queries, and diagnose failures with minimal context usage.

A Claude Code plugin is also included for marketplace discoverability.

Roadmap

Planned features, roughly in priority order:

  • Kill query support — cancel running queries from CLI and TUI, gated behind a config setting (#1)
  • Enriched TUI detail — tabbed query detail view with stats, stages, plan, and table access info (#2)
  • Query plan visualization — render the stage tree from the REST API in both CLI and TUI (#5)
  • Schema cache and search — cache catalog metadata locally and search across tables/columns (#3)
  • MCP server — Model Context Protocol server for AI assistant integration (#4)
  • Multi-cluster support — switch between profiles in the TUI, unified multi-cluster view (#6)
  • Notifications and alerts — desktop notifications and webhooks for long-running queries and failures (#7)
  • Worker/node health — cluster node monitoring via /v1/node (#8)

Requirements

  • Python 3.10+
  • A running Trino cluster with the REST API accessible

License

PolyForm Shield 1.0.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

trinops-0.2.0.tar.gz (489.4 kB view details)

Uploaded Source

Built Distribution

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

trinops-0.2.0-py3-none-any.whl (33.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: trinops-0.2.0.tar.gz
  • Upload date:
  • Size: 489.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for trinops-0.2.0.tar.gz
Algorithm Hash digest
SHA256 0bc7d81f48d0ad6faed8e3e4eef46d7ed4aa18e225269d54a82cff3f615e2dc3
MD5 89b80d50fddafd243d1d1771e56156b2
BLAKE2b-256 661feb322766222ac2db67268e0893391da3c5f82631381a57225fd106e09890

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on lokkju/trinops

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

File details

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

File metadata

  • Download URL: trinops-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 33.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for trinops-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a017fca49397e96fe0e30521c33795c584591c5fc6dfd7a78ad6c24ffa62908
MD5 59acaf602f0e68d99e92d02ce050021c
BLAKE2b-256 6fc286cc6d513b46ce593910d98dfcbf6160f4c377dfec01e39b4c5d2dd66e1f

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on lokkju/trinops

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