dlthub-init (beta)
Scaffold a dltHub workspace into a new or existing directory.
dlthub-init lays down the files of a minimal dltHub workspace — pyproject.toml,
a locked uv.lock, the .dlt/ configuration, and a .mcp.json registering the
dlt workspace MCP server — and optionally creates the virtual environment. That is all it does: it does not log in, run a pipeline, or
install agent toolkits.
Unlike dlthub-start, it is safe to run inside an existing repository. It is
non-destructive by default: it never overwrites your files, and it stops before
writing anything if a generated path would collide with something already there.
Usage
uvx dlthub-init # initialize the current directory
uvx dlthub-init my-workspace # initialize ./my-workspace
After scaffolding, dlthub-init offers to create a virtual environment and
install dependencies with uv.
Options
| Flag | Effect |
|---|---|
--no-sync |
Scaffold files only; do not create a venv or install dependencies. |
--force |
Overwrite existing generated files (never secrets). |
--merge |
Append missing entries to an existing .gitignore instead of skipping it. |
--no-pyproject |
Skip pyproject.toml. |
--no-gitignore |
Skip .gitignore. |
--no-telemetry |
Disable usage telemetry for this run. |
--verbose, -v |
Stream output from uv. |
Collision behavior
dlthub-init is safe to run in an existing directory:
- Missing files are created.
- The run stops only if
.dlt/.workspacealready exists — the directory is already a dltHub workspace (override with--force). - Otherwise existing files are left alone and reported as skipped: your
pyproject.toml,.dlt/config.toml,.dlt/secrets.toml, and.mcp.jsonare never overwritten, and.gitignoreis skipped (or merged with--merge). uv.lockis written only whenpyproject.tomlis created, so the lockfile always matches the workspace's dependencies.--forceoverwrites the generated files (never secrets).
Telemetry
dlthub-init sends anonymous usage events so we can improve the scaffolding
experience.
No personal data is collected, and no workspace contents are ever sent.
Telemetry is controlled by the following, in order of precedence:
- the
--no-telemetryflag, DLTHUB_INIT_TELEMETRY=0(orfalse/off),DO_NOT_TRACK=1,- an existing dlt opt-out (
~/.dlt/config.toml[runtime] dlthub_telemetry = false, orRUNTIME__DLTHUB_TELEMETRY=false).
Development
make dev # install dev dependencies
make lint # ruff + mypy
make test # unit tests
make ci # full local CI
The bundled workspace lives in src/dlthub_init/scaffolds/minimal_workspace.
After editing its pyproject.toml, run make scaffold-lock-upgrade to refresh
the committed uv.lock.
Metadata
Release files for dlthub-init 0.2.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dlthub_init-0.2.11.tar.gz | 404.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dlthub_init-0.2.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 742.9 kB
Release files / dlthub_init-0.2.11.tar.gz
| Download URL | dlthub_init-0.2.11.tar.gz |
|---|---|
| Size | 404.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
71b404096a99746aceeae551f848a2bbf5a6a005d5b60c099f4d9cbe93e0bd97
|
|
BLAKE2b-256 checksum How to use checksums |
746b6f1d43d208152b99c0a5aaede1c7623cbc2f57b3d26b973584cb248e6772
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.14 {"installer":{"name":"uv","version":"0.9.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / dlthub_init-0.2.11-py3-none-any.whl
| Download URL | dlthub_init-0.2.11-py3-none-any.whl |
|---|---|
| Size | 338.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a07aa085b0535a9d7fbe0a0fb9b009cd1c427a57ebc3494abe0a21e881b5f046
|
|
BLAKE2b-256 checksum How to use checksums |
4f9f682a4bbc5e441b49bc97661663c8227c654500fbe55cc1d011a9d5507879
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.14 {"installer":{"name":"uv","version":"0.9.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|