Project · editor · container — simplified
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
dev-code
_ _
| | | |
__| | _____ ________ ___ ___ __| | ___
/ _` |/ _ \ \ / /______/ __/ _ \ / _` |/ _ \
| (_| | __/\ V / | (_| (_) | (_| | __/
\__,_|\___| \_/ \___\___/ \__,_|\___|
project · editor · container — simplified
One command. Any project. The right devcontainer.
Why devcode?
If you’ve ever:
- Copied
.devcontainer/folders between projects - Avoided committing devcontainer configs to repos you don’t control
- Reconfigured VS Code containers again and again
devcode fixes this.
Define your devcontainer once. Reuse it everywhere. Keep your repos clean.
What it does
devcode is a CLI that opens any project in VS Code inside a devcontainer—instantly—using reusable templates.
# Before devcode
code ~/projects/my-app
# → configure .devcontainer manually (or copy-paste from another project)
# → reopen in container
# → remember to not commit .devcontainer to this repo
# → repeat for every project
# After devcode
devcode open py-dev ~/projects/my-app
VS Code opens. The container builds. You're ready to go.
Install
Install the dev-code package, which provides the devcode CLI.
Option 1 — Install globally (recommended)
pip install dev-code
Option 2 — Run without installing
uvx --from dev-code devcode
Optional — Add alias
alias devcode="uvx --from dev-code devcode"
Requirements
- VS Code with Dev Containers extension
- Docker
Quick start
# 1. Seed your first template (one-time)
devcode init
# 2. Open any project in a container
devcode open dev-code ~/projects/my-app
# 3. Later: reopen any project instantly
devcode ps -a -i
Select a project from the list to reopen it in VS Code.
Core concepts
Templates
Reusable devcontainer definitions stored locally—not in your repos.
Default location:
~/.local/share/dev-code/templates/
Override with:
$DEVCODE_TEMPLATE_DIR
Features
Core workflow
- One-command open — launch any project instantly
- Reusable templates — define once, use everywhere
- Works with any repo — no config changes required
Project switching (power feature)
- Reopen any project instantly — use
devcode ps -a -ito list all containers (running and stopped) and interactively reopen one - Container dashboard — inspect running environments with
devcode ps
Customization
- Custom templates
- File sync on launch — inject configs, credentials, and secrets safely
Environment support
- WSL support
- Standard devcontainer format
Commands
| Command | Description |
|---|---|
devcode open <template> <path> |
Open a project using a template |
devcode init |
Seed the default template |
devcode new <name> [base] |
Create a new template |
devcode edit [template] |
Edit a template |
devcode list [--long] |
List templates |
devcode ps [-a] [-i] |
List containers (-a includes stopped, -i interactive mode) |
devcode completion <shell> |
Generate shell completion |
Examples
# Show running containers
devcode ps
# Show all containers (including stopped)
devcode ps -a
# Interactive project switcher
devcode ps -a -i
Select a container to reopen its project in VS Code.
Templates in practice
devcode init
devcode new my-python
devcode edit my-python
devcode open my-python ~/projects/app
File Copy (inject files into container)
{
"customizations": {
"dev-code": {
"cp": [
{
"source": "${localEnv:HOME}/.config/myapp",
"target": "/home/vscode/.config/myapp"
}
]
}
}
}
Perfect for:
- Credentials
- Config files
- Local development secrets
Shell completion
Bash
eval "$(devcode completion bash)"
Zsh
eval "$(devcode completion zsh)"
Requires
devcodeto be installed (not via alias).
How it works
- Resolve a template
- Launch VS Code with a devcontainer
- Apply optional file sync rules
Contributing
git clone https://github.com/dacrystal/dev-code
devcode open dev-code ./dev-code
License
MIT
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 Distribution
Built Distribution
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 dev_code-0.1.6.post1.tar.gz.
File metadata
- Download URL: dev_code-0.1.6.post1.tar.gz
- Upload date:
- Size: 46.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c40cd7c1c6f7443d692ffe7b0838770d04b8fb056ef7d399a9ee4358352f8a86
|
|
| MD5 |
1cf0a657b333c4a2928828b376618b8d
|
|
| BLAKE2b-256 |
8d6a94b7a9368115aadc0a7fc70152c2e9dca3fad2a565269b38eade50d523fe
|
Provenance
The following attestation bundles were made for dev_code-0.1.6.post1.tar.gz:
Publisher:
publish.yml on dacrystal/dev-code
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dev_code-0.1.6.post1.tar.gz -
Subject digest:
c40cd7c1c6f7443d692ffe7b0838770d04b8fb056ef7d399a9ee4358352f8a86 - Sigstore transparency entry: 1175683541
- Sigstore integration time:
-
Permalink:
dacrystal/dev-code@80af1b5e748597f0e5cf49923c6a6b129a2f9dfc -
Branch / Tag:
refs/tags/v0.1.6.post1 - Owner: https://github.com/dacrystal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@80af1b5e748597f0e5cf49923c6a6b129a2f9dfc -
Trigger Event:
push
-
Statement type:
File details
Details for the file dev_code-0.1.6.post1-py3-none-any.whl.
File metadata
- Download URL: dev_code-0.1.6.post1-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cba3dd38ce87b9d79e81c96e7d55564da4843c3d127f794f112a30204e5fe1d1
|
|
| MD5 |
d81e1205b38b6cd68c6f25fa3cf6ade4
|
|
| BLAKE2b-256 |
efd40b5821203e1a96d985e9d7665dcc855196336c6596eaa0def45f601694bf
|
Provenance
The following attestation bundles were made for dev_code-0.1.6.post1-py3-none-any.whl:
Publisher:
publish.yml on dacrystal/dev-code
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dev_code-0.1.6.post1-py3-none-any.whl -
Subject digest:
cba3dd38ce87b9d79e81c96e7d55564da4843c3d127f794f112a30204e5fe1d1 - Sigstore transparency entry: 1175683572
- Sigstore integration time:
-
Permalink:
dacrystal/dev-code@80af1b5e748597f0e5cf49923c6a6b129a2f9dfc -
Branch / Tag:
refs/tags/v0.1.6.post1 - Owner: https://github.com/dacrystal
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@80af1b5e748597f0e5cf49923c6a6b129a2f9dfc -
Trigger Event:
push
-
Statement type: