- Add scripts/install.sh for easy installation via curl - Auto-detects OS (linux, darwin, windows) and arch (amd64, arm64) - Supports version pinning: sh -s -- v1.2.3 - Installs to /usr/local/bin or ~/.local/bin as fallback - Updates release workflow to include install.sh in release assets - Adds README.md with installation documentation
167 lines
No EOL
3.8 KiB
Markdown
167 lines
No EOL
3.8 KiB
Markdown
# obm - OpenBoatMobile Infrastructure CLI
|
|
|
|
A CLI tool for deploying AI agents on cloud infrastructure with Terraform.
|
|
|
|
## Installation
|
|
|
|
### Quick Install (Linux/macOS)
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/openboatmobile/obm/main/scripts/install.sh | sh
|
|
```
|
|
|
|
Install a specific version:
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/openboatmobile/obm/main/scripts/install.sh | sh -s -- v1.2.3
|
|
```
|
|
|
|
### Manual Install
|
|
|
|
Download the latest release for your platform from [GitHub Releases](https://github.com/openboatmobile/obm/releases/latest):
|
|
|
|
| Platform | Architecture | Download |
|
|
|----------|-------------|----------|
|
|
| Linux | x86_64 (amd64) | `obm-linux-amd64.tar.gz` |
|
|
| Linux | ARM64 | `obm-linux-arm64.tar.gz` |
|
|
| macOS | Apple Silicon (arm64) | `obm-darwin-arm64.tar.gz` |
|
|
| Windows | x86_64 (amd64) | `obm-windows-amd64.zip` |
|
|
| Windows | ARM64 | `obm-windows-arm64.zip` |
|
|
|
|
**Linux/macOS:**
|
|
```bash
|
|
# Download and extract
|
|
curl -sL https://github.com/openboatmobile/obm/releases/latest/download/obm-linux-amd64.tar.gz | tar xz
|
|
# Or for ARM64:
|
|
# curl -sL https://github.com/openboatmobile/obm/releases/latest/download/obm-linux-arm64.tar.gz | tar xz
|
|
|
|
chmod +x obm
|
|
sudo mv obm /usr/local/bin/
|
|
```
|
|
|
|
**Windows (PowerShell):**
|
|
```powershell
|
|
# Download and extract
|
|
Invoke-WebRequest -Uri https://github.com/openboatmobile/obm/releases/latest/download/obm-windows-amd64.zip -OutFile obm.zip
|
|
Expand-Archive obm.zip
|
|
# Add to PATH as needed
|
|
```
|
|
|
|
### From Source
|
|
|
|
```bash
|
|
go build -o obm ./cmd/obm
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Interactive Mode (Default)
|
|
|
|
Run the interactive wizard to configure your deployment:
|
|
|
|
```bash
|
|
./obm deploy
|
|
```
|
|
|
|
The wizard will guide you through:
|
|
1. Agent framework selection (Hermes or OpenClaw)
|
|
2. Cloud provider (Hetzner or DigitalOcean)
|
|
3. Server configuration
|
|
4. Inference provider (Venice, OpenRouter, OpenAI, Anthropic, or Custom)
|
|
5. Optional: Tailscale VPN, Discord integration
|
|
|
|
### Non-Interactive Mode (CI/CD)
|
|
|
|
For automated deployments, use a YAML configuration file:
|
|
|
|
```bash
|
|
./obm deploy --config deploy.yaml
|
|
```
|
|
|
|
See `deploy.yaml.example` for a complete configuration reference.
|
|
|
|
## Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `deploy` | Deploy an AI agent (interactive or --config for CI/CD) |
|
|
| `validate` | Check configuration and API credentials |
|
|
| `status` | Show current infrastructure state |
|
|
| `destroy` | Tear down provisioned infrastructure |
|
|
| `version` | Print version |
|
|
| `help` | Show help message |
|
|
|
|
## Configuration File Format
|
|
|
|
The YAML configuration file supports the following structure:
|
|
|
|
```yaml
|
|
# Required: Agent framework
|
|
framework: hermes # or openclaw
|
|
|
|
# Required: Cloud provider
|
|
provider:
|
|
name: hetzner # or digitalocean
|
|
token: "your-api-token"
|
|
ssh:
|
|
names: ["my-ssh-key"] # Hetzner
|
|
# fingerprints: ["aa:bb:cc:dd"] # DigitalOcean
|
|
|
|
# Server configuration
|
|
server:
|
|
name: "my-agent"
|
|
location: "ash" # Hetzner: ash, fsn1, nbg1, hel1
|
|
type: "cpx21"
|
|
|
|
# Required: Inference provider
|
|
inference:
|
|
provider: venice # venice, openrouter, openai, anthropic, custom
|
|
api_key: "your-api-key"
|
|
primary_model: "zai-org-glm-5"
|
|
|
|
# Optional: Tailscale VPN
|
|
tailscale:
|
|
enabled: true
|
|
auth_key: "tskey-auth-..."
|
|
tailnet: "mytailnet"
|
|
|
|
# Optional: Discord integration
|
|
discord:
|
|
enabled: true
|
|
bot_token: ""
|
|
server_id: ""
|
|
```
|
|
|
|
## Example Workflows
|
|
|
|
### Local Development
|
|
|
|
```bash
|
|
# Interactive setup
|
|
./obm deploy
|
|
|
|
# Validate your .env file
|
|
./obm validate --env-file .env
|
|
```
|
|
|
|
### CI/CD Pipeline
|
|
|
|
```bash
|
|
# Create deploy.yaml from your secrets manager
|
|
# Then run non-interactive deployment
|
|
./obm deploy --config deploy.yaml
|
|
```
|
|
|
|
### GitOps Setup
|
|
|
|
1. Store `deploy.yaml` in your repository (use template with placeholders)
|
|
2. Use a secrets manager for sensitive values
|
|
3. In CI:
|
|
```bash
|
|
envsubst < deploy.yaml.template > deploy.yaml
|
|
./obm deploy --config deploy.yaml
|
|
```
|
|
|
|
## License
|
|
|
|
MIT |