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.58-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.58-py3-none-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

devcontainer_rs-0.0.58-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.58-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.58-py3-none-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

devcontainer_rs-0.0.58-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.58-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.58-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 40aac507ee9edc2c99c507b2b162bc597e0a037ee3f2d3713887a81a653a9934
MD5 666185161c264a8ac508f91e9d6f8774
BLAKE2b-256 df78609a5c890c4abda682dd910a4cf385b875f46677c9e8327024f22a9970ed

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.58-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9d63c4a6c6c1836b911eb133410cb9d4d44a1d135ae2751a48470c7f58d59da0
MD5 787a2e4be804e6682b1a04c7d739679a
BLAKE2b-256 c79b5c6c5d974b2caac39cdbc357f6c01e2913e3ab62d41723d891991acf65bb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.58-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bd491d3a5d7021d2af196e3e6e439507df2e136a4bbccedcd7ce59bed50c68f1
MD5 058a31580d663905a4bd68e9fd67dbde
BLAKE2b-256 9eebc55a02ef12bab6523643eb721d7487732ab7a6b216fafa266ccec2881540

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.58-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f3d4ee8b0ef4c8ce1b110cbd5f63afefab3d2cc87b082e9495aa1b0a0136ec39
MD5 85386c303c2df78ec39f2328a26a42ca
BLAKE2b-256 9301203165fee4fd09e914bec3ed275e67f4693020c774d9c04958bb000f4add

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.58-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 09d693f4f21c07e4439944cd91b8f3fa17adb216932c3a9a9109a502892d4c2c
MD5 6f90b6c7bf2080d09a889b0fb44a6cb9
BLAKE2b-256 3d4abb6e67390997d254e800d43e2d381c1679229b3a4975719bf6f3e1aaa39d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.58-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 19f83b184a1ad5b05024d28e5099b03f20b8d8430ce97eaa9a4ff4984c8a848a
MD5 bd6248d18f80559e75698d709207f81d
BLAKE2b-256 c9dfded29a06f94ad70230e34ca852efb9731f4f8095a4dcd0d95346e4b1ce93

See more details on using hashes here.

Provenance

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