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

Uploaded Python 3musllinux: musl 1.2+ ARM64

devcontainer_rs-0.0.51-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.51-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.51-py3-none-macosx_11_0_arm64.whl (986.2 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

devcontainer_rs-0.0.51-py3-none-macosx_10_12_x86_64.whl (1.0 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.51-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 32898cbd177a277511c5a7fd9b919bf1a8dd15549219f06b56e8bfeae9d487ff
MD5 12e51200303cdf6228ba34b394e0c570
BLAKE2b-256 b1fbf5491feba78278d5df205376cfee8c5e19641a43a33475a85855887047f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.51-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 16a3afcf20db08d2d63f28036490aa398db8d5237327cd95b3bb5b6d19179ea7
MD5 116f6665d63611886bb0483dced2a28f
BLAKE2b-256 c2d5c5fffc73a95e046ca001a09147548963da057cbc3d494ae942ed44129d18

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.51-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8487edcaf1d4aa154cdb753e44cc2eb3a3326560a2f1c4be1865a254be7651d4
MD5 7a5361c1dcc5cc12781b0fe004d71f59
BLAKE2b-256 469103f849667d6c0ec11674751658d039a62fcc77b775e81398d9f73e2c61f6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.51-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5645f708f78c6a85f435051fabe33b7be3915d5506233fce2bd2351d9df26c3f
MD5 24f808f9985e3d6c2dfdd944931650e9
BLAKE2b-256 2c8daa645aeef6023c075e76f731aae50722e66a200a036cf1104262629af5ae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.51-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f1dd483d63bedf8cd96d097957c41a583a30879e5dab0787f0d02a1f8c1b83af
MD5 01f3c941bd35765a73d9c07dcf7ff37a
BLAKE2b-256 f867803b888947f0ed5e3b2da70be3b7495e93f6d1c4b35015712a95ac1c9650

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for devcontainer_rs-0.0.51-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d544702f2c456d1dcf6ee92c45bc6bd8112e88c89a92f64ead097a2e64a3f933
MD5 37673fd086df61803da5f3a4aa8214d0
BLAKE2b-256 717115612d0a9b8793e93a87ce5e5dde57191aae8ef170bd9ae6dc064c282c07

See more details on using hashes here.

Provenance

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