mirror of
https://github.com/OpenRouterTeam/spawn.git
synced 2026-05-02 05:40:17 +00:00
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>
153 lines
4.2 KiB
Markdown
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/)
|