cloudvm
A command-line tool for managing cloud development instances. AWS EC2 is currently supported.
cloudvm streamlines the daily routine of working with a development EC2
instance: it refreshes the AWS SSO token only when expired, starts the
instance, waits for its public IP to be assigned, and reports it. A list
subcommand surveys instances across regions to see what is still running.
Install
pipx install cloudvm
Or, if pipx is not available:
pip install cloudvm
Requires Python 3.9 or newer and a configured aws CLI (SSO or static
credentials).
Usage
# Start an instance by its Name tag
cloudvm up --name my-dev-box
# Stop an instance — returns once the stop has been triggered
cloudvm down --name my-dev-box
# List instances across regions
cloudvm list --region 'eu-central-*,us-*' --name 'my-*'
All subcommands accept --region / -r and --name / -n, and honor the
usual AWS environment variables (AWS_REGION, AWS_PROFILE, ...).
Pass --update-ssh to up to point the matching ~/.ssh/config host
alias at the new IP.
If a running instance's shutdown behavior is terminate, down terminates
(deletes) it instead of stopping it. EC2 applies that behavior only when the OS
shuts down, not on an API stop, so down does this explicitly. An instance that
is already stopped is left alone. If termination protection refuses the
terminate, down stops the instance instead. When down --update-ssh
terminates an instance, it removes the alias from ~/.ssh/config rather than
commenting out its Hostname. delete --update-ssh likewise removes the alias
of each deleted instance.
When EC2 has no capacity for the instance type (InsufficientInstanceCapacity),
pass --retry DURATION (e.g. 30m, 2h, 1h30m) or --retry forever to
up to keep trying with backoff. If the start succeeds only after retrying,
up rings the terminal bell and asks the terminal to post a desktop notification
(OSC 9; supported by e.g. Ghostty, iTerm2 and WezTerm). It does the same when
it gives up.
Shell completion
To enable tab-completion, add this to your ~/.bashrc (or ~/.zshrc,
after compinit):
# This spawns cloudvm once for every new shell. See below for optimized
# alternative.
eval "$(cloudvm --print-completion bash)" # or: zsh / tcsh / fish
Then open a new shell, or source the rc file. cloudvm <TAB> will now
complete subcommands and flags.
To skip the per-shell cloudvm spawn, use a lazy stub instead — it
loads the real completion on first use.
bash (~/.bashrc):
_cloudvm_lazy_complete() {
eval "$(cloudvm --print-completion bash)"
return 124
}
complete -F _cloudvm_lazy_complete cloudvm
zsh (~/.zshrc, after compinit):
_cloudvm_lazy_complete() {
unfunction _cloudvm_lazy_complete
eval "$(cloudvm --print-completion zsh)"
"${_comps[cloudvm]}" "$@"
}
compdef _cloudvm_lazy_complete cloudvm
License
Apache License 2.0
Metadata
Release files for cloudvm 0.1.26.20261021154326
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| cloudvm-0.1.26.20261021154326.tar.gz | 28.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cloudvm-0.1.26.20261021154326-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 48.6 kB
Release files / cloudvm-0.1.26.20261021154326.tar.gz
| Download URL | cloudvm-0.1.26.20261021154326.tar.gz |
|---|---|
| Size | 28.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5a76a3d6ba07e2f55006d301b279a688188b4f33a9ad643d74cfb83c878fcc5d
|
|
BLAKE2b-256 checksum How to use checksums |
3d301402ea564725b01b4c53979e1cb4adbf5952fbc91d52e5a1bee5f31c313b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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 Oct 21, 2026.
Transparency logRelease files / cloudvm-0.1.26.20261021154326-py3-none-any.whl
| Download URL | cloudvm-0.1.26.20261021154326-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c5f9eb09a3661ea6170bff2980ca84321afa6373263b490ab8bd646876008f01
|
|
BLAKE2b-256 checksum How to use checksums |
4c40a4bc2dc6331dd63bded865cf91061d4ca7ecc2ca7a0be0565460e1781a21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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 Oct 21, 2026.
Transparency logSecurity for cloudvm 0.1.26.20261021154326
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for cloudvm-0.1.26.20261021154326.tar.gz
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 Oct 21, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.