Inspect Parquet, JSONL, SQLite, and DuckDB files directly in VS Code. Dabble opens data files in a readonly viewer powered by native DuckDB running in the workspace extension host — no separate server product, no hidden query rewrites, no extra services to manage.
| Format | How to open |
|---|---|
.parquet |
Open the file — Dabble is the default editor association |
.jsonl / .ndjson |
Open in text editor by default, then use Open With Dabble when needed |
.sqlite / .db |
Open the file — Dabble is the default editor association |
.duckdb |
Open the file — Dabble is the default editor association |
| Parquet dataset (folder) | Right-click a folder → Dabble: Open as Parquet Dataset |
| S3 Parquet | Command palette → Dabble: Open Source → enter an s3:// URI |
Preview shows schema, summary statistics, and sample rows for the selected table. Column exploration uses a stable list/details layout: the column list stays fixed while a dedicated stats pane updates for the expanded column. Numeric columns use top values for low-cardinality data and binned distributions for higher-cardinality data.
Query lets you write and run readonly SQL against the opened source. Results stream back in pages — large result sets won't lock up the editor.
Multi-table sources (SQLite, DuckDB databases) show a table list in the sidebar. Click a table to switch context.
| Setting | Default | Description |
|---|---|---|
dabble.previewLimit |
100 |
Row limit for preview queries (1–5000) |
- VS Code desktop 1.90 or later
- A workspace host that can run Dabble's native DuckDB dependency
Dabble is a workspace extension. On a local folder, DuckDB runs on your local machine. In remote workspaces such as Remote-SSH, WSL, or Dev Containers, DuckDB runs on the workspace host while the custom editor UI stays in the VS Code desktop client.
When Dabble is installed in a remote workspace, the same default editor associations apply there too. If you do not see Dabble commands in the remote Explorer context menu, the extension is not installed or running on that workspace host yet.
SQLite and S3 support use DuckDB's sqlite and httpfs extensions, which are downloaded automatically on first use to /tmp/dabble-duckdb-extensions.
For S3 sources, Dabble uses DuckDB's automatic AWS credential chain by default. Leave the profile field blank to use credentials from the workspace host, such as environment variables, ~/.aws config, or an ECS/EC2 role. Enter a profile name only when you want to force a specific AWS profile from that host.
See AGENTS.md for architecture, conventions, and contribution guidance.
npm install
make check # build + test
Press F5 in VS Code to launch the Extension Development Host.
To debug Dabble against a remote workspace, open this repository in that remote VS Code window first, install dependencies on the workspace host, and then press F5 there so the extension runs in the remote workspace extension host.
Starting the development extension from a local window and then connecting that window to Remote-SSH is not enough. VS Code's remote development model runs workspace extensions on the SSH host, so an unpublished development build must either be launched from the already-remote window or packaged as a .vsix and installed into that remote workspace.
Dabble uses a native DuckDB dependency, so distribution should use platform-specific VSIX packages rather than a single catch-all artifact.
Supported VSIX targets:
darwin-arm64darwin-x64linux-arm64linux-x64win32-arm64win32-x64
Package the current platform:
make packagePackage a specific target:
make package TARGET=linux-x64Package all supported targets:
make package-allGenerated VSIX files are written to artifacts/.
Publish the current platform artifact:
make publishPublish a specific target artifact:
make publish TARGET=linux-x64Publish all packaged targets:
make publish-allPublishing uses the local ./node_modules/.bin/vsce binary and the already-generated VSIX files in artifacts/, so it preserves the target-specific DuckDB packaging logic instead of rebuilding a generic extension package.
Before publishing:
- Create or confirm your Marketplace publisher, and make sure
package.json'spublishermatches that publisher ID. - Create an Azure DevOps PAT with organization access set to
All accessible organizationsand scopeMarketplace (Manage). - Authenticate either by exporting
VSCE_PATor by running./node_modules/.bin/vsce login <publisher>.
Example:
export VSCE_PAT=your_token_here
make publish-allThe repository includes a CI workflow that runs checks and exercises npm run package:all on pushes, pull requests, and manual dispatches so packaging regressions are caught early. Marketplace publishing and manual browser uploads remain a separate release step.