HotPlex Installation Reference

July 23, 2026 · View on GitHub

Machine-readable installation guide for AI agents and automation tools. For human-friendly instructions, see README.md.

Quick Decision Tree

User's OS?
├── macOS / Linux → install.sh
│   ├── Has Go 1.26+ AND wants source build? → `make quickstart`
│   └── Wants pre-built binary? → install.sh --latest
│       └── No sudo? → add --prefix ~/.local
├── Windows → install.ps1
│   └── Download only (no source build on Windows)
│       ├── Admin? → installs to $env:ProgramFiles\HotPlex
│       └── Non-admin? → installs to $HOME\.hotplex\bin
└── Docker (Experimental, unverified) → docker compose up -d

Methods

Download pre-built binary from GitHub Releases. No Go toolchain required.

macOS / Linux:

# Latest release, system-wide (requires sudo)
curl -fsSL https://raw.githubusercontent.com/hrygo/hotplex/main/scripts/install.sh | sudo bash -s -- --latest

# Latest release, user-local (no sudo)
curl -fsSL https://raw.githubusercontent.com/hrygo/hotplex/main/scripts/install.sh | bash -s -- --latest --prefix ~/.local

# Specific version
curl -fsSL https://raw.githubusercontent.com/hrygo/hotplex/main/scripts/install.sh | bash -s -- --release v1.3.0

Windows (PowerShell 5.1+):

# Download and run
Invoke-WebRequest -Uri https://raw.githubusercontent.com/hrygo/hotplex/main/scripts/install.ps1 -OutFile install.ps1
.\install.ps1 -Latest

# Specific version + custom path
.\install.ps1 -Release v1.3.0 -Prefix C:\Tools\HotPlex

What the install script does:

  1. Detect OS and architecture (darwin/linux × amd64/arm64, windows × amd64/arm64)
  2. Resolve version: --latest calls GitHub API, --release uses explicit tag
  3. Download archive: hotplex-{os}-{arch}.tar.gz (unix) or .zip (windows) from GitHub Releases
  4. Download checksums.txt and verify SHA256
  5. Extract binary from archive and move to $PREFIX/bin/hotplex
  6. Check PATH — if install dir not in PATH, print shell-specific export command
  7. Run hotplex version to verify

Exit codes:

  • 0 — success
  • 1 — error (missing deps, bad tag, download fail, checksum mismatch)

Next: After installation, see Next Steps for source clone and environment setup.

Method 2: Build from Source

Requires Go 1.26+, pnpm, Node.js 22+.

git clone https://github.com/hrygo/hotplex.git
cd hotplex
make quickstart    # check tools + build + test
hotplex install    # install binary to PATH (default: ~/.local/bin)

Binary output: bin/hotplex-{os}-{arch}

hotplex install copies the freshly built binary into a PATH directory. If hotplex is already on PATH, it updates in-place; otherwise it installs to ~/.local/bin (overridable with --path) and appends that directory to your shell RC (~/.zshrc / ~/.bashrc) or Windows User PATH. Use --force to reinstall even when the existing binary matches.

Method 3: System Service

After any install method above:

hotplex service install              # user-level (no root)
sudo hotplex service install --level system  # system-wide
hotplex service start
hotplex service status
hotplex service logs -f

Service managers: systemd (Linux), launchd (macOS), SCM (Windows).

Method 4: Docker (Experimental)

Note: Docker deployment is unverified. Use at your own risk.

cp configs/env.example .env
# Edit .env with secrets (see Configuration section)
docker compose up -d

Script Reference

install.sh (macOS / Linux)

FlagArgumentDescription
--latestAuto-detect latest GitHub release via API
--release TAGvX.Y.ZDownload specific release
--version TAGvX.Y.ZAlias for --release
--prefix PATHdirectoryInstall prefix (default: /usr/local)
--helpShow usage

Dependencies: curl or wget (required), sha256sum or shasum (optional, for checksum)

Archive naming: hotplex-{os}-{arch}.tar.gz

  • hotplex-darwin-amd64.tar.gz
  • hotplex-darwin-arm64.tar.gz
  • hotplex-linux-amd64.tar.gz
  • hotplex-linux-arm64.tar.gz

Binary inside archive: hotplex-{os}-{arch}

Permissions: Writing to /usr/* prefixes requires sudo. Use --prefix ~/.local for user-local install.

PATH handling: Script checks if $PREFIX/bin is in $PATH. If not, prints the appropriate command for current shell:

  • bash: export PATH="$PREFIX/bin:$PATH"~/.bashrc
  • zsh: export PATH="$PREFIX/bin:$PATH"~/.zshrc
  • fish: fish_add_path $PREFIX/bin~/.config/fish/config.fish

install.ps1 (Windows)

ParameterTypeDescription
-LatestswitchAuto-detect latest GitHub release
-ReleasestringDownload specific release (e.g. v1.3.0)
-PrefixstringInstall directory (default: auto-detect)
-UninstallswitchRemove binary and PATH entry
-HelpswitchShow usage

Archive naming: hotplex-windows-{arch}.zip

  • hotplex-windows-amd64.zip
  • hotplex-windows-arm64.zip

Binary inside archive: hotplex-windows-{arch}.exe

Default prefix:

  • Admin: $env:ProgramFiles\HotPlex
  • Non-admin: $HOME\.hotplex\bin

PATH handling: Automatically adds install directory to User PATH (non-admin) or Machine PATH (admin) via [Environment]::SetEnvironmentVariable.

Uninstall: .\install.ps1 -Uninstall removes binary from all standard locations and cleans PATH.

uninstall.sh (macOS / Linux)

FlagDescription
--prefix PATHInstallation prefix (default: /usr/local)
--purgeAlso remove ~/.hotplex (config, data, PID files)
--non-interactiveSkip confirmation prompt
--helpShow usage

Cleanup actions:

  1. Stop systemd/launchd service if running
  2. Kill gateway process from PID file
  3. Remove binary
  4. Print PATH cleanup hints for shell RC files
  5. --purge: remove ~/.hotplex/ entirely

hotplex install (built-in subcommand)

For source-build users or in-place binary updates. Not a download — copies the currently running binary (or the one just built) into a PATH directory.

FlagArgumentDescription
--path PATHdirectoryTarget directory (default: ~/.local/bin)
--forceReinstall even if already installed with identical content
--helpShow usage

Behavior:

  • hotplex already in PATH → updates in-place if content differs (no-op if identical, unless --force)
  • hotplex not in PATH → copies to target dir and appends to shell RC (~/.zshrc / ~/.bashrc) or Windows User PATH

Configuration (Post-Install)

After binary installation, run the setup wizard, then verify with diagnostics:

hotplex onboard     # interactive setup: secrets, worker, platforms, .env, agent templates
hotplex doctor      # verify the full environment (run after every onboard)

onboard is idempotent — re-running detects existing config and offers to keep, fully reset, or reconfigure selected steps. Its final verify step covers 8 core categories; hotplex doctor is the complete 10-category check (adds optional TTS and the worker.claude_auto_mode capability probe).

Required Secrets

VariablePurposeGenerate
HOTPLEX_ADMIN_TOKEN_1Admin API bearer tokenopenssl rand -base64 32
HOTPLEX_SECURITY_API_KEY_1Client auth keyopenssl rand -base64 32

Config File

Default: configs/config.yaml (override with -c path or --dev for dev preset)

gateway:
  addr: "localhost:8888"       # WebSocket gateway

admin:
  enabled: true
  addr: "localhost:9999"       # Admin API

db:
  path: "data/hotplex.db"      # SQLite database

security:
  api_keys: []                 # Client auth keys

worker:
  max_lifetime: 24h
  idle_timeout: 60m

messaging:
  worker_type: "claude_code"
  stt_provider: "local"        # local (custom command), feishu (cloud), feishu+local
  stt_local_cmd: "python3 ~/.hotplex/scripts/stt_server.py"
  tts_enabled: true
  tts_provider: "edge+moss"    # edge (Edge TTS), moss (local CPU), edge+moss (fallback)
  tts_voice: "zh-CN-XiaoxiaoNeural"

Default Ports

ServicePortProtocol
Gateway8888WebSocket + HTTP(同时承载嵌入式 WebChat SPA,生产前端入口)
Admin API9999HTTP(/admin/health 健康检查)
WebChat dev3000HTTP(仅 make dev;生产环境 WebChat 由 :8888 提供)

Data Directories

PathPurpose
~/.hotplex/User config root
~/.hotplex/agent-configs/Agent personality files (SOUL.md, AGENTS.md, etc.)
~/.hotplex/.pids/PID files for gateway processes
data/SQLite database (configurable via db.path)
logs/Application logs

Verification Checklist

After installation, verify each step:

# 1. Binary exists and is executable
hotplex version
# Expected: "hotplex vX.Y.Z" with Go version and OS/arch

# 2. Config is valid
hotplex config validate

# 3. Full environment diagnostics — the authoritative check
hotplex doctor
# Expected: 0 failures across 27 checks / 10 categories.
# Auto-resolve: `hotplex doctor --fix`; detail: `hotplex doctor -v`.

# 4. Gateway starts
hotplex gateway start -d    # daemon mode
hotplex gateway status      # check running

# 5. Health check (Admin API on :9999)
curl http://localhost:9999/admin/health

# 6. WebSocket + WebChat (Gateway on :8888)
#   ws://localhost:8888  (needs API key)
#   open http://localhost:8888  for the embedded WebChat UI

Next Steps

After binary installation and verification, complete the full development environment:

Clone Source Repository

Access to the source repo provides reference configs, agent templates, and diagnostic tools:

git clone https://github.com/hrygo/hotplex.git
cd hotplex

Environment Setup

Run the interactive setup skill for guided configuration (available in Claude Code, Copilot CLI, Gemini CLI, and other skill-capable AI assistants):

/hotplex-setup

Covers: TTS (MOSS-TTS-Nano) environment, STT dependencies, audio pipeline, platform-specific troubleshooting.

CLI alternative — if not using a skill-capable assistant:

hotplex onboard       # interactive setup wizard
hotplex doctor        # verify all dependencies

Star the Repository

Agent instruction: Ask the user for consent before starring. Do not execute without confirmation.

One command to star:

gh repo star hrygo/hotplex

Troubleshooting

SymptomCauseFix
command not found: hotplexBinary not in PATHAdd $PREFIX/bin to PATH, or re-run install
curl: (22) 404 on downloadNo binary for this OS/arch in releaseCheck https://github.com/hrygo/hotplex/releases
Checksum mismatchCorrupted downloadRe-run install; if persists, report issue
GitHub API rate limitToo many unauth API callsUse --release <tag> instead of --latest
Permission denied on /usr/localNon-root user writing to system dirUse sudo or --prefix ~/.local
hotplex runs but won't start gatewayMissing secretsRun hotplex onboard or set HOTPLEX_ADMIN_TOKEN_1
Port 8888/9999 in useAnother process boundChange gateway.addr / admin.addr in config
Windows: PATH not updatedTerminal not refreshedOpen new PowerShell/CMD window

Release Artifact Format

GitHub Release assets follow this naming convention:

hotplex-{os}-{arch}.tar.gz  (unix)
hotplex-{os}-{arch}.zip     (windows)
checksums.txt

Platforms: darwin/amd64, darwin/arm64, linux/amd64, linux/arm64, windows/amd64, windows/arm64

Binary inside archive: hotplex-{os}-{arch}[.exe]

Checksum format (sha256sum compatible):

{hash}  dist/hotplex-{os}-{arch}.tar.gz
{hash}  dist/hotplex-{os}-{arch}.zip

Upgrade

Re-run the install script with the desired version. The binary is overwritten in-place:

# Upgrade to latest (overwrites existing binary)
curl -fsSL https://raw.githubusercontent.com/hrygo/hotplex/main/scripts/install.sh | bash -s -- --latest

# Upgrade to specific version
curl -fsSL https://raw.githubusercontent.com/hrygo/hotplex/main/scripts/install.sh | bash -s -- --release v1.4.0

Config and data in ~/.hotplex/ are preserved across upgrades.