Skip to main content

Clean, modular CLI for Hack The Box Labs API

Project description

HTB CLI

A clean, modular command-line interface for the Hack The Box Labs API.

Features

  • Machines: List, spawn (by name!), stop, reset, submit flags, todo list, writeups
  • Challenges: Browse, start docker containers, download files, submit flags
  • Sherlocks: DFIR investigation challenges with multi-task support
  • VPN: Manage VPN connections and download configs
  • Seasons: Arena/competitive season support
  • Search: Global search across machines, challenges, and users

Installation

pipx install htb-terminal

To enable OS keyring storage:

pipx install "htb-terminal[auth]"

If a keyring backend isn’t available on your system, the CLI automatically falls back to the config file token at ~/.config/htb-cli/token.

Check if keyring is installed:

python -c "import keyring; print(keyring.__version__)"

If you already installed htb-terminal without extras:

pipx inject htb-terminal keyring

Setup

Get your API token from HTB App Token Settings.

# Recommended: store token securely (keyring if available)
htb auth set

# Option 2: Environment variable (overrides stored token)
export HTB_TOKEN='your-token-here'  # add to ~/.bashrc to persist

If keyring is unavailable, the token is stored in ~/.config/htb-cli/token with mode 0600.

Usage

# Quick status
htb status
htb whoami
htb search "linux"

# Auth
htb auth set
htb auth show
htb auth status
htb auth unset

# Machines (supports name or ID!)
htb machine list
htb machine list --retired
htb machine list --difficulty easy
htb machine list --sort name
htb machine list --search "gavel"
htb machine info Gavel
htb machine info 811
htb machine spawn Gavel              # By name
htb machine spawn 811                # By ID
htb machine active
htb machine achievement Gavel        # Shareable achievement URL
htb machine achievement              # Uses active machine
htb machine stop
htb machine reset
htb machine own 'flag'
htb machine unreleased
htb machine todo                     # Your todo list
htb machine add-todo Gavel           # Toggle todo (add/remove)
htb machine writeup Gavel            # Official writeup (VIP)

# Challenges
htb challenge list
htb challenge list --category web
htb challenge list --difficulty easy
htb challenge list --category forensics --difficulty easy --unsolved
htb challenge list --retired
htb challenge categories
htb challenge info "Reminiscent"
htb challenge active                 # Show running docker instance
htb challenge start "Reminiscent"
htb challenge stop "Reminiscent"
htb challenge download "Reminiscent"
htb challenge download "Reminiscent" -o ./downloads/
htb challenge own 'HTB{flag}' --challenge "Reminiscent"

# Sherlocks
htb sherlock list
htb sherlock info "Meerkat"
htb sherlock tasks "Meerkat"         # List questions
htb sherlock download "Meerkat"
htb sherlock download "Meerkat" -o ./downloads/
htb sherlock own "Meerkat" "answer" --task 1

# VPN
htb vpn status
htb vpn status labs
htb vpn status competitive
htb vpn connections
htb vpn servers                      # Defaults to labs
htb vpn servers --product competitive
htb vpn servers --product starting_point
htb vpn switch 123
htb vpn download 123                 # TCP by default
htb vpn download 123 --udp           # UDP variant
htb vpn download 123 -o ./downloads/

# Seasons/Arena
htb season list
htb season machines
htb season active
htb season rank                      # Current season
htb season rank 9                    # Specific season
htb season leaderboard --limit 20
htb season leaderboard 9 --limit 10
htb season own 'flag'

JSON Output

All commands support --raw / -r flag for JSON output:

# Get machine IP
htb machine active -r | jq '.info.ip'

# List machine names
htb machine list -r | jq '.data[].name'

# Script example
IP=$(htb machine active -r | jq -r '.info.ip')
nmap -sV $IP

API Reference

Full API docs: https://gubarz.github.io/unofficial-htb-api/

License

MIT

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

htb_terminal-1.2.1.tar.gz (23.6 kB view details)

Uploaded Source

Built Distribution

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

htb_terminal-1.2.1-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file htb_terminal-1.2.1.tar.gz.

File metadata

  • Download URL: htb_terminal-1.2.1.tar.gz
  • Upload date:
  • Size: 23.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for htb_terminal-1.2.1.tar.gz
Algorithm Hash digest
SHA256 c262a0f622a0049df644c7bc1d30ba7fc3c32fd65080fa2316415025f5680c30
MD5 71fe133c226d76359b1c8cf81a173c1d
BLAKE2b-256 7b9aad9e4ba2ef0e5ed4d21840b621d00318a99b5dc5d552088e6f4c042883fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for htb_terminal-1.2.1.tar.gz:

Publisher: publish.yml on Shadow21AR/htb-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file htb_terminal-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: htb_terminal-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 27.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for htb_terminal-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6da5cd2f80528a4bceeeb9164f1325415d5ccf47b797ab18e6fde7e5a2f1e99c
MD5 281d5abca4ff8659b6a110c1523fb26f
BLAKE2b-256 9858285c692fdc6e99092732f4ef2e456cbd6e45e657577896e722b4556e584e

See more details on using hashes here.

Provenance

The following attestation bundles were made for htb_terminal-1.2.1-py3-none-any.whl:

Publisher: publish.yml on Shadow21AR/htb-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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