New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

hetzner-cli

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hetzner-cli

Unified CLI and Node.js library for Hetzner Robot API (dedicated servers) and Cloud API

latest
Source
npmnpm
Version
2.4.0
Version published
Maintainers
1
Created
Source

hetzner-cli logo

hetzner-cli

npm version License: MIT

Website · npm · GitHub

Unified CLI and Node.js library for Hetzner's three APIs:

  • Robot API — dedicated server management (servers, IPs, firewall, storage boxes, etc.)
  • Cloud API — cloud infrastructure (servers, networks, volumes, load balancers, etc.)
  • Server Auction — public server auction browser with rich filtering (no auth required)

Note: This is an unofficial, community-built CLI. The official Hetzner Cloud CLI is hcloud. See how they differ.

Table of Contents

Comparison with Official CLI

Hetzner maintains an official Cloud CLI called hcloud, written in Go. This project (hetzner-cli) is a separate, community-built tool. Here's how they compare:

Featurehcloud (official)hetzner-cli (this project)
API coverageCloud onlyCloud + Robot + Server Auction
LanguageGo (single binary)TypeScript / Node.js
InstallHomebrew, apt, binary downloadnpm install -g hetzner-cli
Library usageCLI onlyAlso usable as a Node.js library (import { HetznerRobotClient } from 'hetzner-cli')
Interactive modeNoYes (hetzner interactive)
LLM referenceNoYes (hetzner reference — structured output for LLM context)

When to use hcloud: You only need Cloud API access and prefer a native binary with no runtime dependency.

When to use hetzner-cli: You manage dedicated servers (Robot), browse the server auction, or want a single tool that covers all three Hetzner APIs. Also useful if you need a Node.js library for automation scripts.

Installation

# Global CLI
npm install -g hetzner-cli

# Or as a project dependency
npm install hetzner-cli

Requires Node.js >= 18.0.0.

Quick Start

# Set up Robot API credentials (interactive)
hetzner auth login

# List your dedicated servers
hetzner server list

# Set up Cloud API context
hetzner cloud context create production
hetzner cloud context use production

# List your cloud servers
hetzner cloud server list

# Browse the server auction (no login needed)
hetzner auction list --max-price 60 --ecc --disk-type nvme --sort price

Authentication

Robot API Credentials

The Robot API uses a web service username and password (separate from your main Hetzner login).

To create credentials:

  • Go to robot.hetzner.com
  • Navigate to Settings > Web service settings
  • Create a new web service user

Credential resolution order (first match wins):

PriorityMethodDetails
1CLI flags--user <username> --password <password>
2Environment variablesHETZNER_ROBOT_USER and HETZNER_ROBOT_PASSWORD
3System keychainStored by hetzner auth login (uses native keytar)
4Config file~/.hetzner-cli/config.json
5Interactive promptAsks for username/password at runtime

Secure password passing (keeps password out of shell history):

# From stdin
echo "$PASSWORD" | hetzner server list -u myuser -p -

# With 1Password
op read "op://vault/item/password" | hetzner server list -u $(op read "op://vault/item/user") -p -

# From environment
export HETZNER_ROBOT_USER=myuser
export HETZNER_ROBOT_PASSWORD=mypassword
hetzner server list

Cloud API Token

The Cloud API uses a bearer token from the Hetzner Cloud Console.

To create a token:

Token resolution order:

PriorityMethodDetails
1CLI flag--token <token> per command
2Environment variableHETZNER_CLOUD_TOKEN
3Active contextSet via hetzner cloud context use <name>
# Set up a named context (saves token)
hetzner cloud context create production -t hcloud_xxxxxx

# Switch contexts
hetzner cloud context use production

# Or use inline
hetzner cloud server list --token hcloud_xxxxxx

Auction API (No Auth)

The auction commands use Hetzner's public JSON endpoint. No credentials required.

hetzner auction list

CLI Reference

Global Options

-u, --user <username>       Robot API username
-p, --password <password>   Robot API password (use "-" to read from stdin)
--json                      Output raw JSON instead of formatted tables
-V, --version               Show version number
-h, --help                  Show help for any command

All commands support --json for machine-readable output. Pipe to jq for filtering:

hetzner server list --json | jq '.[].server.server_ip'
hetzner auction list --max-price 50 --json | jq '.[].id'

Robot Commands

Commands for managing Hetzner dedicated servers via the Robot API.

Authentication

hetzner auth login           # Interactive credential setup
hetzner auth logout          # Clear saved credentials
hetzner auth status          # Show current auth source
hetzner auth test            # Verify credentials work

Servers

hetzner server list                       # List all servers
hetzner server get <server>               # Server details (by ID or IP)
hetzner server rename <server> <name>     # Rename a server

Reset

hetzner reset options [server]            # Show available reset types
hetzner reset execute <servers...>        # Reset servers
  -t, --type <type>                       #   sw|hw|man|power|power_long (default: sw)
  -i, --interactive                       #   Select type interactively
  -y, --yes                               #   Skip confirmation

Boot Configuration

hetzner boot status <server>              # Show all boot config

# Rescue system
hetzner boot rescue activate <server> [-o linux|linuxold|vkvm] [-a 64|32] [-k <fingerprints...>]
hetzner boot rescue deactivate <server>
hetzner boot rescue last <server>         # Show last rescue (includes password)

# Linux installation
hetzner boot linux options <server>       # Show available distributions
hetzner boot linux activate <server> -d <dist> [-a 64|32] [-l en] [-k <fingerprints...>]
hetzner boot linux deactivate <server>

IP & Networking

hetzner ip list                           # List all IPs
hetzner ip get <ip>                       # IP details
hetzner ip update <ip> [--warnings true|false] [--hourly <mb>] [--daily <mb>] [--monthly <gb>]
hetzner ip mac get|generate|delete <ip>   # Separate MAC management

hetzner subnet list                       # List subnets
hetzner subnet get <subnet>

hetzner failover list                     # List failover IPs
hetzner failover get <ip>
hetzner failover switch <failover-ip> <target-server-ip> [-y]
hetzner failover delete <ip> [-y]

hetzner rdns list                         # List reverse DNS entries
hetzner rdns get <ip>
hetzner rdns set <ip> <ptr>               # Create/update
hetzner rdns delete <ip>

SSH Keys

hetzner key list                          # List all keys
hetzner key get <fingerprint>
hetzner key add <name> [-f <path>] [-d <data>]
hetzner key rename <fingerprint> <name>
hetzner key delete <fingerprint> [-y]

Firewall

hetzner firewall get <server>             # Show config
hetzner firewall enable|disable <server>
hetzner firewall delete <server> [-y]     # Delete all rules

hetzner firewall template list
hetzner firewall template get|delete <id>

vSwitch

hetzner vswitch list
hetzner vswitch get <id>
hetzner vswitch create <name> <vlan>
hetzner vswitch update <id> [-n <name>] [-v <vlan>]
hetzner vswitch delete <id> [-y] [--date <YYYY-MM-DD>]
hetzner vswitch add-server <vswitch-id> <server>
hetzner vswitch remove-server <vswitch-id> <server>

Storage Box

hetzner storagebox list                   # (alias: storage)
hetzner storagebox get <id>
hetzner storagebox update <id> [-n <name>] [--webdav|--samba|--ssh|--external|--zfs true|false]
hetzner storagebox reset-password <id>

# Snapshots
hetzner storagebox snapshot list|create|delete|revert <box-id> [<name>]

# Subaccounts
hetzner storagebox subaccount list <box-id>
hetzner storagebox subaccount create <box-id> <home-directory> [--samba|--ssh|--webdav|--external|--readonly true|false]
hetzner storagebox subaccount delete <box-id> <username> [-y]

Traffic, WoL, Cancellation, Ordering

hetzner traffic query [-i <ips...>] [-s <subnets...>] [--from <date>] [--to <date>] [-t day|month|year]
hetzner wol status|send <server>
hetzner cancel status|request|revoke <server>
hetzner order products|market|transactions
hetzner order transaction <id>

Interactive Mode

hetzner interactive   # or: hetzner i

Menu-driven interface for common operations (list servers, reset, rescue, failover, SSH keys).

Cloud Commands

All cloud commands live under hetzner cloud <resource> <action>. Add --token <token> to any command to override the active context.

Context Management

hetzner cloud context create <name> [-t <token>]
hetzner cloud context use <name>
hetzner cloud context delete <name>
hetzner cloud context list
hetzner cloud context active

Cloud Servers

hetzner cloud server list [-l <label-selector>] [-n <name>] [-s <sort>] [--status <status>]
hetzner cloud server describe <id>
hetzner cloud server create --name <name> --type <type> --image <image> [--location <loc>] [--ssh-key <keys...>]
hetzner cloud server delete <id> [-y]
hetzner cloud server update <id> [--name <name>]

# Power management
hetzner cloud server poweron|poweroff|reboot|reset|shutdown <id>

# Maintenance
hetzner cloud server rebuild <id> --image <image>
hetzner cloud server change-type <id> --type <type> [--upgrade-disk]
hetzner cloud server enable-rescue <id> [--type linux64] [--ssh-key <ids...>]
hetzner cloud server disable-rescue <id>
hetzner cloud server enable-backup|disable-backup <id>
hetzner cloud server create-image <id> [--description <desc>]
hetzner cloud server attach-iso|detach-iso <id> [--iso <iso>]
hetzner cloud server reset-password <id>

# Networking
hetzner cloud server set-rdns <id> --ip <ip> --dns-ptr <ptr>
hetzner cloud server attach-to-network <id> --network <id> [--ip <ip>]
hetzner cloud server detach-from-network <id> --network <id>

# Protection & labels
hetzner cloud server enable-protection|disable-protection <id>
hetzner cloud server add-label <id> <key=value>
hetzner cloud server remove-label <id> <key>
hetzner cloud server request-console <id>

Other Cloud Resources

Each follows the pattern: hetzner cloud <resource> list|describe|create|delete

hetzner cloud network list|describe|create|delete
hetzner cloud firewall list|describe|create|delete
hetzner cloud floating-ip list|describe|create|delete
hetzner cloud primary-ip list|describe|create|delete
hetzner cloud volume list|describe|create|delete
hetzner cloud load-balancer list|describe|create|delete
hetzner cloud image list|describe|update|delete
hetzner cloud ssh-key list|describe|create|delete
hetzner cloud certificate list|describe|create|delete
hetzner cloud placement-group list|describe|create|delete

# Read-only reference data
hetzner cloud datacenter list|describe
hetzner cloud location list|describe
hetzner cloud server-type list|describe
hetzner cloud load-balancer-type list|describe
hetzner cloud iso list|describe

Auction Commands

Browse Hetzner's server auction — no authentication required. Data is fetched from the public endpoint and filtered/sorted client-side.

hetzner auction list [options]    # List and filter auction servers
hetzner auction show <id>         # Detailed view of a single server

Auction List — Full Option Reference

Price filters:

--min-price <n>          # Minimum monthly price
--max-price <n>          # Maximum monthly price
--max-hourly-price <n>   # Maximum hourly price
--max-setup-price <n>    # Maximum setup fee
--no-setup-fee           # Only free setup (shorthand for --max-setup-price 0)
--fixed-price            # Only fixed-price servers
--auction-only           # Only auction servers (price decreases over time)

Hardware filters:

--cpu <text>             # CPU model substring, case-insensitive (e.g. "Ryzen", "EPYC", "i7-6700")
--min-cpu-count <n>      # Minimum CPU/socket count
--max-cpu-count <n>      # Maximum CPU/socket count
--min-ram <gb>           # Minimum RAM in GB
--max-ram <gb>           # Maximum RAM in GB
--ecc                    # Only ECC RAM servers

Disk filters:

--min-disk-size <gb>     # Minimum total disk capacity (sum of all drives)
--max-disk-size <gb>     # Maximum total disk capacity
--min-disk-count <n>     # Minimum number of physical drives
--max-disk-count <n>     # Maximum number of physical drives
--disk-type <type>       # Must have this disk type: nvme, sata, hdd

Network & feature filters:

--datacenter <text>      # Datacenter substring, case-insensitive (e.g. "FSN", "HEL1-DC2", "NBG")
--min-bandwidth <mbit>   # Minimum bandwidth in Mbit/s
--gpu                    # Only GPU servers
--inic                   # Only Intel NIC servers
--highio                 # Only high I/O servers
--specials <text>        # Any special feature, substring match (e.g. "GPU", "ECC")
--search <text>          # Free-text search across description

Sorting:

--sort <field>           # Sort field (default: price). Choices:
                         #   price, hourly, setup, ram, disk, disk_count,
                         #   cpu, cpu_count, datacenter, bandwidth, next_reduce
--desc                   # Sort descending (default: ascending)

Output:

--currency <EUR|USD>     # Price currency (default: EUR)
--limit <n>              # Limit number of results
--json                   # Output raw JSON

Auction Examples

# Browse all servers, cheapest first
hetzner auction list

# Cheap AMD EPYC with NVMe + ECC in Helsinki
hetzner auction list --cpu epyc --disk-type nvme --ecc --datacenter HEL --sort price

# GPU servers under 150 EUR
hetzner auction list --gpu --max-price 150

# High-RAM servers with lots of drives
hetzner auction list --min-ram 256 --min-disk-count 4 --sort ram --desc

# Cheapest 10 fixed-price NVMe servers
hetzner auction list --fixed-price --disk-type nvme --sort price --limit 10

# Auction servers about to drop in price
hetzner auction list --auction-only --sort next_reduce --limit 20

# Export to JSON for scripting
hetzner auction list --max-price 60 --ecc --json | jq '.[].id'

Built-in Reference

For a complete, structured reference optimized for LLM context windows:

hetzner reference         # or: hetzner ref

This prints every command, option, and example in a structured plaintext format designed for easy parsing by language models. Pipe it into your LLM context:

hetzner reference | pbcopy                    # Copy to clipboard (macOS)
hetzner reference > /tmp/hetzner-ref.txt      # Save to file

Library Usage

Robot Client

import { HetznerRobotClient } from 'hetzner-cli';

const client = new HetznerRobotClient('username', 'password');

// List servers
const servers = await client.listServers();

// Get server details
const { server } = await client.getServer(123456);
console.log(server.server_name, server.server_ip);

// Reset a server
await client.resetServer(123456, 'sw');

// Activate rescue mode
const rescue = await client.activateRescue(123456, 'linux', 64, ['ssh-fingerprint']);
console.log('Password:', rescue.rescue.password);

// Linux installation
await client.activateLinux(123456, 'Debian-1210-bookworm-amd64-base', 64, 'en', ['ssh-fingerprint']);

// Failover
await client.switchFailover('1.2.3.4', '5.6.7.8');

// SSH keys
const keys = await client.listSshKeys();
await client.createSshKey('my-key', 'ssh-rsa AAAA...');

// Storage box
const boxes = await client.listStorageBoxes();
await client.createStorageBoxSnapshot(123);

// Firewall
const fw = await client.getFirewall(123456);
await client.updateFirewall(123456, 'active');

Cloud Client

import { HetznerCloudClient } from 'hetzner-cli';

const client = new HetznerCloudClient('hcloud_xxxxxx');

// List servers
const { servers } = await client.listServers();

// Create a server
const result = await client.createServer({
  name: 'web1',
  server_type: 'cx22',
  image: 'ubuntu-22.04',
  location: 'fsn1',
});

// Networks
const { networks } = await client.listNetworks();
await client.createNetwork({ name: 'my-net', ip_range: '10.0.0.0/16' });

// Volumes
const { volumes } = await client.listVolumes();
await client.createVolume({ name: 'data', size: 50, location: 'fsn1' });

// Load Balancers
const { load_balancers } = await client.listLoadBalancers();

// Firewalls, Floating IPs, SSH Keys, Images, etc.
const { firewalls } = await client.listFirewalls();
const { floating_ips } = await client.listFloatingIps();
const { ssh_keys } = await client.listSshKeys();

Auction Client

import { fetchAuctionServers, filterAuctionServers, sortAuctionServers } from 'hetzner-cli';

// Fetch all servers (EUR pricing)
const { server: servers } = await fetchAuctionServers('EUR');

// Filter: cheap ECC NVMe servers in Helsinki
const filtered = filterAuctionServers(servers, {
  maxPrice: 60,
  ecc: true,
  diskType: 'nvme',
  datacenter: 'HEL',
});

// Sort by price ascending
const sorted = sortAuctionServers(filtered, 'price', false);

console.log(`Found ${sorted.length} servers`);
for (const s of sorted) {
  console.log(`${s.id}: ${s.cpu} | ${s.ram_size}GB | €${s.price}/mo | ${s.datacenter}`);
}

Type Exports

import type {
  // Robot types
  Server, ServerDetails, Reset, ResetType,
  RescueConfig, LinuxConfig,
  IP, Subnet, Failover, Rdns,
  SshKey, Firewall, FirewallRule,
  VSwitch, StorageBox,
  Traffic, Wol,
  ServerProduct, ServerMarketProduct,

  // Cloud types
  CloudServer, CloudAction, CloudFirewall, CloudFirewallRule,
  CloudSshKey, Network, NetworkSubnet, NetworkRoute,
  FloatingIp, PrimaryIp, Volume, Image,
  LoadBalancer, LoadBalancerType, LoadBalancerTarget, LoadBalancerService,
  Certificate, PlacementGroup, Datacenter, Location,
  ServerType, ISO, Labels,

  // Auction types
  AuctionServer, AuctionDiskData, AuctionIpPrice,
  AuctionFilterOptions, AuctionResponse,
} from 'hetzner-cli';

API Reference

HetznerRobotClient Methods

Servers

MethodDescription
listServers()List all servers
getServer(id)Get server details
updateServerName(id, name)Rename server
getCancellation(id)Get cancellation status
cancelServer(id, date?, reasons?)Cancel server
revokeCancellation(id)Revoke cancellation

Reset

MethodDescription
listResetOptions()List all reset options
getResetOptions(id)Get reset options for server
resetServer(id, type?)Reset server (sw/hw/man/power/power_long)

Boot

MethodDescription
getBootConfig(id)Get all boot configs
activateRescue(id, os, arch?, keys?)Activate rescue
deactivateRescue(id)Deactivate rescue
getLastRescue(id)Get last rescue activation
getLinux(id)Get available Linux distributions
activateLinux(id, dist, arch?, lang?, keys?)Activate Linux install
deactivateLinux(id)Deactivate Linux
activateVnc(id, dist, arch?, lang?)Activate VNC install
activateWindows(id, dist, lang?)Activate Windows install

IPs & Networking

MethodDescription
listIps()List all IPs
getIp(ip)Get IP details
updateIp(ip, warnings?, hourly?, daily?, monthly?)Update IP settings
generateIpMac(ip)Generate separate MAC
deleteIpMac(ip)Delete MAC
listSubnets()List subnets
getSubnet(ip)Get subnet details
listFailovers()List failover IPs
getFailover(ip)Get failover details
switchFailover(ip, targetIp)Switch routing
deleteFailoverRouting(ip)Delete routing
listRdns()List reverse DNS
getRdns(ip)Get rDNS for IP
createRdns(ip, ptr)Create/update rDNS
deleteRdns(ip)Delete rDNS

SSH Keys

MethodDescription
listSshKeys()List SSH keys
getSshKey(fingerprint)Get key details
createSshKey(name, data)Add SSH key
updateSshKey(fingerprint, name)Rename key
deleteSshKey(fingerprint)Delete key

Firewall

MethodDescription
getFirewall(id)Get firewall config
updateFirewall(id, status, rules?)Update firewall
deleteFirewall(id)Delete all rules
listFirewallTemplates()List templates
getFirewallTemplate(id)Get template
deleteFirewallTemplate(id)Delete template

vSwitch

MethodDescription
listVSwitches()List vSwitches
getVSwitch(id)Get details
createVSwitch(name, vlan)Create
updateVSwitch(id, name?, vlan?)Update
deleteVSwitch(id, date?)Delete
addServerToVSwitch(vswitchId, serverId)Add server
removeServerFromVSwitch(vswitchId, serverId)Remove server

Storage Box

MethodDescription
listStorageBoxes()List storage boxes
getStorageBox(id)Get details
updateStorageBox(id, ...)Update settings
resetStorageBoxPassword(id)Reset password
listStorageBoxSnapshots(id)List snapshots
createStorageBoxSnapshot(id)Create snapshot
deleteStorageBoxSnapshot(id, name)Delete snapshot
revertStorageBoxSnapshot(id, name)Revert to snapshot
listStorageBoxSubaccounts(id)List subaccounts
createStorageBoxSubaccount(id, ...)Create subaccount
deleteStorageBoxSubaccount(id, username)Delete subaccount

Traffic, WoL, Ordering

MethodDescription
getTraffic(ips, subnets, from, to, type)Query traffic
getWol(id)Get WoL status
sendWol(id)Send Wake-on-LAN
listServerProducts()List products
listServerMarketProducts()List auction servers
getServerTransaction(id)Get transaction
listServerTransactions()List transactions

HetznerCloudClient Methods

Context Management

FunctionDescription
createContext(name, token)Create a named context (stores token)
useContext(name)Switch active context
deleteContext(name)Delete a context
listContexts()List all contexts
getActiveContext()Get active context name
resolveToken(opts)Resolve token (flag > env > context)

Servers

MethodDescription
listServers(params?)List cloud servers
getServer(id)Get server details
createServer(data)Create a server
deleteServer(id)Delete a server
updateServer(id, data)Update server name/labels
poweronServer(id)Power on
poweroffServer(id)Hard power off
rebootServer(id)Soft reboot
resetServer(id)Hard reset
shutdownServer(id)Graceful shutdown
rebuildServer(id, image)Rebuild with image
changeServerType(id, type, disk?)Resize server
enableRescue(id, type?, keys?)Enable rescue mode
disableRescue(id)Disable rescue mode
enableBackup(id)Enable backups
disableBackup(id)Disable backups
createImage(id, desc?, type?)Create snapshot
attachIso(id, iso)Attach ISO
detachIso(id)Detach ISO
resetPassword(id)Reset root password
setRdns(id, ip, ptr)Set reverse DNS
changeProtection(id, opts)Change protection
requestConsole(id)Get VNC console URL
attachToNetwork(id, network, ip?)Attach to network
detachFromNetwork(id, network)Detach from network

Networks

MethodDescription
listNetworks()List networks
getNetwork(id)Get network details
createNetwork(data)Create a network
deleteNetwork(id)Delete a network
addSubnet(id, subnet)Add subnet
deleteSubnet(id, subnet)Delete subnet
addRoute(id, route)Add route
deleteRoute(id, route)Delete route
changeIpRange(id, range)Change IP range

Firewalls, IPs, Volumes, Load Balancers

MethodDescription
listFirewalls() / getFirewall(id) / createFirewall(data) / deleteFirewall(id)Firewall CRUD
listFloatingIps() / getFloatingIp(id) / createFloatingIp(data) / deleteFloatingIp(id)Floating IP CRUD
listPrimaryIps() / getPrimaryIp(id) / createPrimaryIp(data) / deletePrimaryIp(id)Primary IP CRUD
listVolumes() / getVolume(id) / createVolume(data) / deleteVolume(id)Volume CRUD
listLoadBalancers() / getLoadBalancer(id) / createLoadBalancer(data) / deleteLoadBalancer(id)Load Balancer CRUD
listImages() / getImage(id) / updateImage(id, data) / deleteImage(id)Image management
listSshKeys() / getSshKey(id) / createSshKey(data) / deleteSshKey(id)SSH key CRUD
listCertificates() / getCertificate(id) / createCertificate(data) / deleteCertificate(id)Certificate CRUD
listPlacementGroups() / getPlacementGroup(id) / createPlacementGroup(data) / deletePlacementGroup(id)Placement group CRUD

Reference Data (Read-Only)

MethodDescription
listDatacenters() / getDatacenter(id)Datacenter info
listLocations() / getLocation(id)Location info
listServerTypes() / getServerType(id)Server type info
listLoadBalancerTypes() / getLoadBalancerType(id)LB type info
listIsos(params?) / getIso(id)ISO image info

Auction Functions

FunctionDescription
fetchAuctionServers(currency?)Fetch all servers from public API (EUR or USD)
filterAuctionServers(servers, filters)Apply filter criteria to server array
sortAuctionServers(servers, field, desc)Sort servers by field

Configuration Files

FilePurpose
~/.hetzner-cli/config.jsonRobot API credentials (file-based fallback)
~/.hetzner-cli/cloud-contexts.jsonCloud API contexts and tokens

System keychain (via keytar):

KeyValue
Servicehetzner-cli
Accountcredentials

Environment variables:

VariablePurpose
HETZNER_ROBOT_USERRobot API username
HETZNER_ROBOT_PASSWORDRobot API password
HETZNER_CLOUD_TOKENCloud API token (overrides active context)

Development

npm install          # Install dependencies
npm run build        # Compile TypeScript
npm test             # Run tests (740 tests across 12 suites)
npm run test:coverage  # Run with coverage report
npm run test:watch   # Watch mode

Project Structure

src/
├── cli.ts                     # CLI entry point
├── index.ts                   # Library exports
├── shared/
│   ├── config.ts              # Credential management
│   ├── formatter.ts           # Colors, tables, output formatting
│   ├── helpers.ts             # asyncAction, output, confirmAction
│   └── reference.ts           # Built-in reference documentation
├── robot/
│   ├── client.ts              # Robot API client (HetznerRobotClient)
│   ├── types.ts               # Robot type definitions
│   ├── formatter.ts           # Robot-specific formatters
│   └── commands/              # CLI command modules (17 files)
├── cloud/
│   ├── client.ts              # Cloud API client
│   ├── context.ts             # Context/token management
│   ├── types.ts               # Cloud type definitions
│   ├── formatter.ts           # Cloud-specific formatters
│   ├── helpers.ts             # Cloud action wrappers
│   └── commands/              # CLI command modules (17 files)
└── auction/
    ├── client.ts              # Auction fetch/filter/sort
    ├── formatter.ts           # Auction formatters
    └── commands.ts            # Auction CLI commands

License

MIT

Keywords

hetzner

FAQs

Package last updated on 14 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts