Skip to main content

The official CLI for the v6Node Reseller API.

Project description

v6ctl

The official CLI for the v6Node Reseller API.

Provision, manage, and script every reseller endpoint. Works interactively with Rich tables, or scripted with --json and proper exit codes.

$ v6ctl nodes list
╭────────────────────────────── Nodes ──────────────────────────────╮
│ ID        Hostname      Region     Plan      OS          IP      │
│ a0fd028d  prod-web-1    Frankfurt  Standard  debian-13   5.1.2.3 │
│ b12c444e  staging-db    Frankfurt  Compute   ubuntu-24   5.1.2.4 │
╰───────────────────────────────────────────────────────────────────╯

Install

pipx install v6ctl

Don't have pipx?

# macOS
brew install pipx

# Debian / Ubuntu
sudo apt install pipx

# Everywhere else
python3 -m pip install --user pipx
python3 -m pipx ensurepath

Or use plain pip:

pip install v6ctl

Configure

Get your API token from the v6Node dashboard, then:

v6ctl config set token v6_...

Token is stored at ~/.config/v6ctl/config.json with 0600 permissions.

Alternatively, set V6_TOKEN in your environment.

Use

v6ctl nodes list                                # list your nodes
v6ctl nodes show <pay-id>                       # full details for a node
v6ctl nodes create -r frankfurt-2 -p 8gb -k laptop -t debian-13
v6ctl nodes create                              # run on a TTY → guided prompts
v6ctl nodes reboot <pay-id>
v6ctl nodes delete <pay-id>

v6ctl keys list                                 # list SSH keys
v6ctl keys create -d "laptop" -k "ssh-ed25519 AAAA..."

v6ctl webhooks create -u https://example.com/hook -e node.deployed

v6ctl plans                                     # available plans + pricing
v6ctl regions                                   # available regions
v6ctl templates                                 # available OS templates

Run v6ctl --help or v6ctl <command> --help for the full reference.

Friendly nodes create

--region, --plan, and --key each accept a numeric ID, a short slug, a full slug, or an exact name. Numeric inputs are looked up as an ID first; if no such ID exists, the value falls through to a name/slug match so keys with numeric descriptions remain reachable.

# All equivalent (assuming the IDs/slugs exist in your account):
v6ctl nodes create -r 7           -p 14              -k 3
v6ctl nodes create -r frankfurt-2 -p 8gb             -k laptop
v6ctl nodes create -r frankfurt-2 -p node-8gb-g2     -k laptop
v6ctl nodes create -r "Frankfurt 2" -p "Node 8GB G2" -k "My Laptop"

Run v6ctl nodes create on a terminal with any flag omitted and you'll be prompted with the list of candidates. Omitting a flag in non-interactive mode (pipe, CI) or with --json is an error — scripts stay fail-fast.

JSON output

Every command supports --json for scripting:

v6ctl --json nodes list | jq '.items[].pay_id'
v6ctl --json plans       | jq '.[] | select(.memory_mb >= 4096)'

Configuration

Where Precedence
--flag on the command line 1 (highest)
Environment variable (V6_TOKEN, V6_API_URL) 2
Config file ~/.config/v6ctl/config.json 3
Built-in defaults 4 (lowest)
v6ctl config show            # show resolved config (token redacted)
v6ctl config path            # print config file 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.

Project details


Download files

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

Source Distribution

v6ctl-0.3.0.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

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

v6ctl-0.3.0-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file v6ctl-0.3.0.tar.gz.

File metadata

  • Download URL: v6ctl-0.3.0.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for v6ctl-0.3.0.tar.gz
Algorithm Hash digest
SHA256 f46049d1e9ad3ae541cbf171a66703c9a9eb595fdafdc6508f088457cd286ac1
MD5 745c37bb4b0e8063c47d72a899817fd6
BLAKE2b-256 537ece37c343caf1c4c2a3d69a8749613429b6cb3457a8992076bddde822ee01

See more details on using hashes here.

File details

Details for the file v6ctl-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: v6ctl-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for v6ctl-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d6d076127562495a5592c7904a36f65b09aac6bb36bd2fc441b40d48f3b77bc
MD5 e558743ce1fac81bd151ce855a3376cb
BLAKE2b-256 f5c7eec3ca1c426b410d29619e65c5768d55d1e47061154ab0ab69f368242ebc

See more details on using hashes here.

Supported by

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