Exhibit
Exhibit is a data-analysis CLI that shows its work — every analysis is a persistent, replayable investigation: an append-only graph of typed steps (question → plan → read-only SQL → result → evidence-backed conclusion), not a chat transcript. Load a CSV/Parquet file (or snapshot a Postgres table), ask in plain English, and get an inspectable, replayable, exportable trail.
Read-only by construction. Data is loaded once into a per-investigation
DuckDB opened read-only with external access disabled; every generated query is
parsed by a static guard that permits a single SELECT and blocks writes,
ATTACH, COPY, and file access. See
THREAT_MODEL.md.
Install
pip install exhibit-cli
export ANTHROPIC_API_KEY=... # for Claude; or run fully offline with --llm mock
Use
exhibit start data.csv # one file
exhibit start orders.csv customers.csv # several (joins across them)
exhibit start postgresql://user@host/db --tables orders # live Postgres (read-only snapshot)
Then ask questions in plain English. Inside an investigation:
/judge— adversarial self-review (weak claims, missing evidence, untested alternatives)/branch <id> <question>— fork a question off an earlier step/rerun <id>— deterministically replay a stored query or a whole plan (no LLM)/cost— token usage + cost for the session, including prompt-cache savings/export [html]— Markdown, or a self-contained HTML report/help— everything else
Resume anytime with exhibit open <id>.
License
Source-available under the Business Source License 1.1: read the source and use it freely in production, but don't offer a competing commercial or hosted data-analysis product. Converts to Apache-2.0 on 2030-07-31. Not an OSI open-source license.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file exhibit_cli-0.1.1.tar.gz.
File metadata
- Download URL: exhibit_cli-0.1.1.tar.gz
- Upload date:
- Size: 110.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9380a285bff61c7c04d8f2ec6ca3248bf2e41a34e68ef7eb6456d3954d0c51d
|
|
| MD5 |
8a55e934425b2138fd53241f0908451f
|
|
| BLAKE2b-256 |
c7863d435d23622f809e96bfdb4316ab146644def449aea9e8823733739c39f2
|
Provenance
The following attestation bundles were made for exhibit_cli-0.1.1.tar.gz:
Publisher:
release.yml on ziwalker/exhibit-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
exhibit_cli-0.1.1.tar.gz -
Subject digest:
c9380a285bff61c7c04d8f2ec6ca3248bf2e41a34e68ef7eb6456d3954d0c51d - Sigstore transparency entry: 2305552233
- Sigstore integration time:
-
Permalink:
ziwalker/exhibit-cli@a77f884996db7d4ab3659e2c67fa3fadd6a6b919 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/ziwalker
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a77f884996db7d4ab3659e2c67fa3fadd6a6b919 -
Trigger Event:
push
-
Statement type:
File details
Details for the file exhibit_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: exhibit_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 110.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c25c4bae66f9d24007456dd6da353fc1cc4214b11811cafb3309cbaf3ebf8f8
|
|
| MD5 |
4851026ea660910eafe48c3bfe79ce22
|
|
| BLAKE2b-256 |
a689befa9323da5e45cc02098a858d9d64ac15569dbb355a3cc8b37c8eeab98b
|
Provenance
The following attestation bundles were made for exhibit_cli-0.1.1-py3-none-any.whl:
Publisher:
release.yml on ziwalker/exhibit-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
exhibit_cli-0.1.1-py3-none-any.whl -
Subject digest:
0c25c4bae66f9d24007456dd6da353fc1cc4214b11811cafb3309cbaf3ebf8f8 - Sigstore transparency entry: 2305552323
- Sigstore integration time:
-
Permalink:
ziwalker/exhibit-cli@a77f884996db7d4ab3659e2c67fa3fadd6a6b919 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/ziwalker
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a77f884996db7d4ab3659e2c67fa3fadd6a6b919 -
Trigger Event:
push
-
Statement type: