Skip to main content

Local-first trace inspector for LLM agents and tool-driven workflows.

Project description

Steplight

Local-first trace inspector for LLM agents and tool-driven workflows.

Load a trace. See what happened. Understand why.

Steplight is a terminal-native tool for inspecting LLM runs, tool calls, retries, token usage, errors, and execution bottlenecks without sending trace data to a third-party platform.

It is designed for developers building with OpenAI-style workflows, LangChain, MCP tooling, or custom JSON/YAML traces who want a fast local debugging loop and a shareable HTML report.

Why Steplight

  • Understand what your agent actually did, step by step
  • Spot slow tools, retry loops, and cost spikes quickly
  • Keep sensitive traces on your own machine
  • Stay in the terminal instead of digging through raw JSON by hand
  • Share a polished HTML report when you need feedback from teammates

Features

  • Interactive Textual inspector with color-coded timeline, scrollable details, and command palette (F1)
  • Trace comparison (slt diff) to spot regressions in duration, tokens, cost, and step composition
  • Rich terminal summary with JSON output (--format json) for CI pipelines
  • Non-zero exit codes on diagnostic thresholds (--fail-on warning)
  • Static HTML export for sharing a run with other people
  • Built-in diagnostics for common agent failure patterns (bottlenecks, retry loops, cost spikes, context growth, and more)
  • Support for OpenAI-style traces, LangChain callbacks, MCP logs, and generic JSON/YAML
  • Extensible adapters and rules so you can grow it with your workflow

Install

pip install steplight

The package installs both steplight and the shorter slt alias. The examples below use slt to avoid PowerShell's reserved sl alias.

Quick Start

slt summary sample_traces/agent_with_tools.json
slt summary sample_traces/agent_with_tools.json --format json
slt summary sample_traces/agent_with_tools.json --fail-on warning
slt diff sample_traces/agent_with_tools.json sample_traces/expensive_run.json
slt validate sample_traces/simple_qa.json
slt export sample_traces/expensive_run.json -o report.html
slt inspect sample_traces/agent_with_tools.json

Example Summary Output

+------------------------ Steplight Summary ------------------------+
| Run: Find compliance gaps in policy                               |
| Source: openai                                                    |
| Overview: Duration: 14.0s | Steps: 4 | Tool calls: 2 | Retries: 0 |
| Tokens: 4,230 in / 670 out | Est. cost: $0.0028                   |
+-------------------------------------------------------------------+

Diagnostics
- WARNING: Step 'web_search' took 68.6% of total runtime.
- WARNING: Tool 'web_search' took 9.6s. Check timeouts, caching, or external latency.
- INFO: Input tokens grew 4.2x between 'Draft plan' and 'Final answer'.
Bottleneck: web_search (68.6% of total runtime)

Example Diff Output

Comparing: Find compliance gaps in policy  ->  Long form research synthesis

                        Stats
Metric     |    Base |    Head |               Change
-----------+---------+---------+---------------------
Duration   |  14.00s |  40.00s |    +26.00s (+185.7%)
Steps      |       4 |       7 |          +3 (+75.0%)
Tool calls |       2 |       4 |         +2 (+100.0%)
Retries    |       0 |       0 |                    0
Tokens in  |   4,230 |   5,100 |        +870 (+20.6%)
Tokens out |     670 |   1,800 |     +1,130 (+168.7%)
Cost       | $0.0028 | $0.4500 | +$0.4472 (+16180.8%)

Step type changes
  prompt         0 -> 1  +1
  tool_call      2 -> 4  +2

Supported Trace Formats

  • OpenAI-style step traces
  • LangChain callback event exports
  • MCP tool call logs
  • Generic JSON or YAML with an optional steplight.yaml mapping file

Diagnostics

Steplight currently flags:

  • bottlenecks
  • retry loops
  • context growth
  • repeated tool calls
  • silent errors
  • slow tools
  • high-cost runs
  • empty completions

Custom Mapping Example

mapping:
  steps_path: "$.events"
  timestamp_field: "ts"
  type_field: "event_type"
  type_values:
    prompt: "llm_start"
    completion: "llm_end"
    tool_call: "tool_start"
    tool_result: "tool_end"

Commands

  • slt inspect <file> opens the interactive Textual UI
  • slt summary <file> prints a non-interactive terminal summary
  • slt summary <file> --format json outputs machine-readable JSON
  • slt summary <file> --fail-on warning exits with code 1 if diagnostics fire
  • slt diff <base> <head> compares two traces side-by-side
  • slt export <file> -o report.html creates a static HTML report
  • slt validate <file> checks whether a trace can be parsed successfully

Docs

Repository Layout

steplight/
  cli/
  core/
  adapters/
  tui/
  export/
sample_traces/
tests/

Development

python -m pip install -e .[dev]
pytest
python -m steplight.cli.main --help

Releasing

Releases are fully automated. Push to main using conventional commit messages (feat:, fix:, etc.) and the pipeline handles the rest:

  1. CI runs tests on Python 3.11, 3.12, and 3.13
  2. Release Please creates a version bump PR with changelog
  3. The PR auto-merges after CI passes
  4. A GitHub Release is created and the package is published to PyPI

Status

Steplight is currently an alpha-stage project focused on a clean local-first inspection experience, a solid parser surface, and practical diagnostics.

License

MIT

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

steplight-0.4.0.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

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

steplight-0.4.0-py3-none-any.whl (32.4 kB view details)

Uploaded Python 3

File details

Details for the file steplight-0.4.0.tar.gz.

File metadata

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

File hashes

Hashes for steplight-0.4.0.tar.gz
Algorithm Hash digest
SHA256 9b2d2b70dbec55e6f7624c9ab646749c93ee8af5335955f5b4eb4cd35e149225
MD5 70a1eced0e6980dcc30ec929e4456999
BLAKE2b-256 f04615b7eec40fe65d8dc31819d83bbfa220ead6182a07602b1c6cf4f8f6d797

See more details on using hashes here.

Provenance

The following attestation bundles were made for steplight-0.4.0.tar.gz:

Publisher: publish.yml on riccardomerenda/steplight

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

File details

Details for the file steplight-0.4.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for steplight-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 21fafe352351957f0b9b0449174f14874bdb7817b7e34cb9ff0808889a624722
MD5 00887d9ac7081428b26927d58671075c
BLAKE2b-256 40067abbaa534a2bf84a1ae852aa41bbbb133475cf8448f21f0d31d53bf2d56f

See more details on using hashes here.

Provenance

The following attestation bundles were made for steplight-0.4.0-py3-none-any.whl:

Publisher: publish.yml on riccardomerenda/steplight

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