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.44-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (962.6 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

devcontainer_rs-0.0.44-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (1.0 MB view details)

Uploaded Python 3manylinux: glibc 2.5+ x86-64

devcontainer_rs-0.0.44-py3-none-macosx_11_0_arm64.whl (885.2 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

devcontainer_rs-0.0.44-py3-none-macosx_10_12_x86_64.whl (924.2 kB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file devcontainer_rs-0.0.44-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: devcontainer_rs-0.0.44-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 962.6 kB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for devcontainer_rs-0.0.44-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7ea1c02239b13b6868ee639b00b32ec040e2564ad48d39447ad8e190d38fc7ac
MD5 985109f61171a34a93916938696f721f
BLAKE2b-256 dacb4f8c4bf0bb9b6d1d4b636f6b32b6fe97b4b9f9d1a61180d19645cad43a0a

See more details on using hashes here.

File details

Details for the file devcontainer_rs-0.0.44-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

  • Download URL: devcontainer_rs-0.0.44-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: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for devcontainer_rs-0.0.44-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 851d0dc5d1d1104e00f0cc40de4b887e21175d565ff1a6ae699c5f9881bda394
MD5 29bc66f60faf22a4aad4980f2e330869
BLAKE2b-256 61057933aff203065bb7cb63a47a7c8c32eb84640d730a09aa862f03da9a6cf3

See more details on using hashes here.

File details

Details for the file devcontainer_rs-0.0.44-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: devcontainer_rs-0.0.44-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 885.2 kB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for devcontainer_rs-0.0.44-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7ef5b1ef45f544722b99dd8d11fecddaedb3a7830fb7b709c61f3cec96fbe0ca
MD5 37783f68f379f2a8dd92ab4d7fd3470b
BLAKE2b-256 7abb1cba74bfd345f0eef37d9a6cde89771521d5de3f54d6fc9dceeb4fdf68eb

See more details on using hashes here.

File details

Details for the file devcontainer_rs-0.0.44-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: devcontainer_rs-0.0.44-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 924.2 kB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for devcontainer_rs-0.0.44-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6309951cbf2c1dcd77f7deb8e413fe9b804518aa2a34835f2f6f688516c3c510
MD5 4db89b1bc9580467e75717df5fb1e7c1
BLAKE2b-256 bf77f0882a5adb7a89eb0d3476732e3f15d583ea098ee0bfafd443c9e5150160

See more details on using hashes here.

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