spawn/ramnode/README.md
A a445ee142c
feat: Add Open Interpreter support for RamNode (#461)
Agent: gap-filler-ramnode-2

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-11 07:11:27 -08:00

153 lines
4.2 KiB
Markdown

# RamNode Cloud
Budget VPS cloud provider with OpenStack API compatibility and hourly billing.
## Overview
- **Provider**: [RamNode](https://www.ramnode.com/)
- **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
1. Go to [RamNode Cloud Control Panel](https://manage.ramnode.com/)
2. Navigate to: Cloud → API Users
3. Create or select an API user
4. Note your credentials:
- **Username**: Your API username
- **Password**: Your API password
- **Project ID**: Your cloud project ID
### Setting Credentials
**Option 1: Environment Variables**
```bash
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
bash <(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/ramnode/claude.sh)
```
### Run Aider
```bash
bash <(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/ramnode/aider.sh)
```
### Run Goose
```bash
bash <(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/ramnode/goose.sh)
```
## Configuration
### Environment Variables
- `RAMNODE_USERNAME` - Your RamNode API username
- `RAMNODE_PASSWORD` - Your RamNode API password
- `RAMNODE_PROJECT_ID` - Your cloud project ID
- `RAMNODE_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:
1. POST to `/v3/auth/tokens` with username/password/project
2. Receive `X-Subject-Token` header
3. 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](https://manage.ramnode.com/).
### 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
- ✅ Goose
- ✅ Open Interpreter
## Documentation
- [RamNode Documentation](https://www.ramnode.com/docs/)
- [OpenStack API Documentation](https://docs.openstack.org/api-quick-start/)
- [Cloud Control Panel](https://manage.ramnode.com/)