Skip to main content

TableTalk

Mount a dbt project. Review proposed agents and evaluations. Prove that your data agents are safe, grounded, and correct.

Tests Python PyPI License

TableTalk is the dbt-native development, evaluation, and observability layer for trusted data agents. It uses the analytical knowledge that a company already maintains in dbt. It creates reproducible agents and defensible evaluation evidence. It does not require a second large semantic configuration system.

TableTalk is not a general agent framework. It is not a BI dashboard. It does not replace dbt.

What TableTalk proves

  • manifest.json defines the queryable resources.
  • Agent files contain dbt selectors and small TableTalk policies.
  • Every agent and eval starts as a review-only proposal.
  • Approval binds the exact proposal, manifest, base files, and resource bytes.
  • Trusted semantic statements record source evidence.
  • Inferred statements remain untrusted until a user confirms them.
  • SQL validation runs before every read-only warehouse query.
  • Live questions and evals use the same runtime.
  • Approved reference queries provide changing-data ground truth.
  • Inference artifacts support strict replay with no model request.
  • Reports include hard checks, trial metrics, uncertainty, paired comparisons, and failure ownership.

Install

pip install tabletalk
pip install "tabletalk[duckdb]"
pip install "tabletalk[snowflake]"

TableTalk requires Python 3.10 or newer. SQLite uses the Python standard library. The initial warehouse adapters are SQLite, DuckDB, and Snowflake.

Start from an existing dbt project

cd my-dbt-project
dbt parse
dbt docs generate
tabletalk init
tabletalk propose
tabletalk approve
tabletalk eval run
tabletalk ask revenue "What was recognized revenue last month?"

tabletalk propose analyzes dbt groups, tags, packages, paths, owners, access, metrics, semantic models, tests, constraints, descriptions, and lineage. It creates at most three coherent proposals. It prefers curated marts. It shows semantic gaps and exact file diffs. It does not write project resources.

The approval command requires the exact proposal digest for automated use:

tabletalk approve prp_EXAMPLE \
  --yes \
  --digest sha256:EXAMPLE \
  --actor "$USER"

Approval fails if the manifest or a reviewed base file changed. TableTalk runs approved evals immediately.

Acquire missing meaning

Provide a targeted answer:

tabletalk propose \
  --answer "time_basis:model.analytics.orders.booked_revenue=booked_date"

Preview an organizational query as evidence:

tabletalk propose --sql-import finance/revenue.sql

Request optional model hypotheses:

tabletalk propose --infer

TableTalk marks every model hypothesis as inferred. An inferred statement cannot support an answer. A user must confirm its meaning through a new proposal.

Evaluate and replay

tabletalk eval run revenue --trials 3 --workers 2
tabletalk eval run revenue --trials 3 --cache-policy replay
tabletalk eval run revenue --baseline revenue-v1

Each run writes a concise terminal result and three detailed artifacts:

  • versioned JSON for tools
  • JUnit XML for CI
  • Markdown for a pull request.

The report identifies the model, agent, manifest, semantic knowledge, prompt, runtime, warehouse, and inference fingerprint. It reports pass rate, a Wilson confidence interval, latency, tokens, configured cost, flaky outcomes, and deterministic failure diagnoses.

Security and retention

  • Use a warehouse identity with physical read-only permissions.
  • Treat connector permissions as the final security boundary.
  • TableTalk rejects writes, unsafe reads, unknown resources, unknown columns, unsafe joins, excessive limits, and unapproved sensitive data.
  • TableTalk never treats lineage as proof that a join is correct.
  • TableTalk does not store credentials in traces, reports, or fingerprints.
  • Inference artifacts hash prompts by default. Set persist_prompts: true only when exact raw-prompt retention is acceptable.
  • Traces and reports retain bounded evidence rows. Exact evidence is required for deterministic replay and claim validation.
  • TableTalk does not delete artifacts automatically. The operator must apply a retention policy to .tabletalk/.

See the commerce example, the getting-started guide, and the research evidence.

Development

uv sync --locked --all-groups
uv run pytest -q
uv run ruff check tabletalk
uv run mypy tabletalk
uv build

The live Ollama smoke test is opt-in. It uses only gemma4:31b-cloud:

TABLETALK_LIVE_OLLAMA=1 uv run pytest -m live_ollama

License and services

TableTalk is source-available under the PolyForm Noncommercial License 1.0.0. The license permits the uses that its text defines. Commercial use requires separate written permission.

William Bates offers implementation, integration, semantic onboarding, and custom eval-suite development. See the commercial notice. Earlier releases keep their earlier license grants. See LICENSE_HISTORY.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tabletalk-0.6.0.tar.gz (345.0 kB view details)

Uploaded Source

Built Distribution

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

tabletalk-0.6.0-py3-none-any.whl (103.8 kB view details)

Uploaded Python 3

File details

Details for the file tabletalk-0.6.0.tar.gz.

File metadata

  • Download URL: tabletalk-0.6.0.tar.gz
  • Upload date:
  • Size: 345.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tabletalk-0.6.0.tar.gz
Algorithm Hash digest
SHA256 0eb07221860678d42f2f6c519ae8173832f4c7ec82d98193bc32fbc13d031571
MD5 e08b823240b841a7e2908e9adc955eb9
BLAKE2b-256 c8a7955c96ee58711c29dddb806125786f89a4c51ab93f39b691b725c9ba5698

See more details on using hashes here.

Provenance

The following attestation bundles were made for tabletalk-0.6.0.tar.gz:

Publisher: publish.yml on wtbates99/tabletalk

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

File details

Details for the file tabletalk-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: tabletalk-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 103.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tabletalk-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a1783996f06f3aa143ef94c7d0d1a28cd07596d7ac83309a018a441a499e7bff
MD5 f8bbea8f0c28ab512801e6780d8b2697
BLAKE2b-256 f0edc8a366ff7511b54d43cf5faf79a27f6ad3e273f9035688bd07a258e90035

See more details on using hashes here.

Provenance

The following attestation bundles were made for tabletalk-0.6.0-py3-none-any.whl:

Publisher: publish.yml on wtbates99/tabletalk

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

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 files

0.5.0

2 files

0.4.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.99

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 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