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

Uploaded Python 3musllinux: musl 1.2+ ARM64

devcontainer_rs-0.0.55-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

devcontainer_rs-0.0.55-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

devcontainer_rs-0.0.55-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.55-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for devcontainer_rs-0.0.55-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0782da3dbfb7a9ed8c72cc2a890641d652ea5f84323820c0a6e5da974f16b0af
MD5 fad390ea9f7bfe2e2e49f2a9b818dd53
BLAKE2b-256 0d7e7094ff2ea7b64db77ec8d705a26dfd68d8091038436cade88d63079a001b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.55-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5f2579be88ed9ccdfd190d1cd4f18c42cd75f1bc508fb4b08b8112761aafe7e6
MD5 dee087d1b31ced9fb0d007b2a92c6137
BLAKE2b-256 bcd8ac8f00a4f6d15a5048d90f6962417ddc5b644dbf97ac167e4f5ef0a79674

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.55-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 544a90a6677c23beb8c2a0608cba056141fd4ee0497e992438576daa41f7b125
MD5 e86a04586ff9c358533823374807548f
BLAKE2b-256 99f4edbe40b5d1ad92634374c47f383953ea70d383454d48d9b8f261d091d908

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.55-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 62f91193d4061f615ff4e614a855c14f3a1da47f94ccd38bcfa1280d66f5b44a
MD5 ed08295ff5a6bf455f67f3856bc9998c
BLAKE2b-256 a5a5a7db60cf6f96a6c78dbc0e267d6e7f26e5067053873e6bf750fe27aac77e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.55-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f2a80296c1bf947a27b16908a23c4e7542e59aa8d65b8b4782ef4cce3845184e
MD5 786dd20e7cba6e94a09ff01ae6325a48
BLAKE2b-256 a164a4e60546f0807944abda582e7f9c33d9ac23792eb2b0deebc2522710421f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.55-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a5ba2b3266ab5857b5f5f125fc4315cb58362171547a20a67d317fa752af8b92
MD5 671a0b1e22fa3f98455d27f5343eb138
BLAKE2b-256 10cddee194d2aa5f020f1aeef9152c51f24d5da82e7710655cb66eddfe6ad809

See more details on using hashes here.

Provenance

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