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

Run the complete local gate before pushing:

make tests

Rust validation:

cargo fmt --manifest-path cmd/devcontainer/Cargo.toml --all -- --check
cargo clippy --manifest-path cmd/devcontainer/Cargo.toml --all-targets --all-features -- -D warnings
cargo check --manifest-path cmd/devcontainer/Cargo.toml --all-targets --all-features
cargo doc --manifest-path cmd/devcontainer/Cargo.toml --no-deps --document-private-items
cargo test --manifest-path cmd/devcontainer/Cargo.toml --locked
cargo deny --manifest-path cmd/devcontainer/Cargo.toml check -A license-not-encountered

CI also enforces the current Rust line coverage baseline:

cargo llvm-cov --manifest-path cmd/devcontainer/Cargo.toml --all-features --workspace --fail-under-lines 95

Compatibility/tooling validation:

npm test
make actionlint-check
make shellcheck

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.57-py3-none-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

devcontainer_rs-0.0.57-py3-none-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

devcontainer_rs-0.0.57-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

devcontainer_rs-0.0.57-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

devcontainer_rs-0.0.57-py3-none-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

devcontainer_rs-0.0.57-py3-none-macosx_10_12_x86_64.whl (1.1 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file devcontainer_rs-0.0.57-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.57-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 112f7a3a3eaf59f8b4104146e2f9a5c170732ccf5822dc20821a8c6f9b15008c
MD5 0f0a3153f1b68858849cccfc91e0b387
BLAKE2b-256 6400b3dc4e853ffc05130ea337c22ee0826aae6f8a4c1ebde11e6570246f5bd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.57-py3-none-musllinux_1_2_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.57-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.57-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 61690ebfe81dcaf1be26b3c66833aa3dc55125e28a2a9fa29e7164048d34557b
MD5 bf83a4eef9cff53352f967d657d079c2
BLAKE2b-256 ad24e667987b77630943de90d605e34373f1771057388e3226e89b78908069f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.57-py3-none-musllinux_1_2_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.57-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.57-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 650ac483efc675c2dcf4d8bf0a95a2a9bc34bb2d9a3e7a5a85cd2982b7b17622
MD5 1a0ca666e419327ae7665a9c25437cf1
BLAKE2b-256 b079780ac6e03d18118a89408aa46be473db9477aac8d876bd918e7aacf33f81

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.57-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.57-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.57-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dc65f406e0e7af8a17c2986636707757b0254d1f93a9785ecc0e1560c7f5acf4
MD5 47df8b12e328326b5b7dde9382ff3766
BLAKE2b-256 f86e19d15ed157164fe04d87c54edf496d046ec9c5525c4b42e52d00843c45c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.57-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.57-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.57-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 13c1bbe4cbae516e1a41628460779d87350d84219570e3570f60b032f56ecd88
MD5 8a89129c8442bc2753ab2d974720abea
BLAKE2b-256 2a91f452de6c23b5c2f2c82c7a35fda9db63dc719af2454d3d2216385466bc71

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.57-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.57-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.57-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9f05ddc10b1cd9beebf66769cd182c34d612bd3014b767e25218e09d736f58a6
MD5 e2d35a4279e3bc6b36c97d0f09f02716
BLAKE2b-256 391f0d0c13fc3da79a3cf5e8ca6c4a7a0001577c832dcbc5fb822bc5c4df4fc4

See more details on using hashes here.

Provenance

The following attestation bundles were made for devcontainer_rs-0.0.57-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