Skip to main content

devs - DevContainer Management Tool

A Python command-line tool that simplifies managing multiple named devcontainers for any project.

Features

  • Multiple Named Containers: Start multiple devcontainers with custom names (e.g., "sally", "bob", "charlie")
  • VS Code Integration: Open containers in separate VS Code windows with clear titles
  • Project Isolation: Containers are prefixed with git repository names (org-repo format)
  • Environment Variable Management: Layered DEVS.yml configuration with user-specific overrides
  • Shared Authentication: Claude credentials are shared between containers for the same project
  • Cross-Platform: Works on any project with devcontainer configuration

Installation

pip install devs

Usage

# Start development environments
devs start frontend backend

# Open both in VS Code (separate windows)
devs vscode frontend backend

# Work in a specific container
devs shell frontend

# Run Claude in a container
devs claude frontend "Summarize this codebase"

# Run tests in a container
devs runtests frontend

# Environment variables support
devs start frontend --env DEBUG=true --env API_URL=http://localhost:3000
devs claude frontend "Fix the tests" --env NODE_ENV=test

# Set up Claude authentication (once per host)
devs claude --auth
# Or with API key
devs claude --auth --api-key <YOUR_API_KEY>

# Clean up when done
devs stop frontend backend

# List active containers
devs list

Configuration

Environment Variables

devs supports layered environment variable configuration through DEVS.yml files:

Priority order (highest to lowest):

  1. CLI --env flags
  2. ~/.devs/envs/{org-repo}/DEVS.yml (user-specific project overrides)
  3. ~/.devs/envs/default/DEVS.yml (user defaults)
  4. {project-root}/DEVS.yml (repository configuration)

Example DEVS.yml in your project:

env_vars:
  default:
    NODE_ENV: development
    API_URL: https://api.example.com
    DEBUG: "false"
  
  frontend:  # Container-specific overrides
    DEBUG: "true"
    FRONTEND_PORT: "3000"
    
  backend:
    NODE_ENV: production
    API_URL: https://prod-api.example.com

User-specific configuration:

# Global user defaults
mkdir -p ~/.devs/envs/default
echo 'env_vars:
  default:
    GLOBAL_SETTING: "user_preference"
    MY_SECRET: "user_secret"' > ~/.devs/envs/default/DEVS.yml

# Project-specific overrides (org-repo format)
mkdir -p ~/.devs/envs/myorg-myproject
echo 'env_vars:
  frontend:
    DEBUG: "true"
    LOCAL_SECRET: "dev_secret"' > ~/.devs/envs/myorg-myproject/DEVS.yml

📖 See ../../example-usage.md for detailed examples and scenarios

Requirements

  • Docker: Container runtime
  • VS Code: With code command in PATH
  • DevContainer CLI: npm install -g @devcontainers/cli
  • Project Requirements: .devcontainer/devcontainer.json in target projects

Architecture

Container Naming

Containers follow the pattern: dev-<org>-<repo>-<dev-name>

Example: dev-ideonate-devs-sally, dev-ideonate-devs-bob

VS Code Window Management

Each container gets unique workspace paths to ensure VS Code treats them as separate sessions.

Claude Authentication Sharing

The tool creates symlinks so all containers for the same project share Claude authentication.

Development

# Clone repository
git clone https://github.com/ideonate/devs.git
cd devs/python-devs

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Format code
black devs tests

# Type checking
mypy devs

License

MIT License

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

devs_cli-5.0.0.tar.gz (39.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

devs_cli-5.0.0-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file devs_cli-5.0.0.tar.gz.

File metadata

  • Download URL: devs_cli-5.0.0.tar.gz
  • Upload date:
  • Size: 39.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for devs_cli-5.0.0.tar.gz
Algorithm Hash digest
SHA256 b412656fd0cb7700cd808250892e99c2be84ed696f289ff01ecd62f9250f8bbc
MD5 d928d4c2487c5ccb7b9eea1d09c53c7d
BLAKE2b-256 a657ebc14cf653f43c7673bba591087d1a4baa8b1284162274ca9cc3af2f6a70

See more details on using hashes here.

Provenance

The following attestation bundles were made for devs_cli-5.0.0.tar.gz:

Publisher: bump-and-publish.yml on ideonate/devs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file devs_cli-5.0.0-py3-none-any.whl.

File metadata

  • Download URL: devs_cli-5.0.0-py3-none-any.whl
  • Upload date:
  • Size: 20.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for devs_cli-5.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d4e849fa30277d5ad85065f10fa19623a5f64b7022a5f06fef65810b99902736
MD5 2cf0e17a51dc3a581d12cc3661231394
BLAKE2b-256 94877ab44550f3ac2b96877d7c622a2ba32f80dafedf48e5da431948e3a1e6da

See more details on using hashes here.

Provenance

The following attestation bundles were made for devs_cli-5.0.0-py3-none-any.whl:

Publisher: bump-and-publish.yml on ideonate/devs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

5.0.1

2 files

This release

5.0.0 This release

2 files

4.0.7

2 files

4.0.4

2 files

4.0.3

2 files

4.0.2

2 files

4.0.1

2 files

4.0.0

2 files

3.4.1

2 files

3.4.0

2 files

3.3.6

2 files

3.3.5

2 files

3.3.4

2 files

3.3.3

2 files

3.3.2

2 files

3.3.1

2 files

3.3.0

2 files

3.2.4

2 files

3.2.3

2 files

3.2.2

2 files

3.2.1

2 files

3.2.0

2 files

3.1.0

2 files

3.0.0

2 files

2.0.13

2 files

2.0.12

2 files

2.0.11

2 files

2.0.10

2 files

2.0.9

2 files

2.0.8

2 files

2.0.7

2 files

2.0.6

2 files

2.0.5

2 files

2.0.4

2 files

2.0.3

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.2.1

2 files

1.2.0

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page