Skip to main content

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.

Stable Runtime Environment Defaults

devcontainer-rs supports convenience environment variables for stable local runtime defaults. These are repo-specific extensions: explicit CLI flags take precedence, and unset or blank environment variables preserve the current defaults.

For Podman-based local use:

export DEVCONTAINER_DOCKER_PATH=podman
export DEVCONTAINER_DOCKER_COMPOSE_PATH=podman-compose
devcontainer up --workspace-folder .

Path values are executable paths, not shell command strings with arguments. Use DEVCONTAINER_DOCKER_COMPOSE_PATH=podman-compose, not DEVCONTAINER_DOCKER_COMPOSE_PATH="podman compose".

CLI flag Environment variable
--docker-path DEVCONTAINER_DOCKER_PATH
--docker-compose-path DEVCONTAINER_DOCKER_COMPOSE_PATH
--buildkit DEVCONTAINER_BUILDKIT
--user-data-folder DEVCONTAINER_USER_DATA_FOLDER
--container-data-folder DEVCONTAINER_CONTAINER_DATA_FOLDER
--gpu-availability DEVCONTAINER_GPU_AVAILABILITY
--update-remote-user-uid-default DEVCONTAINER_UPDATE_REMOTE_USER_UID_DEFAULT
--mount-workspace-git-root DEVCONTAINER_MOUNT_WORKSPACE_GIT_ROOT
--mount-git-worktree-common-dir DEVCONTAINER_MOUNT_GIT_WORKTREE_COMMON_DIR
--workspace-mount-consistency DEVCONTAINER_WORKSPACE_MOUNT_CONSISTENCY

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

Release files for devcontainer-rs 0.0.60

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for devcontainer-rs 0.0.60
File
devcontainer_rs-0.0.60-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
devcontainer_rs-0.0.60-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
devcontainer_rs-0.0.60-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
devcontainer_rs-0.0.60-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
devcontainer_rs-0.0.60-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
devcontainer_rs-0.0.60-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 6.7 MB

Release files / devcontainer_rs-0.0.60-py3-none-musllinux_1_2_x86_64.whl

Download URL devcontainer_rs-0.0.60-py3-none-musllinux_1_2_x86_64.whl
Size 1.2 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
935e3f14e0fee442a058d571c9ad01105f3dca1259bc6cd9a290f22556ebe7c5
BLAKE2b-256 checksum
How to use checksums
461a7b2305d528f2aa9d92ee464fbad1cb6b43c5153a4a4b2bd6f9382dc2a031
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release files / devcontainer_rs-0.0.60-py3-none-musllinux_1_2_aarch64.whl

Download URL devcontainer_rs-0.0.60-py3-none-musllinux_1_2_aarch64.whl
Size 1.1 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
1d42bf94786e4f202aa556d8a46b3174ad30de08d065bd0400a9a731a9d7a8a5
BLAKE2b-256 checksum
How to use checksums
64e7b852a9658d001d1396b1b1484178e84156bbb55a9de09fb79ed2a9207a57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release files / devcontainer_rs-0.0.60-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL devcontainer_rs-0.0.60-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.2 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
7f110aadde0aa851c3d196227887d0be51e35bc21c5b8925b7f0da64ed56bad1
BLAKE2b-256 checksum
How to use checksums
96619b5b612780f2a4db17c2e7328680839a1afea32e75d97d6fee4ead5420f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release files / devcontainer_rs-0.0.60-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL devcontainer_rs-0.0.60-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.1 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
cf16c2611cd5dd812a62a850545b0a326069ecd985090ca6ca264adf0eb17071
BLAKE2b-256 checksum
How to use checksums
3a5acb137e3c80e7efa47935e22522ce98a0788a617734a8300c67a23e957404
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release files / devcontainer_rs-0.0.60-py3-none-macosx_11_0_arm64.whl

Download URL devcontainer_rs-0.0.60-py3-none-macosx_11_0_arm64.whl
Size 1.1 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
67720035ac7dca207d62855c92144ce75ca1ccb8c6218b094c0aab919ad434e9
BLAKE2b-256 checksum
How to use checksums
9230be7e82650f4c338f3459ac948e3f24de969395c6123d9f5f82da7639f7d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release files / devcontainer_rs-0.0.60-py3-none-macosx_10_12_x86_64.whl

Download URL devcontainer_rs-0.0.60-py3-none-macosx_10_12_x86_64.whl
Size 1.1 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e41d73f8f7c09b29cb9f93849f37bfe4d8440356ff8867f790941986daf279f3
BLAKE2b-256 checksum
How to use checksums
2d4a8536660a2468754bf752a5385734ade14481d652a639b43772dc0418bc01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page