Metadata-Version: 2.5
Name: datacharter
Version: 0.44.0
Summary: Charter your data — contract-governed local data exploration, powered by DuckDB
Project-URL: Homepage, https://github.com/datacharter/datacharter
Project-URL: Repository, https://github.com/datacharter/datacharter
Project-URL: Documentation, https://datacharter.github.io/datacharter/
Project-URL: Changelog, https://github.com/datacharter/datacharter/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/datacharter/datacharter/issues
Author: DataCharter, Rishi Mashelkar
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: data-contracts,data-exploration,duckdb,federation,local-first,sql
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Database
Classifier: Topic :: Database :: Front-Ends
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Requires-Python: >=3.11
Requires-Dist: cryptography>=42.0
Requires-Dist: duckdb>=1.5
Requires-Dist: fastapi>=0.115
Requires-Dist: httpx>=0.27
Requires-Dist: keyring>=25.0
Requires-Dist: pydantic>=2.7
Requires-Dist: pyjwt[crypto]>=2.8
Requires-Dist: python-dotenv>=1.0
Requires-Dist: python-multipart>=0.0.9
Requires-Dist: pytz>=2024.1
Requires-Dist: pyyaml>=6.0
Requires-Dist: ruamel-yaml>=0.18
Requires-Dist: uvicorn>=0.30
Provides-Extra: desktop
Requires-Dist: pywebview>=5.0; extra == 'desktop'
Provides-Extra: dev
Requires-Dist: mcp>=1.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Provides-Extra: snowflake
Requires-Dist: snowflake-connector-python>=3.12; extra == 'snowflake'
Description-Content-Type: text/markdown

# DataCharter

> Query all your data locally. Hand agents exactly the columns you choose.

A local SQL workspace over files and databases, federated by DuckDB and
governed by `charter.yaml`. Agents get read-only, PII-masked access to what
the contract grants. Apache-2.0. No paid edition.

<!-- mcp-name: io.github.datacharter/datacharter -->

[![PyPI](https://img.shields.io/pypi/v/datacharter)](https://pypi.org/project/datacharter/)
[![Python](https://img.shields.io/pypi/pyversions/datacharter)](https://pypi.org/project/datacharter/)
[![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue)](LICENSE)

**[datacharter.dev](https://datacharter.dev)** ·
[Docs](https://datacharter.dev/quickstart.html) ·
[Desktop](https://datacharter.dev/desktop.html) ·
[GovBench](https://datacharter.dev/govbench.html) ·
[Deploy](https://datacharter.dev/deploy.html)

Two ways in. Same kernel.

## Laptop

Drop a file. Query it. Chart it. An agent sees `•••` where PII lives.

```sh
uvx datacharter serve          # demo workspace, http://127.0.0.1:8321
# or: datacharter init --from && datacharter serve
# or: datacharter init --template life && datacharter serve --local
```

No terminal: [desktop app (beta)](https://github.com/datacharter/datacharter/releases/latest).
macOS (Apple Silicon) or Windows. Unsigned until Apple secrets exist.

```sh
brew install datacharter/tap/datacharter   # macOS
pip install datacharter                    # Python 3.11+
```

The workspace is a directory: `charter.yaml`, `queries/`, `guides/`. Commit it.
Secrets stay out. Optional agent: SpaceXAI, Claude Code, Ollama (`--local`),
or any OpenAI-compatible endpoint.

## Company

The same binary, on a shared MCP endpoint. Identities live in git, not on
our servers. No rows leave your infrastructure.

```sh
datacharter mcp --http --host 0.0.0.0   # OAuth env required off loopback
helm install datacharter ./chart \
  --set oauth.issuer=... --set oauth.audience=... --set oauth.jwksUri=...
datacharter govbench --json             # cite corpus govbench-v1
```

- MCP Streamable HTTP (`POST /mcp`) with optional [OAuth 2.1](https://datacharter.dev/mcp.html)
- `principals:` and `grants:` in `charter.yaml` (default-deny on HTTP)
- [Helm chart](https://datacharter.dev/deploy.html) and OCI image
- Hash-chained [audit](https://datacharter.dev/audit.html) plus SIEM JSON/OTLP
- [GovBench](https://datacharter.dev/govbench.html): frozen 28-attack corpus, grade A-F

Wrap someone else's MCP server: `datacharter mcp --guard "npx -y some-mcp-server"`.

## What the contract enforces

PII default-deny, row filters, plain-English policies (`aggregates only`),
canaries, a flight recorder, `datacharter redteam`, `access diff` on PRs.
CLI reference: [docs/cli.md](docs/cli.md). Security: [docs/security.md](docs/security.md).

**Status:** pre-release. V1 in development.

## Privacy

Runs on your machine or in your cluster. No telemetry. No DataCharter-operated
data plane. [Privacy Policy](https://datacharter.dev/privacy).

## License

[Apache-2.0](LICENSE)
