devlaunch
A streamlined CLI for devpod with intuitive autocomplete and fzf fuzzy selection.
Continuous Integration Status
Installation
Pixi (Recommended)
pixi global install --channel conda-forge --channel https://prefix.dev/blooop devlaunch
This installs devlaunch along with devpod and all dependencies automatically.
Pip
pip install devlaunch
Note: When using pip, you must install devpod separately.
Shell Completions
After installation, set up shell completions:
dl --install
source ~/.bashrc # or restart your terminal
Usage
dl # Interactive workspace selector (fzf)
dl <user/repo> # Start workspace and attach shell
dl <user/repo> <cmd> # Run workspace command (stop, code, etc.)
dl <user/repo> -- <command> # Run shell command in workspace
Workspace Sources
dl myproject # Existing workspace by name
dl user/repo # Create from GitHub repo
dl user/repo@branch # Create from specific branch
dl ./path # Create from local path
Workspace Commands
| Command | Description |
|---|---|
dl <user/repo> stop |
Stop the workspace |
dl <user/repo> rm, prune |
Delete the workspace |
dl <user/repo> code |
Open in VS Code |
dl <user/repo> restart |
Stop and start (no rebuild) |
dl <user/repo> recreate |
Recreate container |
dl <user/repo> reset |
Clean slate (remove all, recreate) |
dl <user/repo> -- <command> |
Run shell command in workspace |
Options
| Option | Description |
|---|---|
--devcontainer <variant|path> |
Use a non-default devcontainer.json. A bare name means .devcontainer/<name>/devcontainer.json. Stored with the workspace, so pass it once. |
Projects with demanding devcontainers — several variants, compose sidecars, or a
host-side initializeCommand that has to tell branch workspaces apart — are
covered in docs/devcontainer-projects.md.
Global Commands
| Command | Description |
|---|---|
dl --ls |
List all workspaces |
dl --install |
Install shell completions |
dl --purge [-y] |
Remove all devlaunch data |
dl --prune-worktrees [days] |
Remove unused worktrees (default: 30 days) |
dl --refresh |
Refresh completion cache |
dl --help, -h |
Show this help |
dl --version |
Show version |
Examples
dl # Select workspace with fzf
dl devpod # Open existing workspace
dl loft-sh/devpod # Create from GitHub
dl blooop/devlaunch@main # Create from specific branch
dl ./my-project # Create from local folder
dl blooop/devlaunch code # Open in VS Code
dl blooop/devlaunch -- make test # Run command in workspace
dl blooop/devlaunch stop # Stop workspace
Features
- Fuzzy Selection: When called without arguments, uses fzf for interactive workspace selection
- Smart Completion: Tab completion for workspaces, GitHub repos (owner/repo format), and paths
- GitHub Shorthand: Use
owner/repoinstead of full URLs - automatically expands togithub.com/owner/repo - Branch Support: Specify branches with
owner/repo@branchsyntax - Fast Autocomplete: Completion cache for ~3ms response time (vs ~700ms without cache)
Worktree Backend
For git repositories, devlaunch uses an efficient worktree backend by default:
- Efficient Storage: Repos are cloned once to
~/.cache/devlaunch/repos/owner/repo/, then git worktrees are created for each branch - Shared Git Objects: All branches share git objects, saving disk space
- Lazy Fetch: Remote updates are only fetched if the configured interval has elapsed (default: 1 hour)
Container Sharing Mode
Use --shared to share a single container across multiple branches of the same repo:
dl --shared owner/repo@branch1 # Creates container "owner-repo"
dl --shared owner/repo@branch2 # Reuses "owner-repo" container
Pre-warming
Use --warm to prepare a workspace without attaching a shell:
dl --warm owner/repo@branch # Creates container in background
Backend Selection
dl --backend devpod owner/repo # Force legacy DevPod backend
DEVLAUNCH_BACKEND=devpod dl owner/repo # Use environment variable
Shell Completion
After running dl --install, you get intelligent tab completion:
- Workspace names from your devpod list
- Known GitHub owners and repositories from your workspaces
- File/directory paths when starting with
./,/, or~ - All global flags (
--ls,--install, etc.) and workspace commands
Development
This project uses pixi for environment management.
# Run tests
pixi run test
# Run full CI suite
pixi run ci
# Format and lint
pixi run style
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 devlaunch-0.0.7.tar.gz.
File metadata
- Download URL: devlaunch-0.0.7.tar.gz
- Upload date:
- Size: 30.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d7a616207d937fc488bc561c2a6b0a965eb8d59bc75aa118faaa4f7e57a1aa6
|
|
| MD5 |
d3ed4903c6a19fe77dc119732fc6c24d
|
|
| BLAKE2b-256 |
8448601cdbf37a78a68e9076f88d709d0120eacdf8cf7961cea7f8cd9a284a7c
|
File details
Details for the file devlaunch-0.0.7-py2.py3-none-any.whl.
File metadata
- Download URL: devlaunch-0.0.7-py2.py3-none-any.whl
- Upload date:
- Size: 34.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2d0f4225a40f53e3aa0303c9f10fa7448cc8b7f839ed345873a408c2b34b313
|
|
| MD5 |
671170ef31e66f52248f5da2a3770d56
|
|
| BLAKE2b-256 |
b6334286643aac0441b61c0a7d3e94df3a0d2a2954eee42235110244accffbc1
|