Skip to main content

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.md becomes the public project description and the wheel ships v6ctl.py in full, so code comments and --help text are public too. ./release.sh verify scans 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

Add --wait to block until the deploy has finished and the node is running. It exits non-zero if the deploy failed or did not finish within --timeout seconds (default 600). rebuild, start, stop, shutdown and reboot take the same flags; the power commands wait until the node is in the target state, which counts as done if it already was. delete does not: the API cannot observe when the VM is gone, so subscribe to the node.deleted webhook instead. reboot --wait needs a node that has been running for at least a minute, since it confirms the reboot by uptime starting over; otherwise it refuses before sending anything.

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>.

Manage addresses after deploy

v6ctl nodes addresses <pay-id>                  # existing list shorthand
v6ctl nodes addresses add <pay-id> dedicated_ipv4      # asks first; --yes skips
v6ctl nodes addresses add <pay-id> public_ipv6
v6ctl nodes addresses add <pay-id> routed_ipv6
v6ctl nodes addresses delete <pay-id> <address-id>

dedicated_ipv4 is billable, so add asks before allocating it. Pass --yes to skip the question; without a terminal (scripts, CI, --json) --yes is required. Routed IPv6 allocation is asynchronous and has no --wait: the API lists the prefix before its route is in place, so watch the address.created / address.allocation_failed webhook events instead. Shared IPv4 is not offered. If an add or delete returns HYPERVISOR_ERROR, list the addresses before doing anything else—the allocation or release may already be committed.

Group nodes into projects

Projects are created in the panel. The CLI lists them and moves nodes between them; --project takes an ID or the project name.

v6ctl projects
v6ctl nodes list --project production
v6ctl nodes update <pay-id> --project production
v6ctl nodes update <pay-id> --no-project

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.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for v6ctl 0.7.0
File Size Uploaded
v6ctl-0.7.0.tar.gz 32.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for v6ctl 0.7.0
File Interpreter ABI Platform
v6ctl-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 55.9 kB

Release files / v6ctl-0.7.0.tar.gz

Download URL v6ctl-0.7.0.tar.gz
Size 32.0 kB
Tags Source
SHA-256 checksum
How to use checksums
68757d67f4bbccb11e8e200d243065920f89ab068d8303d52f3ace9434f04a53
BLAKE2b-256 checksum
How to use checksums
aedc428167a5e0b33fe4c0a334a82473a53c5c50bd871f6b7936b7b31097c518
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / v6ctl-0.7.0-py3-none-any.whl

Download URL v6ctl-0.7.0-py3-none-any.whl
Size 23.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ddcb84baa39d64e19d9a2a3eca122da85252a79b7203095bf9375e0a5f321664
BLAKE2b-256 checksum
How to use checksums
90ed2ef51bc95d4ae5e5f6de68e232623216107f90c2b54afc1f9e747858454e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

0.8.0

2 release files

This release

0.7.0 This release

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page