When server destruction fails, users are left with a bare error message and no indication that they may still be billed for a running server. This adds dashboard URLs and clear warnings to destroy_server errors across 9 clouds (Hetzner, UpCloud, Contabo, Netcup, RamNode, Hostinger, HOSTKEY, OVH, Latitude). Also improves error messages for Koyeb (app creation, service deployment, deployment timeout, instance ID), GitHub Codespaces (creation failure, readiness timeout), and E2B (sandbox creation failure). Agent: ux-engineer Co-authored-by: A <6723574+louisgv@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| lib | ||
| aider.sh | ||
| amazonq.sh | ||
| claude.sh | ||
| cline.sh | ||
| codex.sh | ||
| continue.sh | ||
| gemini.sh | ||
| goose.sh | ||
| gptme.sh | ||
| interpreter.sh | ||
| kilocode.sh | ||
| nanoclaw.sh | ||
| openclaw.sh | ||
| opencode.sh | ||
| plandex.sh | ||
| README.md | ||
RamNode Cloud
Budget VPS cloud provider with OpenStack API compatibility and hourly billing.
Overview
- Provider: RamNode
- Pricing: Hourly billing starting at $0.006/hr (~$4.38/month for 1GB instance)
- API: Full OpenStack API compatibility
- Billing: Pay-as-you-go with $3 minimum cloud credit
- Regions: Multiple US and international locations
Authentication
RamNode uses OpenStack authentication with username, password, and project ID.
Getting Credentials
- Go to RamNode Cloud Control Panel
- Navigate to: Cloud → API Users
- Create or select an API user
- Note your credentials:
- Username: Your API username
- Password: Your API password
- Project ID: Your cloud project ID
Setting Credentials
Option 1: Environment Variables
export RAMNODE_USERNAME="your-username"
export RAMNODE_PASSWORD="your-password"
export RAMNODE_PROJECT_ID="your-project-id"
Option 2: Interactive Prompt
If credentials are not set, the script will prompt for them and save to ~/.config/spawn/ramnode.json.
Usage
Run Claude Code
bash <(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/ramnode/claude.sh)
Run Aider
bash <(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/ramnode/aider.sh)
Run Goose
bash <(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/ramnode/goose.sh)
Run NanoClaw
bash <(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/ramnode/nanoclaw.sh)
Configuration
Environment Variables
RAMNODE_USERNAME- Your RamNode API usernameRAMNODE_PASSWORD- Your RamNode API passwordRAMNODE_PROJECT_ID- Your cloud project IDRAMNODE_SERVER_NAME- Server name (optional, will prompt if not set)RAMNODE_FLAVOR- Instance flavor (optional, defaults to interactive picker)OPENROUTER_API_KEY- OpenRouter API key (optional, will use OAuth if not set)
Instance Flavors
RamNode offers various instance sizes. Common options:
- 1GB - 1 vCPU, 1GB RAM (~$0.006/hr)
- 2GB - 1 vCPU, 2GB RAM (~$0.012/hr)
- 4GB - 2 vCPU, 4GB RAM (~$0.024/hr)
The script will show available flavors interactively if RAMNODE_FLAVOR is not set.
Features
- ✅ Full OpenStack API compatibility
- ✅ Hourly billing (billed by the second)
- ✅ SSH key management via API
- ✅ Cloud-init support for automated setup
- ✅ Multiple instance sizes
- ✅ Low minimum cost ($3 cloud credit)
Pricing
RamNode uses hourly billing with per-second granularity:
- 1GB instance: ~$0.006/hr = ~$4.38/month
- 2GB instance: ~$0.012/hr = ~$8.76/month
- 4GB instance: ~$0.024/hr = ~$17.52/month
Billing is deducted from your cloud credit balance. Minimum deposit: $3.
Technical Details
API Endpoints
- Identity:
https://openstack.ramnode.com:5000/v3 - Compute:
https://openstack.ramnode.com:8774/v2.1 - Network:
https://openstack.ramnode.com:9696/v2.0
Authentication
RamNode uses OpenStack Keystone v3 authentication with password grant:
- POST to
/v3/auth/tokenswith username/password/project - Receive
X-Subject-Tokenheader - Use token in subsequent API calls
Server Creation
Uses OpenStack Compute API:
- Creates server with Ubuntu 24.04 image
- Injects cloud-init via
user_data(base64 encoded) - Attaches SSH key for root access
- Waits for IPv4 address assignment
Troubleshooting
Insufficient Cloud Credit
Error: "Insufficient cloud credit"
Fix: Add at least $3 in cloud credit through the RamNode Client Area.
Authentication Failed
Error: "Authentication failed"
Fix: Verify credentials at Cloud Control Panel → API Users. Ensure username, password, and project ID are correct.
SSH Connection Timeout
Error: "SSH connectivity check failed"
Fix: Wait a few minutes for the server to fully boot and configure cloud-init. If the issue persists, check that your SSH key was properly registered.
Implemented Agents
- ✅ Claude Code
- ✅ Aider
- ✅ Amazon Q
- ✅ Cline
- ✅ Codex
- ✅ Continue
- ✅ Gemini CLI
- ✅ Goose
- ✅ gptme
- ✅ Kilocode
- ✅ NanoClaw
- ✅ Open Interpreter
- ✅ OpenClaw
- ✅ OpenCode
- ✅ Plandex