Installation
Install, authenticate, and configure the sh0 CLI.
Install Script
The recommended way to install. The script detects your OS and architecture, downloads the correct binary from GitHub Releases, and places it in /usr/local/bin/sh0.
curl -fsSL https://get.sh0.dev | bashAfter installation, verify with:
sh0 --versionManual Download
Download the binary directly from the download page or from GitHub Releases:
curl -Lo sh0 https://github.com/zerosuite-inc/sh0/releases/latest/download/sh0-linux-x86_64
chmod +x sh0
sudo mv sh0 /usr/local/bin/Available binary names:
sh0-linux-x86_64sh0-linux-aarch64sh0-darwin-x86_64sh0-darwin-aarch64
Supported Platforms
| OS | Architecture | Status |
|---|---|---|
| Linux | x86_64 | Supported |
| Linux | aarch64 (ARM64) | Supported |
| macOS | x86_64 (Intel) | Supported |
| macOS | aarch64 (Apple Silicon) | Supported |
Authentication
The CLI supports two authentication methods. Use interactive login for local development and environment variables for CI/CD.
sh0 login
Interactive login prompts for your server URL, email, and password. The session token is stored in ~/.sh0/config.toml.
sh0 login --url https://panel.example.comIf you omit --url, the CLI uses the URL from your existing config or defaults to http://localhost:9000.
Environment Variables
For CI/CD and automation, set these environment variables. They take precedence over config.toml.
export SH0_API_URL="https://panel.example.com"
export SH0_API_TOKEN="sh0_tok_..."Config File
The CLI stores configuration in ~/.sh0/config.toml. This file is created automatically by sh0 login.
api_url = "https://panel.example.com"
token = "sh0_tok_..."
default_app = "myapi"
output = "table" # or "json"All fields are optional except api_url and token. The default_app lets you omit the app name in commands like sh0 logs.
Verify Installation
After installing and authenticating, verify everything works:
sh0 whoamiExpected output:
Server: https://panel.example.com
User: [email protected]
Role: admin600 permissions (owner read/write only). Do not commit it to version control.