Biznet GIO CLI
by @biznetgio
Manage Biznet Gio cloud infrastructure (servers, VMs, storage, IPs) via CLI and MCP server
clawhub install biznetgioπ About This Skill
name: Biznet Gio Cloud Management description: Manage Biznet Gio cloud infrastructure (servers, VMs, storage, IPs) via CLI and MCP server homepage: https://github.com/BiznetGIO/biznetgio-cli license: MIT required_env: - name: BIZNETGIO_API_KEY required: false description: "Fallback API token. Preferred method: run
biznetgio login β writes ~/.biznetgio.json which takes priority over this env var."
- name: BIZNETGIO_PORTAL_URL
required: false
description: Override portal host for login. Defaults to portal.biznetgio.com. Ignored if ~/.biznetgio.json already has portal_url.
- name: BIZNETGIO_BASE_URL
required: false
description: Override API base URL. Defaults to https://api.portal.biznetgio.com/v1.
credential_file: ~/.biznetgio.json
required_binaries:
- name: node
version: ">=18"
description: Node.js runtime for the CLI and MCP server.
- name: npx
description: Included with Node.js. Fetches and runs @biznetgio/cli from npm registry.
primary_credential: ~/.biznetgio.json (written by biznetgio login)
packages:
- name: "@biznetgio/cli"
registry: npm
url: https://www.npmjs.com/package/@biznetgio/cli
- name: "@biznetgio/mcp"
registry: npm
url: https://www.npmjs.com/package/@biznetgio/mcp
install: npx @biznetgio/cli@latest
Biznet Gio Cloud Management - Agent Skill Guide
Skill Metadata
| Field | Value |
|-------|-------|
| Name | Biznet Gio Cloud Management |
| Description | Manage Biznet Gio cloud infrastructure (servers, VMs, storage, IPs) via CLI and MCP |
| Homepage | https://github.com/BiznetGIO/biznetgio-cli |
| npm (CLI) | @biznetgio/cli |
| npm (MCP) | @biznetgio/mcp |
| API Docs | https://api.portal.biznetgio.com/v1/openapi.json |
| License | MIT |
| Primary Credential | BIZNETGIO_API_KEY |
Credential Sources (resolution order β highest priority first)
| Priority | Source | Field / Var | Notes |
|----------|--------|-------------|-------|
| 1 | ~/.biznetgio.json | api_key | Written by biznetgio login. Mode 0600. |
| 2 | Environment variable | BIZNETGIO_API_KEY | Legacy / CI fallback. |
| 3 | CLI flag | --api-key | Per-command override, beats everything. |
After biznetgio login succeeds, no env var setup is needed β all commands read from the credential file automatically.
Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| BIZNETGIO_API_KEY | No (preferred: biznetgio login) | Fallback API token when ~/.biznetgio.json is absent. |
| BIZNETGIO_PORTAL_URL | No | Override portal host. Defaults to portal.biznetgio.com. Ignored if credential file already has portal_url. |
| BIZNETGIO_BASE_URL | No | Override API base URL. Defaults to https://api.portal.biznetgio.com/v1. |
Required Binaries
| Binary | Version | Required | Description |
|--------|---------|----------|-------------|
| node | >= 18 | Yes | Node.js runtime for the CLI and MCP server. |
| npx | (bundled with node) | Yes | Fetches and runs @biznetgio/cli from the npm registry without global installation. |
Runtime Note
This skill executes the npm package @biznetgio/cli via npx, which downloads and runs code from the npm registry. The package is published under the @biznetgio npm scope by Biznet Gio. Source code is available at github.com/BiznetGIO/biznetgio-cli. If you require stronger guarantees, you can:
npm install -g @biznetgio/cli and verify the package before usenpx @biznetgio/cli@1.0.0 instead of @latestYou are an agent that can manage Biznet Gio cloud infrastructure using the CLI tool @biznetgio/cli and/or MCP server @biznetgio/mcp.
Authentication
Always check auth status before running any other command. Follow these steps exactly:
Step 1 β Check if already logged in
npx @biznetgio/cli@latest whoami
Interpret the result:
| Result | Meaning | Action |
|--------|---------|--------|
| Exit 0, shows email / client_id | Already logged in | Note the identity and proceed to the task |
| Exit non-zero, Not logged in error | No credentials | Go to Step 2 |
| Exit non-zero, invalid JSON error | Corrupt credential file | Tell user to delete ~/.biznetgio.json then re-run biznetgio login |
Step 2 β Guide the user to log in (only if not logged in)
Do not ask the user to paste their API key. The CLI has a secure browser-based login. Tell the user:
> "You're not logged in. Please open a terminal and run: >
> biznetgio login
>
> A browser URL will be displayed. Open it, log in, and the CLI will save your credentials automatically. Let me know when it completes."Wait for the user to confirm login is done before continuing.
> Staging / alternate portal: If the user needs to target a different portal, they can run BIZNETGIO_PORTAL_URL=staging.biznetgio.com biznetgio login β the override is written into ~/.biznetgio.json and used for all subsequent commands automatically.
Step 3 β Confirm identity after login
After the user confirms login, run whoami again and report the result to the user:
npx @biznetgio/cli@latest whoami
Tell the user: "Logged in as \~/.biznetgio.json."
Then proceed to the original task.
Logging out
To remove saved credentials:
biznetgio logout
Deletes ~/.biznetgio.json. If the file is already absent, prints "Already logged out" and exits cleanly. After logout, commands that require authentication will fail until the user runs biznetgio login again.
Important Instructions
1. Check auth first. Before any other command, run whoami as described above. Do not skip this step.
2. Always use npx to run the CLI. No installation required.
3. Read-only commands run without confirmation. Commands like list, detail, products, product-os, product-ip, state, info, usage, regions, openvpn, vm-details, url, credential list, bucket list, object list, keypair list, snapshot list, disk list, and other read-only queries can be executed directly without asking for user approval.
4. Confirm before create, update, or delete actions. Before running any command that creates, modifies, or deletes a resource, show the user the full command with all values and ask for confirmation. The user may want to revise parameter values before execution.
5. For destructive actions (delete, rebuild, state changes), double confirm. Clearly warn the user about the impact and ask explicitly: "Are you sure?"
6. For create operations, list all parameters and let the user review and adjust before executing. Show product options, OS choices, and pricing when available.
How to Run
# After biznetgio login β no env vars needed, credentials come from ~/.biznetgio.json
npx @biznetgio/cli@latest [arguments] [options]Fallback: API key via env var (if credential file is absent)
BIZNETGIO_API_KEY= npx @biznetgio/cli@latest [arguments] [options]Per-command override (beats credential file and env var)
npx @biznetgio/cli@latest --api-key [arguments] [options]
~/.biznetgio.json (preferred) β BIZNETGIO_API_KEY env β --api-key flaghttps://api.portal.biznetgio.com/v1 (override with BIZNETGIO_BASE_URL env)table, use --output json for JSON outputAvailable Services
| Service | CLI Command | MCP Tool Prefix | Description |
|---------|------------|-----------------|-------------|
| NEO Metal | metal | metal_* | Bare metal servers |
| Elastic Storage | elastic-storage | elastic_storage_* | Storage for bare metal |
| Additional IP | additional-ip | additional_ip_* | Additional IPs for bare metal |
| NEO Lite | neolite | neolite_* | Virtual machines (lightweight) |
| NEO Lite Pro | neolite-pro | neolite_pro_* | Virtual machines (pro-tier) |
| Object Storage | object-storage | object_storage_* | S3-compatible object storage |
General Pattern
npx @biznetgio/cli@latest [arguments] [options]
npx @biznetgio/cli@latest [arguments] [options]
Global options: --api-key , --output table|json
Output Behavior
price/mo.--output json β Raw JSON from the API .data field.success or true.No data found.Valid Enum Values
--cycle): m (monthly), q (quarterly), s (semi-annual), a (annual), b (biennial), t (triennial), p4, p5on, off, resetstop, suspend, resume, shutdown, start, resetprivate, public-read, public-read-write, authenticated-read, log-delivery-write^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$ (min 8 chars, uppercase + lowercase + digit, alphanumeric only β no special characters)Workflow & Best Practices
Before Creating Resources
1. List products first to get valid product_id values:
npx @biznetgio/cli@latest metal products
npx @biznetgio/cli@latest neolite products
npx @biznetgio/cli@latest object-storage products
2. Check available OS for a product:
npx @biznetgio/cli@latest metal product-os
npx @biznetgio/cli@latest neolite product-os
3. Check available keypairs (or create one first):
npx @biznetgio/cli@latest neolite keypair list
npx @biznetgio/cli@latest neolite keypair create --name "my-key"
4. Check IP availability (neolite):
npx @biznetgio/cli@latest neolite product-ip
Creating Resources
# Create a bare metal server
npx @biznetgio/cli@latest metal create \
--product-id --cycle m --keypair-id \
--label "my-server" --public-ip 1 --select-os "ubuntu-22.04"Create a NEO Lite instance
npx @biznetgio/cli@latest neolite create \
--product-id --cycle m --select-os "Ubuntu-20.04" \
--keypair-id --ssh-and-console-user myuser \
--console-password TestPass123Create a NEO Lite Pro instance
npx @biznetgio/cli@latest neolite-pro create \
--product-id --cycle m --select-os "Ubuntu-20.04" \
--keypair-id --ssh-and-console-user myuser \
--console-password TestPass123Create object storage (label max 16 chars)
npx @biznetgio/cli@latest object-storage create \
--product-id --cycle m --label "my-storage"Create elastic storage (requires metal_account_id)
npx @biznetgio/cli@latest elastic-storage create \
--product-id --cycle m --storage-name "data-vol" \
--metal-account-id Create additional IP
npx @biznetgio/cli@latest additional-ip create --product-id --cycle m
Deleting Resources
npx @biznetgio/cli@latest metal delete
npx @biznetgio/cli@latest neolite delete
npx @biznetgio/cli@latest neolite-pro delete
npx @biznetgio/cli@latest elastic-storage delete
npx @biznetgio/cli@latest additional-ip delete
npx @biznetgio/cli@latest object-storage delete
npx @biznetgio/cli@latest object-storage bucket delete
npx @biznetgio/cli@latest object-storage object delete
npx @biznetgio/cli@latest neolite snapshot delete
npx @biznetgio/cli@latest neolite disk delete
npx @biznetgio/cli@latest keypair delete
Managing Server State
# NEO Metal: on / off / reset
npx @biznetgio/cli@latest metal set-state on
npx @biznetgio/cli@latest metal set-state offNEO Lite / Pro: start / stop / shutdown / suspend / resume / reset
npx @biznetgio/cli@latest neolite set-state start
npx @biznetgio/cli@latest neolite set-state stop
npx @biznetgio/cli@latest neolite-pro set-state shutdown
Object Storage Operations
# Credential management
npx @biznetgio/cli@latest object-storage credential list
npx @biznetgio/cli@latest object-storage credential create
npx @biznetgio/cli@latest object-storage credential update --active
npx @biznetgio/cli@latest object-storage credential delete Bucket operations
npx @biznetgio/cli@latest object-storage bucket list
npx @biznetgio/cli@latest object-storage bucket create --name my-bucket
npx @biznetgio/cli@latest object-storage bucket info
npx @biznetgio/cli@latest object-storage bucket usage
npx @biznetgio/cli@latest object-storage bucket set-acl --acl public-read
npx @biznetgio/cli@latest object-storage bucket delete Object operations
npx @biznetgio/cli@latest object-storage object list
npx @biznetgio/cli@latest object-storage object list
npx @biznetgio/cli@latest object-storage object info
npx @biznetgio/cli@latest object-storage object download
npx @biznetgio/cli@latest object-storage object url --expiry 3600
npx @biznetgio/cli@latest object-storage object copy
npx @biznetgio/cli@latest object-storage object move
npx @biznetgio/cli@latest object-storage object mkdir
npx @biznetgio/cli@latest object-storage object set-acl --acl private
npx @biznetgio/cli@latest object-storage object delete
Snapshot & Disk Management (NEO Lite / Pro)
# Snapshots
npx @biznetgio/cli@latest neolite snapshot create --cycle m
npx @biznetgio/cli@latest neolite snapshot list
npx @biznetgio/cli@latest neolite snapshot detail
npx @biznetgio/cli@latest neolite snapshot restore
npx @biznetgio/cli@latest neolite snapshot create-instance \
--product-id --cycle m --keypair-id --name "from-snap" \
--ssh-and-console-user myuser --console-password TestPass123
npx @biznetgio/cli@latest neolite snapshot delete
npx @biznetgio/cli@latest neolite snapshot products
npx @biznetgio/cli@latest neolite snapshot product Additional disks
npx @biznetgio/cli@latest neolite disk create \
--product-id --cycle m --neolite-account-id
npx @biznetgio/cli@latest neolite disk list
npx @biznetgio/cli@latest neolite disk detail
npx @biznetgio/cli@latest neolite disk upgrade --additional-size 20
npx @biznetgio/cli@latest neolite disk delete
npx @biznetgio/cli@latest neolite disk products
npx @biznetgio/cli@latest neolite disk product
Keypair Management
# Available for: metal, neolite, neolite-pro
npx @biznetgio/cli@latest keypair list
npx @biznetgio/cli@latest keypair create --name "my-key"
npx @biznetgio/cli@latest keypair import --name "my-key" --public-key "ssh-rsa AAAA..."
npx @biznetgio/cli@latest keypair delete
Upgrade & Scaling
# Upgrade neolite/neolite-pro storage
npx @biznetgio/cli@latest neolite upgrade-storage --disk-size 50
npx @biznetgio/cli@latest neolite-pro upgrade-storage --disk-size 100Change package (upgrade plan) β check options first
npx @biznetgio/cli@latest neolite change-package-options
npx @biznetgio/cli@latest neolite change-package --new-product-id Upgrade elastic storage
npx @biznetgio/cli@latest elastic-storage upgrade --size 100Change elastic storage package
npx @biznetgio/cli@latest elastic-storage change-package --new-product-id Upgrade object storage quota
npx @biznetgio/cli@latest object-storage upgrade-quota --add-quota 50Migrate neolite to pro β check options first
npx @biznetgio/cli@latest neolite migrate-to-pro-products
npx @biznetgio/cli@latest neolite migrate-to-pro --neolitepro-product-id
Rebuild / Reinstall OS
# Check available OS for rebuild
npx @biznetgio/cli@latest metal rebuild-os Rebuild
npx @biznetgio/cli@latest metal rebuild --os "ubuntu-22.04"
npx @biznetgio/cli@latest neolite rebuild --select-os "Ubuntu-20.04"
npx @biznetgio/cli@latest neolite-pro rebuild --select-os "Ubuntu-20.04"
Update & Rename
# Update metal label (max 16 chars)
npx @biznetgio/cli@latest metal update-label --label "new-label"Rename neolite/neolite-pro VM
npx @biznetgio/cli@latest neolite rename --name "new-name"
npx @biznetgio/cli@latest neolite-pro rename --name "new-name"Change keypair
npx @biznetgio/cli@latest neolite change-keypair --keypair-id
npx @biznetgio/cli@latest neolite-pro change-keypair --keypair-id
Additional IP Assignment
# List and create IPs
npx @biznetgio/cli@latest additional-ip list
npx @biznetgio/cli@latest additional-ip regions
npx @biznetgio/cli@latest additional-ip create --product-id --cycle mAssign IP to bare metal
npx @biznetgio/cli@latest additional-ip assign --metal-account-id
npx @biznetgio/cli@latest additional-ip assigns
npx @biznetgio/cli@latest additional-ip assignments
npx @biznetgio/cli@latest additional-ip assign-detail Unassign
npx @biznetgio/cli@latest additional-ip unassign
Detail & Info Commands
# Account details
npx @biznetgio/cli@latest metal detail
npx @biznetgio/cli@latest neolite detail
npx @biznetgio/cli@latest neolite-pro detail
npx @biznetgio/cli@latest elastic-storage detail
npx @biznetgio/cli@latest additional-ip detail
npx @biznetgio/cli@latest object-storage detail VM details
npx @biznetgio/cli@latest neolite vm-details
npx @biznetgio/cli@latest neolite-pro vm-details Server state
npx @biznetgio/cli@latest metal state OpenVPN config
npx @biznetgio/cli@latest metal openvpn
Destructive Actions - Use With Caution!
The following commands are destructive and cannot be undone. ALWAYS confirm with the user before running:
delete commands (server, VM, storage, IP, bucket, object, snapshot, disk, keypair)rebuild commands (reinstalls OS, wipes data)set-state off/shutdown/reset (may cause downtime)MCP Server Tools Reference
When using the MCP server, all endpoints are exposed as tools with naming convention . Examples:
| CLI Command | MCP Tool |
|-------------|----------|
| metal list | metal_list |
| metal detail 123 | metal_detail {account_id: 123} |
| metal set-state 123 on | metal_set_state {account_id: 123, state: "on"} |
| neolite create ... | neolite_create {product_id, cycle, ...} |
| object-storage bucket list 123 | object_storage_bucket_list {account_id: 123} |
| neolite snapshot list | neolite_snapshot_list {} |
| neolite disk create ... | neolite_disk_create {product_id, cycle, ...} |
| object-storage delete 123 | object_storage_delete {account_id: 123} |
Total: 131 tools available in the MCP server.
MCP server configuration for Claude Desktop / Claude Code:
{
"mcpServers": {
"biznetgio": {
"command": "npx",
"args": ["-y", "@biznetgio/mcp@latest"],
"env": {
"BIZNETGIO_API_KEY": "your_api_key_here"
}
}
}
}
Troubleshooting
| Error | Solution |
|-------|----------|
| Not logged in | Run biznetgio login (browser-based), or set BIZNETGIO_API_KEY env var |
| invalid JSON in ~/.biznetgio.json | Delete ~/.biznetgio.json and re-run biznetgio login |
| API key not set | Run biznetgio login, or set BIZNETGIO_API_KEY=xxx env var |
| API Error 401 | API key is invalid or expired β run biznetgio login again to refresh |
| API Error 404 | Resource not found, check the account_id |
| API Error 422 | Validation error β check password regex, label max 16 chars, required fields |
| API Error 500 | Server error β retry or check if the resource exists |
| No data found. | The list is empty, no resources of this type exist yet |
π Tips & Best Practices
| Error | Solution |
|-------|----------|
| Not logged in | Run biznetgio login (browser-based), or set BIZNETGIO_API_KEY env var |
| invalid JSON in ~/.biznetgio.json | Delete ~/.biznetgio.json and re-run biznetgio login |
| API key not set | Run biznetgio login, or set BIZNETGIO_API_KEY=xxx env var |
| API Error 401 | API key is invalid or expired β run biznetgio login again to refresh |
| API Error 404 | Resource not found, check the account_id |
| API Error 422 | Validation error β check password regex, label max 16 chars, required fields |
| API Error 500 | Server error β retry or check if the resource exists |
| No data found. | The list is empty, no resources of this type exist yet |