Skip to main content

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/.workspace already 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.json are never overwritten, and .gitignore is skipped (or merged with --merge).
  • uv.lock is written only when pyproject.toml is created, so the lockfile always matches the workspace's dependencies.
  • --force overwrites 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:

  1. the --no-telemetry flag,
  2. DLTHUB_INIT_TELEMETRY=0 (or false/off),
  3. DO_NOT_TRACK=1,
  4. an existing dlt opt-out (~/.dlt/config.toml [runtime] dlthub_telemetry = false, or RUNTIME__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.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dlthub-init 0.2.10
File Size Uploaded
dlthub_init-0.2.10.tar.gz 381.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dlthub-init 0.2.10
File Interpreter ABI Platform
dlthub_init-0.2.10-py3-none-any.whl Python 3 none any Details

Total release size: 698.4 kB

Release files / dlthub_init-0.2.10.tar.gz

Download URL dlthub_init-0.2.10.tar.gz
Size 381.6 kB
Tags Source
SHA-256 checksum
How to use checksums
8a783bca6f5de5f7bdbd74f099410deace336694cbb20945954124549d87bfcf
BLAKE2b-256 checksum
How to use checksums
9e65502198b14d7aa7d55c8923ed2d7ef563bbe8e7371479feef9dc277e6ecb6
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.10-py3-none-any.whl

Download URL dlthub_init-0.2.10-py3-none-any.whl
Size 316.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
63ff41d22b4a1a8ece22661761cc46b46de8083e739b180b5971778bdfb89f4c
BLAKE2b-256 checksum
How to use checksums
57583b87fd4e4fb3bd71cccdeac2f67c21df78e58e1f5c9cf63dbf285fb4d5f0
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 history Release notifications | RSS feed

This release

0.2.10 This release

2 release files

0.2.9

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release 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