Skip to main content

Charter your data — contract-governed local data exploration, powered by DuckDB

Project description

DataCharter

Explore all your data locally, in one place — contract-governed data exploration, powered by DuckDB

PyPI Python License: Apache-2.0

Contract-governed local data exploration, powered by DuckDB. Define your sources as data contracts (ODCS-compatible YAML), query them through DuckDB's SQL federation engine with real source pushdowns, and explore in a local web UI — SQL editor with live preview, auto-charts, profiling. Every answer shows which source columns it read; ask questions in plain language or serve the whole thing to an AI agent over MCP, with PII masked from the model — all on your machine.

DataCharter — live SQL preview, auto-charts, per-query provenance, and PII masking

Status: pre-release. V1 in development.

Quick start

# Try it instantly on generated demo data — no config, nothing to install globally:
uvx datacharter serve
# → opens a local workspace on http://127.0.0.1:8321

# Or install it:
pip install datacharter

# Start a real workspace:
datacharter init            # scaffolds charter.yaml, queries/, .env.example
datacharter serve           # explore in your browser

# Natural-language agent — bring your own endpoint…
export OPENAI_BASE_URL=...  # any OpenAI-compatible API
export OPENAI_API_KEY=...
datacharter serve
# …or run fully local (no API key, no data leaves your machine):
datacharter serve --local   # uses Ollama (qwen3:8b by default)

Drop a CSV, Parquet, or JSON file onto the window to query it instantly.

Why

  • Your contracts are the catalog. charter.yaml describes sources, tables, and PII fields — the same contract spec your data team already writes.
  • One engine, every source. Postgres, MySQL, SQLite, BigQuery, SQL Server, S3/GCS/Azure files, Iceberg, Delta — federated joins across all of them, with filters and projections pushed down where the data lives — even across a cross-source join, each leg is filtered at its source. Snowflake is supported via connector extract (datacharter[snowflake]) with filters/projections pushed into the extract. Every source's tables are exposed under one flat source__table naming scheme.
  • Local-first. One process, your machine, no cloud dependency. Optional --local agent mode runs a small open model via Ollama — no API key, no data leaves your machine.
  • The workspace is a directory. charter.yaml + queries/*.sql + .env.example — commit it, clone it, datacharter serve. Your team's whole exploration environment travels as a repo; secrets and local state never do.

More than a viewer

DataCharter governs and audits your data, not just displays it — see the CLI reference for the full command set:

  • Governed MCP serverdatacharter mcp exposes read-only, PII-masked query tools to any MCP client (Cursor, Cline, or your own agent).
  • Contracts you can checkdatacharter drift exits non-zero when a declared table or PII column disappears; datacharter scan detects PII columns to add.
  • Answers that show their work — every result reports the source columns it read; datacharter diff compares relations across sources; datacharter metric runs governed metric definitions.
  • Privacy-firstserve --offline runs with no outbound network, and the model never sees raw PII (flip Agent view in the UI to see exactly what it does).

Built on

DataCharter stands on excellent open-source foundations:

Testing uses VidaiMock, an Apache-2.0 mock LLM server, as the offline agent endpoint in CI.

DuckDB is a trademark of the DuckDB Foundation. DataCharter is an independent project and is not affiliated with or endorsed by the DuckDB Foundation.

License

Apache-2.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

datacharter-0.3.0.tar.gz (7.2 MB view details)

Uploaded Source

Built Distribution

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

datacharter-0.3.0-py3-none-any.whl (4.0 MB view details)

Uploaded Python 3

File details

Details for the file datacharter-0.3.0.tar.gz.

File metadata

  • Download URL: datacharter-0.3.0.tar.gz
  • Upload date:
  • Size: 7.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for datacharter-0.3.0.tar.gz
Algorithm Hash digest
SHA256 47c374a3aa96e5aca77359202a48e82a16bfd42844f5fa1d5ee60ff7df245594
MD5 b45f846157d932689e559c5e0bd45258
BLAKE2b-256 362b1a22e8947af76199739807091a03b1f561bd50703cfe572f90ebefca7fef

See more details on using hashes here.

Provenance

The following attestation bundles were made for datacharter-0.3.0.tar.gz:

Publisher: release.yml on datacharter/datacharter

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

File details

Details for the file datacharter-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: datacharter-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 4.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for datacharter-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 13dddd15eb350cea61ec99d5153a15d75f52c3ca8b1b84fe2cc1cda74e95930f
MD5 5ab8dce62efa8ab2ac6d463d3331b323
BLAKE2b-256 35fb6ab762e1c9fc0df829be1429d203cda9eb6d89aff398b12292367de85c7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for datacharter-0.3.0-py3-none-any.whl:

Publisher: release.yml on datacharter/datacharter

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