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
Method 1: One-Click Binary Install (Recommended)
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:
- Detect OS and architecture (darwin/linux × amd64/arm64, windows × amd64/arm64)
- Resolve version:
--latestcalls GitHub API,--releaseuses explicit tag - Download archive:
hotplex-{os}-{arch}.tar.gz(unix) or.zip(windows) from GitHub Releases - Download
checksums.txtand verify SHA256 - Extract binary from archive and move to
$PREFIX/bin/hotplex - Check PATH — if install dir not in PATH, print shell-specific export command
- Run
hotplex versionto verify
Exit codes:
0— success1— 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)
| Flag | Argument | Description |
|---|---|---|
--latest | — | Auto-detect latest GitHub release via API |
--release TAG | vX.Y.Z | Download specific release |
--version TAG | vX.Y.Z | Alias for --release |
--prefix PATH | directory | Install prefix (default: /usr/local) |
--help | — | Show usage |
Dependencies: curl or wget (required), sha256sum or shasum (optional, for checksum)
Archive naming: hotplex-{os}-{arch}.tar.gz
hotplex-darwin-amd64.tar.gzhotplex-darwin-arm64.tar.gzhotplex-linux-amd64.tar.gzhotplex-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)
| Parameter | Type | Description |
|---|---|---|
-Latest | switch | Auto-detect latest GitHub release |
-Release | string | Download specific release (e.g. v1.3.0) |
-Prefix | string | Install directory (default: auto-detect) |
-Uninstall | switch | Remove binary and PATH entry |
-Help | switch | Show usage |
Archive naming: hotplex-windows-{arch}.zip
hotplex-windows-amd64.ziphotplex-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)
| Flag | Description |
|---|---|
--prefix PATH | Installation prefix (default: /usr/local) |
--purge | Also remove ~/.hotplex (config, data, PID files) |
--non-interactive | Skip confirmation prompt |
--help | Show usage |
Cleanup actions:
- Stop systemd/launchd service if running
- Kill gateway process from PID file
- Remove binary
- Print PATH cleanup hints for shell RC files
--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.
| Flag | Argument | Description |
|---|---|---|
--path PATH | directory | Target directory (default: ~/.local/bin) |
--force | — | Reinstall even if already installed with identical content |
--help | — | Show usage |
Behavior:
hotplexalready in PATH → updates in-place if content differs (no-op if identical, unless--force)hotplexnot 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
| Variable | Purpose | Generate |
|---|---|---|
HOTPLEX_ADMIN_TOKEN_1 | Admin API bearer token | openssl rand -base64 32 |
HOTPLEX_SECURITY_API_KEY_1 | Client auth key | openssl 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
| Service | Port | Protocol |
|---|---|---|
| Gateway | 8888 | WebSocket + HTTP(同时承载嵌入式 WebChat SPA,生产前端入口) |
| Admin API | 9999 | HTTP(/admin/health 健康检查) |
| WebChat dev | 3000 | HTTP(仅 make dev;生产环境 WebChat 由 :8888 提供) |
Data Directories
| Path | Purpose |
|---|---|
~/.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
| Symptom | Cause | Fix |
|---|---|---|
command not found: hotplex | Binary not in PATH | Add $PREFIX/bin to PATH, or re-run install |
curl: (22) 404 on download | No binary for this OS/arch in release | Check https://github.com/hrygo/hotplex/releases |
Checksum mismatch | Corrupted download | Re-run install; if persists, report issue |
GitHub API rate limit | Too many unauth API calls | Use --release <tag> instead of --latest |
Permission denied on /usr/local | Non-root user writing to system dir | Use sudo or --prefix ~/.local |
hotplex runs but won't start gateway | Missing secrets | Run hotplex onboard or set HOTPLEX_ADMIN_TOKEN_1 |
| Port 8888/9999 in use | Another process bound | Change gateway.addr / admin.addr in config |
| Windows: PATH not updated | Terminal not refreshed | Open 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.