v6ctl
The official CLI for the v6Node API. Deploy and manage VPS nodes, SSH keys, and webhooks — interactively with Rich tables, or scripted with --json.
pipx install v6ctl
v6ctl config set token v6_...
v6ctl nodes list
Contributors: this package is published to PyPI.
README.mdbecomes the public project description and the wheel shipsv6ctl.pyin full, so code comments and--helptext are public too../release.sh verifyscans the built artifacts for internal host names, site codes, CPU models and algorithms, and refuses to publish if it finds any.
Install
pipx install v6ctl # recommended — isolated, upgradable
pip install v6ctl # works too
No pipx? brew install pipx (macOS), sudo apt install pipx (Debian/Ubuntu),
or python3 -m pip install --user pipx && python3 -m pipx ensurepath.
Configure
Get a token from the v6Node dashboard, then:
v6ctl config set token v6_...
Stored at ~/.config/v6ctl/config.json with mode 0600. Or set V6_TOKEN in
your environment.
Recipes
Deploy a node in one line
v6ctl nodes create -r frankfurt-2 -p 8gb -k laptop -t debian-13
Or run v6ctl nodes create on a TTY and answer the prompts. Each of
--region, --plan, --key, --template takes an ID, slug, or name —
whichever you remember.
Add a dedicated IPv4 at deploy
v6ctl nodes create -r frankfurt-2 -p 8gb -k laptop -t debian-13 \
--address dedicated_ipv4
Pin a specific image build with --flavor <id>.
Choose the host (operator tokens only)
Placement is normally chosen for you. Tokens that have been granted the capability can name a host instead:
v6ctl regions list --json # lists selectable hosts, if your token may see them
v6ctl nodes create -r <region> -p 8gb -k laptop -t debian-13 --host <host>
Host names are only unique within a region, so --host always goes together
with --region. Use --server-id instead if you want to be unambiguous.
--ignore-quota allows a host that is reported as full. It is a diagnostic
option and needs its own capability.
These are per-token capabilities an account admin grants explicitly; without
them the API returns 403. Placement is never silently downgraded, so if the
command succeeds the node is on the host you asked for.
Inspect a node, including every IP
v6ctl nodes show <pay-id>
v6ctl nodes list -A # show all IPs (default truncates to 2)
Manage SSH keys
v6ctl keys list
v6ctl keys create -d "laptop" -k "ssh-ed25519 AAAA..."
Subscribe a webhook to deploy events
v6ctl webhooks create -u https://example.com/hook -e node.deployed
Browse the catalog
v6ctl plans # plans + pricing
v6ctl regions # available regions
v6ctl templates # OS templates and flavors
Script it
v6ctl --json nodes list | jq '.items[].pay_id'
v6ctl --json plans | jq '.[] | select(.memory_mb >= 4096)'
Every command supports --json and exits non-zero on failure. In
non-interactive mode (pipe, CI, or --json), prompts are disabled and
missing required flags are an error — so CI fails fast instead of hanging.
v6ctl --help and v6ctl <command> --help are the source of truth for
every flag.
Configuration precedence
| Source | Priority |
|---|---|
--flag on the command line |
1 (highest) |
Env vars (V6_TOKEN, V6_API_URL) |
2 |
Config file ~/.config/v6ctl/config.json (mode 0600) |
3 |
| Built-in defaults | 4 (lowest) |
v6ctl config show # resolved config, token redacted
v6ctl config path
v6ctl config set api_url https://cloud.v6node.com/api/v1
v6ctl config unset token
Requirements
Python 3.10 or newer.
License
MIT — see LICENSE.
Metadata
Release files for v6ctl 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| v6ctl-0.5.0.tar.gz | 18.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| v6ctl-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.3 kB
Release files / v6ctl-0.5.0.tar.gz
| Download URL | v6ctl-0.5.0.tar.gz |
|---|---|
| Size | 18.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a4b9c3edebc167320e04d548fef1dfdea1732e0aa12f93e61e287c1f36c6c96
|
|
BLAKE2b-256 checksum How to use checksums |
aea2fd229a83bdc05b3534819e9f3eb42620053a2de165249a7272ab727dfa22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / v6ctl-0.5.0-py3-none-any.whl
| Download URL | v6ctl-0.5.0-py3-none-any.whl |
|---|---|
| Size | 18.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
451966e25cb0f9e5bd70e61ae9456d4f23ab2a9d3207d277a2d01984f266b9a4
|
|
BLAKE2b-256 checksum How to use checksums |
1bba588d11fa052985a8eff1ea04bac0c7df7f2e4fd5b3318017509e89b52271
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|