Skip to main content

Native Rust implementation of the Dev Containers CLI

Project description

devcontainer-rs

PyPI npm Homebrew

This repository hosts a native Rust implementation of the Dev Containers CLI, with compatibility tracked against the pinned upstream TypeScript sources in upstream/ and the pinned specification assets in spec/.

The shipped runtime is the Rust binary in cmd/devcontainer. Node is kept only for lightweight compatibility tooling such as upstream/spec drift checks, generated compatibility inventories, and the parity smoke harness.

Install

Run the CLI without adding it permanently to your environment:

uvx --from devcontainer-rs devcontainer --version
npx @devcontainer-rs/cli --version

Install it with Homebrew:

brew install jooh/devcontainer-rs/devcontainer-rs
devcontainer --version

Homebrew resolves jooh/devcontainer-rs from the tap repository jooh/homebrew-tap.

Why

The main point of all this is to distribute a fat binary that implements dev containers without bringing in the whole node stack. In enterprise contexts this can be helpful.

Eventually we may also extend the upstream devcontainers/cli with additional functionality.

Repository layout

  • cmd/devcontainer/: native Rust CLI crate.
  • cmd/devcontainer/src/runtime/: native runtime subsystems for container-backed commands.
  • acceptance/: repo-owned manual acceptance scenarios and suite manifest.
  • upstream/: canonical upstream devcontainers/cli baseline.
  • spec/: canonical upstream devcontainers/spec schemas and docs.
  • build/: repo-owned compatibility guard scripts.
  • src/test/parity/: parity fixtures and golden files for repo-owned checks.
  • docs/: contributor and release documentation for the native CLI.

Compatibility contract: this repository targets the exact submodule revision pinned at HEAD:upstream.

Specification contract: schema-sensitive behavior targets the exact submodule revision pinned at HEAD:spec.

Submodules

Initialize submodules before running checks or editing compatibility-sensitive code:

git submodule update --init --recursive

If upstream/ or spec/ is missing or uninitialized, run the same command again and rerun the checks.

Local development

Rust validation:

cargo fmt --manifest-path cmd/devcontainer/Cargo.toml --all -- --check
cargo clippy --manifest-path cmd/devcontainer/Cargo.toml -- -D warnings
cargo test --manifest-path cmd/devcontainer/Cargo.toml

Compatibility/tooling validation:

npm test

Manual acceptance suite shape:

make acceptance-fixtures-check

The Node-based checks do not require installing project dependencies; they use built-in Node modules only. Node 20+ is still required to run them.

Generated command reference:

npm run generate-cli-reference

Generated parity inventory:

npm run generate-parity-inventory

Enable the repository-managed pre-commit hook:

npm run install-git-hooks

Upstream and spec workflow

When updating upstream compatibility baselines:

git submodule update --init --recursive
git -C upstream fetch origin
git -C upstream checkout <new-upstream-commit>
git add upstream
git rev-parse HEAD:upstream
npm run check-upstream-submodule
npm run check-upstream-compatibility
npm run check-command-matrix
npm run check-parity-inventory
npm run check-parity-harness

When changing schema-sensitive behavior, also verify:

git rev-parse HEAD:spec
npm run check-spec-drift

If a pinned submodule revision changes, update the matching generated baseline files in docs/upstream/.

Contributor notes

  • Architecture, command flow, and runtime module ownership: docs/architecture.md
  • Generated upstream command reference: docs/upstream/command-reference.md
  • Generated parity inventory: docs/upstream/parity-inventory.md
  • Native distribution and release notes: docs/standalone/distribution.md
  • Runtime and compatibility guardrails: docs/standalone/cutover.md

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

devcontainer_rs-0.0.48-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (963.4 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

devcontainer_rs-0.0.48-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (961.8 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

devcontainer_rs-0.0.48-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (1.0 MB view details)

Uploaded Python 3manylinux: glibc 2.5+ x86-64

devcontainer_rs-0.0.48-py3-none-macosx_11_0_arm64.whl (887.1 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

devcontainer_rs-0.0.48-py3-none-macosx_10_12_x86_64.whl (924.7 kB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file devcontainer_rs-0.0.48-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.48-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 29e07285d2249424569e50d2ea1307e3c1e915979ec9cc8a6a6fa6a246caaa32
MD5 8f4399ae662b862eb99a5af0f21dcf4b
BLAKE2b-256 2f1c0b0545ed79fa3dcdbbb146041e543883737f9f7837ac8963e8617a93143d

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.48-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: devcontainer-release.yml on jooh/devcontainer-rs

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

File details

Details for the file devcontainer_rs-0.0.48-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.48-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8abe94732a0946c9fc6eae41611aa37bb7b4ed58d2631381a6f4e99bf345e6e5
MD5 221acfc5e9fcc2e0edd34d62993700a8
BLAKE2b-256 c5fbbfc5776adb30163753b3f655c92cd675e79098cc1ba69cd4e462547eff2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.48-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: devcontainer-release.yml on jooh/devcontainer-rs

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

File details

Details for the file devcontainer_rs-0.0.48-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.48-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f1ece629c412279d92a5a9c338a19c2eae57f35b330e9213f4e64c30ea46622f
MD5 0442af13f3352a1718e2b2578ecc641a
BLAKE2b-256 41ef839facd7f34d9e5fe34a70282c12b07c0f5e05c4ccfd6818f6ab43d1a1b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.48-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl:

Publisher: devcontainer-release.yml on jooh/devcontainer-rs

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

File details

Details for the file devcontainer_rs-0.0.48-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.48-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8dbc8406c69a5810a72ee0db2d20619d5f7e49a5998332df43db5333664da31f
MD5 f0a7c83550a4aceaa7a2306083ab94e3
BLAKE2b-256 bcdc627d4b8b6f3df55be1adaec27eb29670b759003e5d2fe190d4d6975beb19

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.48-py3-none-macosx_11_0_arm64.whl:

Publisher: devcontainer-release.yml on jooh/devcontainer-rs

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

File details

Details for the file devcontainer_rs-0.0.48-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.48-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ce2841b361ddcbb4f6a7b1edaffcb07e41e073c1cf79bda91c72781b4da8856a
MD5 e6e3b6dc5dfc9d535cac9f59ec407549
BLAKE2b-256 42c8c8cbd971fb020d450101cab7725d1e64a147c6efd389c5b31ca0a288e706

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.48-py3-none-macosx_10_12_x86_64.whl:

Publisher: devcontainer-release.yml on jooh/devcontainer-rs

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page