stmo-cli 0.1.0

CLI for version controlling Redash queries and dashboards
Documentation

stmo-cli

Rust CLI for version controlling Redash queries and dashboards.

Features

  • Version control Redash queries (SQL + metadata) and dashboards
  • Automatic query discovery from local files
  • Automatic deployment to Redash
  • Built in Rust for blazing fast performance
  • Pedantic code quality with clippy pre-commit hooks

Prerequisites

Claude Integration

stmo-cli works great with the mozdata-claude-plugin, which provides Mozilla telemetry expertise and discovery directly in Claude.

Installation

cargo build --release
# The binary will be at ./target/release/stmo-cli

Setup

  1. Get your Redash API key from your user profile

  2. Set environment variables:

export REDASH_API_KEY="your-api-key-here"
export REDASH_URL="https://sql.telemetry.mozilla.org"  # optional, this is the default
  1. Create directories:
stmo-cli init
  1. Discover available queries:
stmo-cli discover
  1. Fetch specific queries:
stmo-cli fetch 123 456 789

Usage

Fetch Queries from Redash

stmo-cli fetch --all        # Fetch all tracked queries
stmo-cli fetch 123 456 789  # Fetch specific queries
stmo-cli discover            # List available queries

This creates/updates:

  • queries/{id}-{slug}.sql - Query SQL
  • queries/{id}-{slug}.yaml - Query metadata (parameters, visualizations, etc.)

Deploy to Redash

stmo-cli deploy       # Deploy changed queries (detected via git status)
stmo-cli deploy --all # Deploy all queries

Warning: This force overwrites the queries in Redash. Git is the source of truth.

File Structure

queries/
├── 123-mobile-crashes.sql
└── 123-mobile-crashes.yaml
dashboards/
└── 456-my-dashboard.yaml

Query IDs are embedded in filenames ({id}-{slug}.{ext}), so no separate config file is needed.

Development

Pre-commit Hooks

The project uses clippy in pedantic mode:

cargo clippy --all-targets --all-features -- -W clippy::pedantic -D warnings

Install pre-commit hooks:

pip install pre-commit
pre-commit install

Building for Release

cargo build --release
./target/release/stmo-cli --help

Architecture

See CLAUDE.md for detailed architecture documentation.