Pay-per-use serverless compute with blockchain payments + CGI-style HTTP execution.
cargo install --path .Monetize your spare compute capacity:
# 1. Generate a key
os402 key derive
# 2. Start your server
os402 serve --owner 0xYourAddress
# 3. Create a CGI offer (HTTP-triggered serverless function)
os402 offer \
--exe ./my-api-handler \
--cgi \
--price-per-second 0.001 \
--upload http://localhost:3000
# Your function is now available at:
# http://localhost:3000/{offer_hash}.cgi/*Build MCP-compatible tools in ~30 lines of Rust:
// src/bin/my_tool.rs
use os402::mcp::{ToolBuilder, Limits};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Deserialize, JsonSchema)]
struct Input { name: String }
#[derive(Serialize, JsonSchema)]
struct Output { greeting: String }
fn main() {
ToolBuilder::<Input, Output>::new("hello", "A greeting tool")
.limits(Limits {
ram_mb: 64,
cpu_time_secs: 10,
wall_time_secs: 30,
network: false,
})
.run(|input| Ok(Output {
greeting: format!("Hello, {}!", input.name),
}));
}Deploy and call:
# Build and create offer ($0.001 per call)
cargo build --release --bin my_tool
os402 offer \
--exe ./target/release/my_tool \
--mcp \
--price 0.001 \
--upload https://your-server.com
# Call via MCP
os402 mcp call hello -a name=World --@ https://your-server.com
# {"greeting": "Hello, World!"}The --mcp flag auto-extracts name, description, schemas, and resource limits from your binary.
Use paid serverless functions with automatic micropayments:
# Option 1: Use os402 curl (drop-in curl replacement)
os402 curl -X POST https://server.com/{hash}.cgi/api/process \
-H "Content-Type: application/json" \
-d '{"data": "hello"}' \
--key @payment-key.txt
# Option 2: Standard curl with X-402-* convenience headers (local/trusted servers only!)
curl -X POST http://localhost:3000/{hash}.cgi/users/123 \
-H "X-402-Key: 0xYourPrivateKey" \
-H "X-402-Pay: USDC" \
-H "X-402-Max: 10.0" \
-d '{"action": "update"}'Security Note: X-402-Key header sends your raw private key over HTTP. Only use with localhost or fully trusted servers!
- HTTP request arrives at
/{offer_hash}.cgi/{path_info} - Request body becomes stdin, headers become environment variables
- Your executable processes the request in a sandboxed environment
- stdout becomes the HTTP response
- Payment happens automatically via x402 protocol (USDC on Base/Ethereum/Solana)
- Content-addressable caching: Same inputs = same task ID = free cache hits
- Cryptographically signed offers: Tamper-proof pricing and resource limits
- Sandboxed execution: Landlock filesystem isolation + CPU/RAM limits
- No platform fees: Direct peer-to-peer compute rental
os402 serve # Run compute server
os402 offer # Create signed offer (--mcp for AI tools, --cgi for HTTP)
os402 mcp call # Call MCP tools (os402 mcp call <tool> -a key=value)
os402 mcp serve # Run MCP gateway (for Claude, etc.)
os402 curl # x402-enabled curl (drop-in replacement with auto-payment)
os402 run # Execute remote task (batch-style)
os402 task # Manage tasks (health, list, status, stdout/stderr)
os402 sandbox # Test sandbox locally
os402 key # Key utilities (derive, address, sha256)
os402 config # Config management (show, init, schema)OS402 includes a drop-in curl replacement with automatic x402 payment handling:
# Basic request with payment
os402 curl https://paid-api.com/data --key @key.txt
# POST with JSON (auto-detected and pretty-printed)
os402 curl -X POST https://api.com/process \
-d '{"input": "data"}' \
--key @key.txt
# Payment preferences (filter by token/network)
os402 curl https://api.com/data \
--key @key.txt \
--pay "USDC" \
--max "10.0"
# Full curl compatibility (headers, auth, multipart, etc.)
os402 curl https://api.com/upload \
-F "file=@document.pdf" \
-H "Authorization: Bearer token" \
--key @key.txtBenefits:
- Automatic x402 payment negotiation
- Same flags as standard curl
- Max spend limits (
--max,--max "USDC:10.0") - Payment preference filters (
--pay "USDC@Base")
For situations where you want to use standard HTTP clients (curl, Postman, HTTPie, etc.) with a local or fully trusted server, OS402 supports convenience headers:
# All three headers
curl http://localhost:3000/{hash}.cgi/api/endpoint \
-H "X-402-Key: 0xYourPrivateKey" \
-H "X-402-Pay: USDC" \
-H "X-402-Max: 10.0" \
-d @request-data.json
# Minimal (just the key, daemon picks payment method)
curl http://localhost:3000/{hash}.cgi/process \
-H "X-402-Key: 0xabc123..." \
-F "file=@image.jpg"How it works:
- Daemon intercepts
X-402-*headers - Signs the x402 payment on your behalf using your private key
- Injects the proper
X-Paymentheader - Processes request normally through the paygate
Header formats:
X-402-Key: Raw hex private key (e.g.,0xabc123...)X-402-Pay: Payment preference (e.g.,USDCor{"USDC":["Base"]})X-402-Max: Spend limit (e.g.,10.0orUSDC:10.0orUSDC@Base:5.0)
- Your private key is sent in the HTTP header (plain text)
- NEVER use over untrusted networks or with remote servers
- ONLY use with
localhostor servers you fully control and trust - For production/remote usage, always use
os402 curlinstead
- MCP tool framework - Build AI tools in ~30 lines with ToolBuilder
- CGI-style HTTP execution - Request body → stdin, headers → env vars
- x402 curl replacement - Drop-in curl with automatic micropayments
- Content-addressable caching - Same inputs = free cache hits
- Cryptographically signed offers - Tamper-proof pricing
- Sandboxed execution - Landlock + CPU/RAM limits
- Multi-architecture support - Auto-detect from ELF binary
- Peer-to-peer - No platform fees, direct payments
# 1. MCP Tool for AI Agents ($0.001 per call)
os402 offer --exe ./my-tool --mcp --price 0.001 --upload http://server.com
# Access: os402 mcp call my-tool -a input=data --@ http://server.com
# 2. Paid API Handler
os402 offer --exe ./api-handler --cgi --price-per-second 0.001 --upload http://server.com
# Access: curl http://server.com/{hash}.cgi/users/123
# 3. Image Processing Service
os402 offer --exe ./image-processor --cgi --price-per-second 0.01 --upload http://server.com
# Access: curl -X POST http://server.com/{hash}.cgi/resize -d @image.jpg
# 4. Data Transformation Pipeline
os402 offer --exe ./transformer --cgi --price-per-second 0.005 --upload http://server.com
# Access: curl -X POST http://server.com/{hash}.cgi/transform -d @data.csvBuilt with the x402 payment protocol