spawn/binarylane
A b0f924b511
fix: Prevent Python/shell injection via env vars and triple-quote strings (#102)
- Fix triple-quote injection in SSH keys (Scaleway, UpCloud), userdata
  (BinaryLane), init scripts (Civo, Kamatera), and GraphQL queries
  (RunPod) by passing data via stdin/json_escape instead of inline
  string interpolation
- Add input validation for all cloud provider env vars (region, type,
  plan, etc.) using validate_region_name/validate_resource_name to block
  shell metacharacters before they reach Python string interpolation
- Validate Modal image name as Python identifier to prevent code injection
- Validate numeric env vars (RAM, GPU count, disk size) across all providers

Affects: 19 cloud provider lib/common.sh files
Agent: security-auditor

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 10:22:39 -08:00
..
lib fix: Prevent Python/shell injection via env vars and triple-quote strings (#102) 2026-02-09 10:22:39 -08:00
aider.sh Add Genesis Cloud GPU provider 2026-02-08 06:02:48 +00:00
amazonq.sh Add Genesis Cloud GPU provider 2026-02-08 06:02:48 +00:00
claude.sh Add BinaryLane regional cloud provider (#40) 2026-02-07 21:51:02 -08:00
cline.sh Add Genesis Cloud GPU provider 2026-02-08 06:02:48 +00:00
codex.sh Add Genesis Cloud GPU provider 2026-02-08 06:02:48 +00:00
gemini.sh Add Genesis Cloud GPU provider 2026-02-08 06:02:48 +00:00
goose.sh Add BinaryLane regional cloud provider (#40) 2026-02-07 21:51:02 -08:00
gptme.sh Add Genesis Cloud GPU provider 2026-02-08 06:02:48 +00:00
interpreter.sh Add Genesis Cloud GPU provider 2026-02-08 06:02:48 +00:00
nanoclaw.sh Add Genesis Cloud GPU provider 2026-02-08 06:02:48 +00:00
openclaw.sh Add Genesis Cloud GPU provider 2026-02-08 06:02:48 +00:00
opencode.sh fix: Use robust OpenCode install method across all clouds (#48) 2026-02-07 23:02:18 -08:00
plandex.sh Add BinaryLane regional cloud provider (#40) 2026-02-07 21:51:02 -08:00
README.md Fix BinaryLane manifest: mark 10 existing scripts as implemented (#43) 2026-02-07 22:54:25 -08:00

BinaryLane Cloud Scripts

Deploy AI coding agents on BinaryLane's Australian cloud infrastructure.

Overview

BinaryLane is an Australian cloud provider offering simple VPS hosting with hourly billing. These scripts provision servers via the BinaryLane REST API and deploy various AI agents with OpenRouter integration.

Prerequisites

Usage

Interactive Mode

# Deploy Claude Code
bash binarylane/claude.sh

# Deploy Goose
bash binarylane/goose.sh

# Deploy Plandex
bash binarylane/plandex.sh

Non-Interactive Mode

Set environment variables for fully automated deployment:

export BINARYLANE_API_TOKEN="your-api-token"
export OPENROUTER_API_KEY="sk-or-v1-..."
export BINARYLANE_SERVER_NAME="my-agent-server"

# Optional: customize server configuration
export BINARYLANE_SIZE="std-2vcpu"      # default: std-1vcpu
export BINARYLANE_REGION="syd"           # default: syd (Sydney)
export BINARYLANE_IMAGE="ubuntu-24.04"   # default: ubuntu-24.04

bash binarylane/claude.sh

Available Scripts

Implemented

  • claude.sh - Claude Code (Anthropic's CLI agent)
  • goose.sh - Goose (Block's open-source agent)
  • plandex.sh - Plandex (AI coding agent for complex tasks)
  • openclaw.sh - OpenClaw (OpenRouter's agent framework)
  • nanoclaw.sh - NanoClaw (WhatsApp-based agent)
  • aider.sh - Aider (AI pair programming)
  • codex.sh - Codex CLI (OpenAI's agent)
  • interpreter.sh - Open Interpreter
  • gemini.sh - Gemini CLI
  • amazonq.sh - Amazon Q CLI
  • cline.sh - Cline
  • gptme.sh - gptme
  • opencode.sh - OpenCode

Configuration

Server Sizes

  • std-1vcpu - 1 vCPU, 2 GB RAM (default)
  • std-2vcpu - 2 vCPU, 4 GB RAM
  • std-4vcpu - 4 vCPU, 8 GB RAM

See full pricing: https://www.binarylane.com.au/pricing

Regions

  • syd - Sydney, Australia (default)
  • per - Perth, Australia
  • bne - Brisbane, Australia
  • mel - Melbourne, Australia

Billing

BinaryLane uses hourly billing prorated from monthly rates:

  • Charged from server creation to deletion
  • Example: AUD 50/month = ~AUD 0.0694/hour
  • Cancel anytime via destroy_server <SERVER_ID>

API Documentation

Full API reference: https://api.binarylane.com.au/reference/

Troubleshooting

Authentication fails

Server creation fails

SSH connection fails

  • Wait 30-60s for cloud-init to complete
  • Check firewall rules at BinaryLane dashboard
  • Verify SSH key is registered: curl -H "Authorization: Bearer $BINARYLANE_API_TOKEN" https://api.binarylane.com.au/v2/account/keys

Advanced Usage

Using the Common Library

#!/bin/bash
source binarylane/lib/common.sh

ensure_binarylane_token
ensure_ssh_key
create_server "my-custom-server"
run_server "$BINARYLANE_SERVER_IP" "echo hello"
destroy_server "$BINARYLANE_SERVER_ID"

List Running Servers

source binarylane/lib/common.sh
ensure_binarylane_token
list_servers

Security

  • API tokens stored in ~/.config/spawn/binarylane.json (chmod 600)
  • SSH keys auto-generated at ~/.ssh/id_ed25519
  • Temporary config files securely wiped on exit
  • OpenRouter API keys injected via environment variables

Remote Execution

These scripts support bash <(curl -fsSL URL) execution:

# Deploy Claude Code directly from GitHub
bash <(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/binarylane/claude.sh)