Native Rust implementation of the Dev Containers CLI
Project description
devcontainer-rs
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 upstreamdevcontainers/clibaseline.spec/: canonical upstreamdevcontainers/specschemas 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devcontainer_rs-0.0.47-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: devcontainer_rs-0.0.47-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 962.4 kB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94fed8d5c853d257421057bed19f8d22f65b60d5a6c66072ed1ab8a255f0e078
|
|
| MD5 |
f5d5642a483adeeb4911d3a8d2a6cdde
|
|
| BLAKE2b-256 |
3a615c7d2fb00a22520991798abb4efee23f5c85b58ab5dcd9efa2d2f15460c8
|
Provenance
The following attestation bundles were made for devcontainer_rs-0.0.47-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
devcontainer-release.yml on jooh/devcontainer-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devcontainer_rs-0.0.47-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
94fed8d5c853d257421057bed19f8d22f65b60d5a6c66072ed1ab8a255f0e078 - Sigstore transparency entry: 1458297888
- Sigstore integration time:
-
Permalink:
jooh/devcontainer-rs@ce6c40d7ab5d28183449d93c0fc7baf84860e4cc -
Branch / Tag:
refs/heads/main - Owner: https://github.com/jooh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
devcontainer-release.yml@ce6c40d7ab5d28183449d93c0fc7baf84860e4cc -
Trigger Event:
push
-
Statement type:
File details
Details for the file devcontainer_rs-0.0.47-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: devcontainer_rs-0.0.47-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 911.2 kB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
529e286820bd05659d22999dc1fde1ba031c5e5941c853ccec05359c6dacb9be
|
|
| MD5 |
e1ea7278c9d31ea6bd8894928ec926fa
|
|
| BLAKE2b-256 |
71fb809d416ecc2242036bc0f1604ba0455e6bf51b53291f1ba132c4b9a799d5
|
Provenance
The following attestation bundles were made for devcontainer_rs-0.0.47-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
devcontainer-release.yml on jooh/devcontainer-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devcontainer_rs-0.0.47-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
529e286820bd05659d22999dc1fde1ba031c5e5941c853ccec05359c6dacb9be - Sigstore transparency entry: 1458297985
- Sigstore integration time:
-
Permalink:
jooh/devcontainer-rs@ce6c40d7ab5d28183449d93c0fc7baf84860e4cc -
Branch / Tag:
refs/heads/main - Owner: https://github.com/jooh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
devcontainer-release.yml@ce6c40d7ab5d28183449d93c0fc7baf84860e4cc -
Trigger Event:
push
-
Statement type:
File details
Details for the file devcontainer_rs-0.0.47-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.
File metadata
- Download URL: devcontainer_rs-0.0.47-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
- Upload date:
- Size: 1.0 MB
- Tags: Python 3, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83b31910ab2ccb18ad32f75f7f56c7ee237340454eb18e62e75574e4da17a69d
|
|
| MD5 |
75a7a122fd479890bf9af86a11a45663
|
|
| BLAKE2b-256 |
af0f23b2ef0ece92dcf878558b5e349cb579ccbb59b2c340cbd40855b8610bd4
|
Provenance
The following attestation bundles were made for devcontainer_rs-0.0.47-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl:
Publisher:
devcontainer-release.yml on jooh/devcontainer-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devcontainer_rs-0.0.47-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl -
Subject digest:
83b31910ab2ccb18ad32f75f7f56c7ee237340454eb18e62e75574e4da17a69d - Sigstore transparency entry: 1458297784
- Sigstore integration time:
-
Permalink:
jooh/devcontainer-rs@ce6c40d7ab5d28183449d93c0fc7baf84860e4cc -
Branch / Tag:
refs/heads/main - Owner: https://github.com/jooh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
devcontainer-release.yml@ce6c40d7ab5d28183449d93c0fc7baf84860e4cc -
Trigger Event:
push
-
Statement type:
File details
Details for the file devcontainer_rs-0.0.47-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: devcontainer_rs-0.0.47-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 887.3 kB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24ec7f1b1da032e8133c0ed0303d1eb3842b19cab563a90a5088f227916e0106
|
|
| MD5 |
405888c95c120268576144c383c07562
|
|
| BLAKE2b-256 |
8492daa99e48a1f548fdb131aa1caa03920d7f2ef76c0edcdb40b9ef187bff5f
|
Provenance
The following attestation bundles were made for devcontainer_rs-0.0.47-py3-none-macosx_11_0_arm64.whl:
Publisher:
devcontainer-release.yml on jooh/devcontainer-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devcontainer_rs-0.0.47-py3-none-macosx_11_0_arm64.whl -
Subject digest:
24ec7f1b1da032e8133c0ed0303d1eb3842b19cab563a90a5088f227916e0106 - Sigstore transparency entry: 1458297839
- Sigstore integration time:
-
Permalink:
jooh/devcontainer-rs@ce6c40d7ab5d28183449d93c0fc7baf84860e4cc -
Branch / Tag:
refs/heads/main - Owner: https://github.com/jooh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
devcontainer-release.yml@ce6c40d7ab5d28183449d93c0fc7baf84860e4cc -
Trigger Event:
push
-
Statement type:
File details
Details for the file devcontainer_rs-0.0.47-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: devcontainer_rs-0.0.47-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 923.9 kB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cd7c680e38e231cf19286d142ff7b74ca2ae9e950b699c2bb28f872c7a86b9c
|
|
| MD5 |
dba6577bc0edf5c0cbcb14029e93f85b
|
|
| BLAKE2b-256 |
83f2fedb161eba2b51aad068ac5f9fe0348065130bd03ea1da6fd257950c6baa
|
Provenance
The following attestation bundles were made for devcontainer_rs-0.0.47-py3-none-macosx_10_12_x86_64.whl:
Publisher:
devcontainer-release.yml on jooh/devcontainer-rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devcontainer_rs-0.0.47-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
3cd7c680e38e231cf19286d142ff7b74ca2ae9e950b699c2bb28f872c7a86b9c - Sigstore transparency entry: 1458297698
- Sigstore integration time:
-
Permalink:
jooh/devcontainer-rs@ce6c40d7ab5d28183449d93c0fc7baf84860e4cc -
Branch / Tag:
refs/heads/main - Owner: https://github.com/jooh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
devcontainer-release.yml@ce6c40d7ab5d28183449d93c0fc7baf84860e4cc -
Trigger Event:
push
-
Statement type: