demo_v1_fast_h264.mp4
Local-first tool for profiling, exploring, and querying local data files (CSV, TSV,
Parquet, JSON, JSON Lines, NDJSON, and DuckDB) with fast browse-and-import for .duckdb
files via Import DuckDB (one system file dialog when native pick is enabled; HTTP upload remains for API/tests/fallback). Built for a single trusted workstation—fast EDA and ad-hoc DuckDB
SQL, not hosted BI or multi-tenant use.
This app is local-only; see SECURITY.md for the threat model and
vulnerability reporting.
Quick start (no LLM required)
- From the repo root:
make installthenmake dev(requires GNU bash; see Platform notes). - Open
http://127.0.0.1:5173. - New here? Follow the 5-minute tour with
examples/fixtures before using your own data.
Explore Columns, Charts, SQL, and more. Ask is optional and needs Ollama; see User guide — Ask.
Platform notes
- macOS — primary platform; Node 22 (
.nvmrc), Python 3.11+,uv, optional Ollama. - Linux — same
maketargets; install Node 22 anduvfrom your distro or upstream. - Windows — use WSL2 (e.g. Ubuntu). Native Windows without WSL is untested.
Prerequisites: Node 22 from .nvmrc (matches CI). Python 3.11+ and uv.
Run make help from the repo root for all targets.
Single-server mode
Opens http://127.0.0.1:8000 (API serves the built UI via DCC_UI_DIST_PATH).
Day-to-day development uses make dev (Vite on 5173 + API on 8000).
Upgrading / workspace schema
Workspace metadata lives in DCC_WORKSPACE_DB_PATH (default .dcc_workspace.duckdb
relative to the backend cwd). There is no in-place migration. After pulling changes
that alter workspace layout or profile shape, run make clean-local or delete the
workspace file by hand—that removes app cache, Ask history, and upload copies under
.dcc_uploads/, not your original source files. See CHANGELOG
for breaking changes. Schema details:
backend/README.md.
Upgrading to 1.1.0
If you used 1.0.0, read CHANGELOG — 1.1.0 before upgrading. In short:
- Update custom API clients: DuckDB inspect/import APIs use
source_id(replacesupload_id). /api/saved-chartswas removed; saved chart rows are dropped from local workspaces on next startup.- Saved SQL snippets gain an optional
descriptioncolumn; existing workspaces migrate in place on startup. - Large datasets may rebuild profiles with sample-scoped metrics; the UI polls prepare jobs until ready.
Upgrading to 1.0.0
If you used 0.1.0, read CHANGELOG — 1.0.0 before upgrading. In short:
make clean-local(or delete.dcc_workspace.duckdb) so the workspace and profile cache match the new schema.- Re-open datasets; profiling is async on first load (
PROFILE_NOT_READY+ job polling). - Custom Ask clients must call
POST /api/agent/ask/streamonly (sync ask removed).
1.0.0 also changes default UX: Ask runs a second Ollama summarization pass by default
(set DCC_AGENT_SUMMARIZE_WITH_LLM=false for lower latency). Columns opens sorted by
column name ascending; distribution stats show STDEV for standard deviation.
API reference
With the backend running: http://127.0.0.1:8000/docs (Swagger UI).
Architecture
- Frontend (
frontend/): React, Vite, TypeScript, TanStack Query/Table, Zustand, ECharts, Tailwind, shadcn-style primitives - Backend (
backend/): FastAPI, DuckDB, Polars, Pydantic,uv
Documentation map
| Document | Audience | Purpose |
|---|---|---|
docs/README.md |
Users | Index: tour vs user guide |
docs/5-minute-tour.md |
Users | First-run walkthrough with examples/ |
docs/user-guide.md |
Users | Day-to-day usage, shortcuts, tabs |
examples/README.md |
Users | Synthetic fixture descriptions |
CONTRIBUTING.md |
Contributors | Setup, validation, pull requests |
backend/README.md |
Backend devs | API, DCC_* config, workspace |
frontend/README.md |
Frontend devs | Vite proxy, layout, TanStack conventions |
AGENTS.md |
AI agents | Agent rules; links to CONTRIBUTING for commands |
SECURITY.md |
Security | Threat model and vulnerability reporting |
CHANGELOG.md |
Upgraders | Breaking changes and release notes |
docs/RELEASE.md |
Maintainers | Tagging and GitHub Release steps |
CODE_OF_CONDUCT.md |
Community | Contributor Covenant |
Known limitations (MVP)
- Excel and remote files are not supported yet.
- No cross-dataset join UI; explore overlaps with ad-hoc SQL.
- Very wide files may be slow on first profile; use Refresh in the dataset strip or
POST /api/datasets/{id}/profile/refresh.























