obm/README.md
MermaidMan 21f2bd3a9d feat: add curl|sh one-liner install script
- 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
2026-05-22 15:43:19 +00:00

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