Skip to main content

Steve CLI

A CLI tool for the data platform. Commands are organized by concern: general workspace automation, data lakehouse operations, semantic knowledge graphs, and governance.

Upgrading from 0.x? See CHANGELOG.md — v1.0.0 introduces branch-isolated storage with breaking path changes that require a one-time data migration.

Installation

# Add to your workspace
uv add steve-cli

# Or pin to a local editable copy (in your workspace pyproject.toml)
[tool.uv.sources]
steve-cli = { path = "../../packages/steve-cli", editable = true }

Upgrade to the latest version:

steve upgrade

Platform

General-purpose commands for running jobs, managing local development processes, and working with the core infrastructure (object storage, secrets).

steve jobs — run automation jobs

Runs tasks defined in jobs.yaml. Each job declares a command and optional env vars. Designed for data pipeline steps, seeding, bootstrapping, etc.

steve jobs              # interactive picker
steve jobs ls           # list all jobs with commands and env vars
steve jobs run <name>   # run a job by name
steve jobs run <name> -f path/to/jobs.yaml

jobs.yaml example:

jobs:
  - name: seed-data
    command: ["uv", "run", "src/02_seed_data.py"]
    env:
      BATCH_SIZE: "500"

steve apps — manage long-running apps

Starts, stops, and monitors local apps defined in apps.yaml. Apps are registered with the auth-proxy so they get a public URL inside the platform.

steve apps              # interactive picker
steve apps ls           # list apps with status and URLs
steve apps status       # show running/stopped status for all apps
steve apps start <name>
steve apps stop <name>
steve apps restart <name>
steve apps logs <name> [-n 100]

steve setup env — decrypt secrets

Decrypts SOPS-encrypted *.enc.env files in the current directory and writes plaintext .env files.

steve setup env

steve buckets — browse S3 storage

Interactive browser for S3/MinIO buckets. Detects available buckets from env vars (BRONZE_ACCESS_KEY, SILVER_ACCESS_KEY, GOLD_ACCESS_KEY, or {WORKSPACE}_ACCESS_KEY) and shows their contents as a file tree. Files can be opened in visidata.

steve buckets

Data Lakehouse

Commands for working with the lakehouse layer: Iceberg tables accessed via Trino.

steve tables — browse Iceberg tables via Trino

Interactive browser for Iceberg tables. Lists schemas and tables available via Trino, and opens them in visidata for inspection.

steve tables

Requires TRINO_ENDPOINT to be set. Install visidata for table preview:

uv pip install 'steve-cli[visidata]'

Semantics & Knowledge Graphs

Commands for authoring and operating Virtual Knowledge Graphs (VKGs) — semantic layers that expose relational Iceberg data as RDF/SPARQL via Ontop.

There are two sides:

  • ontology — the author/publish side: define concepts, register them in the Data Product Registry, compile VKG artifacts
  • vkg — the runtime/ops side: manage named Ontop instances on the VKG control plane, run SPARQL queries

steve ontology — author and publish ontologies

steve ontology ls                          # list registered packages in the registry
steve ontology ls --show-bindings          # include binding packages
steve ontology register <file.yaml>        # register a concept or binding YAML
steve ontology add <uri>                   # add a dependency URI to ontology.yaml
steve ontology build                       # resolve deps + compile → write vkg/ folder locally
steve ontology compile --root <uri> --binding <uri>   # compile and print artifact info
steve ontology push                        # compile + upload to VKG control plane (default slot)
steve ontology push --name <slot>          # push to a named VKG slot
steve ontology push -f ontology-consumer.yaml  # use a different manifest file
steve ontology push --frozen               # fail if lock file is absent or stale (like npm ci)

Manifest format (ontology.yaml):

# Option A: workspace that owns ontology files
packages:
  - path: ontologies/order_core.yaml
bindings:
  - path: ontologies/binding_order_iceberg.yaml
compile:
  root: dp://o/acme/concepts/order/core
  binding: dp://o/acme/bindings/order/iceberg

# Option B: consumer workspace (resolves deps from registry, no local files)
dependencies:
  - dp://o/acme/concepts/party/core
  - dp://o/acme/concepts/order/core
compile:
  root: dp://o/acme/concepts/order/core
  binding: dp://o/acme/bindings/order/iceberg

After push, a lock file (ontology.lock.yaml) is written with resolved package versions and Iceberg snapshot IDs for audit and future time-travel SQL rewriting.

steve vkg — operate VKG instances

steve vkg ls                              # list all slots: status, concept counts, SPARQL URL
steve vkg status <name>                   # detailed status for one slot
steve vkg start <name>                    # start a stopped slot
steve vkg stop <name>                     # stop a running slot (persists desired=stopped)
steve vkg sparql <name> "<SPARQL query>"  # run a SPARQL query and print results as a table
steve vkg sparql <name> "<query>" --format json
steve vkg logs <name> [-n 50]            # tail the Ontop process log for a slot

Desired state is persisted per slot — slots with desired=running are automatically restored after a pod restart.


Governance

steve policies apply — apply access policies

Applies role-based access policies from a YAML file to the Policy Control Plane.

steve policies apply                      # apply from ./policies/access.yaml
steve policies apply -f custom/path.yaml

Environment variables

Variable Used by Description
REGISTRY_URL ontology Data Product Registry URL (default: http://localhost:8765)
REGISTRY_TOKEN ontology Pre-issued JWT for the registry
REGISTRY_JWT_SECRET ontology Secret to mint a JWT (if no token)
REGISTRY_ORG ontology Org claim for minted JWT
VKG_CONTROL_PLANE_URL ontology push, vkg Control plane URL (default: http://localhost:18081)
TRINO_ENDPOINT ontology push, tables Trino HTTP URL for snapshot capture and table browsing

File Metadata Extraction

Steve automatically extracts metadata from files read or written via MetadataRegistry. The extractor is chosen by file extension.

Extension Extractor Requires
.parquet, .pq ParquetExtractor pip install steve-cli[polars]
.csv, .tsv, .txt CsvExtractor stdlib only
.json, .jsonl, .ndjson JsonExtractor stdlib only
.xlsx, .xls, .xlsm ExcelExtractor pip install steve-cli[excel]
anything else GenericExtractor stdlib only

Custom extractors can be registered at startup:

from steve_cli.storage.metadata.port import MetadataExtractorPort, FileMetadata, ColumnMetadata
from steve_cli.storage.metadata.registry import MetadataRegistry

class AvroExtractor(MetadataExtractorPort):
    extensions = (".avro",)

    def extract(self, data: bytes, path: str) -> FileMetadata:
        import fastavro, io
        reader = fastavro.reader(io.BytesIO(data))
        schema = reader.writer_schema
        columns = [ColumnMetadata(name=f["name"], type=str(f["type"])) for f in schema.get("fields", [])]
        return FileMetadata(format="avro", size_bytes=len(data), rows=len(list(reader)), columns=columns)

MetadataRegistry.register("avro", AvroExtractor)

Metadata

Release files for steve-cli 1.0.3

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

Source distribution (sdist)

Source distribution for steve-cli 1.0.3
File Size Uploaded
steve_cli-1.0.3.tar.gz 65.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for steve-cli 1.0.3
File Interpreter ABI Platform
steve_cli-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 139.8 kB

Release files / steve_cli-1.0.3.tar.gz

Download URL steve_cli-1.0.3.tar.gz
Size 65.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b0bebbd716ffc932e39acff38a47191ec6e0db4e1b8902a1f2dcaf20ec1194ac
BLAKE2b-256 checksum
How to use checksums
27fb10b3c9d55bc13598313edd066a8503cc1815296b6c4edc0afb271b9d7d04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.04","id":"plucky","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / steve_cli-1.0.3-py3-none-any.whl

Download URL steve_cli-1.0.3-py3-none-any.whl
Size 74.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4846eb958f711b87a71719e1a73350dc5fb84f050aecdcd479ea987afb34235a
BLAKE2b-256 checksum
How to use checksums
25b6dd63d88b1bdde3058f573922e540a6fc3535c72520227ad6dbc252687178
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.04","id":"plucky","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

This release

1.0.3 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.4.1

2 release files

0.3.20

2 release files

0.3.19

2 release files

0.3.18

2 release files

0.3.17

2 release files

0.3.16

2 release files

0.3.15

2 release files

0.3.14

2 release files

0.3.13

2 release files

0.3.11

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

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