# 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