En desarrollo activo · testnet

API PRIMERO

Compatible con OpenAI. Drop-in.

Auth con JWT firmado por cartera. Los mismos SDK que ya usas. Tokens facturados en SPACE o USD. Llama, DeepSeek, Mixtral, Qwen — más visión, embeddings y voz.

Devs

Construye con space-os

Auth firmada por cartera, inferencia compatible con OpenAI, pagos on-chain, un Open Node Protocol. Los mismos SDK que ya usas — apuntando a nuestra red.

Inicio rápido

  1. Genera o usa una cartera EOA existente (MetaMask / ethers / viem).
  2. Solicita un nonce: GET /api/auth/nonce?address=0x...
  3. Firma el mensaje con tu cartera.
  4. Verifica: POST /api/auth/verify → JWT.
  5. Crea una clave API: POST /api/router/keys
  6. Llama a inferencia: POST https://spacerouter.ai/v1/chat/completions

Inferencia (SpaceRouter)

Compatible con OpenAI. Los mismos SDK que ya usas — solo cambia la base URL. SpaceRouter enruta la petición al proveedor GPU disponible más barato que soporte el modelo solicitado.

# curl
curl https://spacerouter.ai/v1/chat/completions \
  -H "Authorization: Bearer $SPACEROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "meta-llama/Llama-3.1-70B-Instruct",
    "messages": [{ "role": "user", "content": "Hello" }]
  }'
# python
from openai import OpenAI
client = OpenAI(
    base_url="https://spacerouter.ai/v1",
    api_key=os.environ["SPACEROUTER_API_KEY"],
)
resp = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V3",
    messages=[{"role": "user", "content": "Hello"}],
)
// typescript
import OpenAI from "openai";
const client = new OpenAI({
  baseURL: "https://spacerouter.ai/v1",
  apiKey: process.env.SPACEROUTER_API_KEY,
});
const res = await client.chat.completions.create({
  model: "Qwen/Qwen2.5-72B-Instruct",
  messages: [{ role: "user", content: "Hello" }],
});

Endpoints: /v1/chat/completions, /v1/completions, /v1/embeddings. Consulta el catálogo de modelos para ver lo disponible hoy.

Autenticación

Los agentes se autentican con la firma de una cartera EOA. Sin contraseñas. Sin claves API para auth — la cartera misma es la credencial.

// 1. Get nonce
GET https://test.app-api.spaceos.com/api/auth/nonce?address=0xYourWallet
→ { "message": "Sign this message to authenticate..." }

// 2. Sign & verify (EIP-191)
POST https://test.app-api.spaceos.com/api/auth/verify
{ "address": "0x...", "message": "...", "signature": "0x..." }
→ { "token": "eyJ..." }

// 3. Use JWT in all requests (7-day expiry)
Authorization: Bearer eyJ...

Claves API

Crea y rota claves de SpaceRouter vía la app-api. Hasta 10 claves activas por cartera.

POST https://test.app-api.spaceos.com/api/router/keys
Authorization: Bearer {jwt}
{ "name": "my-agent" }
→ { "key": "sk-...", "id": "..." }

// List models routed by SpaceRouter
GET https://test.app-api.spaceos.com/api/router/models

// Usage summary
GET https://test.app-api.spaceos.com/api/router/usage

Descubrimiento de agentes

Múltiples formatos de manifiesto para que los frameworks de agentes descubran space-os automáticamente.

AI Plugin Manifest

Formato de plugin de OpenAI (JSON)

/.well-known/ai-plugin.json

Skills Markdown

Documentación de integración completa (Markdown)

/SKILLS.md

API Skills

Guía rápida (Markdown)

/api/skills

API Skills JSON

Capacidades legibles por máquina

/api/skills.json

Pagos y créditos

Cada usuario autenticado obtiene una cartera proxy. Recarga con SPACE, USD.s, USDT.s o USDC.s en la EVM de space-os (chain 800000). Las tarifas de inferencia se liquidan desde este saldo.

// Get your proxy wallet address
GET https://test.app-api.spaceos.com/api/keys/proxy
→ { "proxyAddress": "0x..." }

// Check credit balance
GET https://test.app-api.spaceos.com/api/user
→ { "credits": { "balance": 10.50, "spend": 2.30 } }

// Top up (after sending tokens to proxy)
POST https://test.app-api.spaceos.com/api/user/topup
{ "paymentId": "tx_hash", "source": "space_token", "amountUsd": 10 }

Carteras

Cada usuario autenticado obtiene tres carteras, automáticamente:

Cartera conectada

Tu EOA externa (MetaMask, etc). Se usa para iniciar sesión.

Cartera proxy

Cartera EVM gestionada por el servidor en la cadena space-os. Sostiene tokens, paga la inferencia. Claves en KIS.

Cuenta nativa

Cuenta nativa space-os para staking, votación y gobernanza.

GET https://test.app-api.spaceos.com/api/keys/proxy   → { "proxyAddress": "0x..." }
GET https://test.app-api.spaceos.com/api/keys/native  → { "nativeAccount": "...", "publicKey": "..." }

Staking y nodos GPU

Haz stake de SPACE token para ganar yield, registrarte como proveedor GPU, o ambas cosas. Los multiplicadores de nivel componen con el APY base.

// Stake
POST /tx  { "method": "spaceos_stake", "params": ["0x...", "100.0000 SPACE"] }

// Check stake
POST /tx  { "method": "spaceos_getStake", "params": ["0x..."] }
→ { "stake": { "quantity": "100.0000 SPACE", "tier": "basic", "claimable": "1.5000 SPACE" } }

// Claim rewards
POST /tx  { "method": "spaceos_claim", "params": ["0x..."] }

El setup completo de proveedor con instalación de un comando para nodos GPU / CPU / Network está en /network.

Detalles de la cadena

space-os ejecuta una EVM integrada (Silkworm en WASM) sobre la cadena nativa basada en Antelope. Las llamadas de contrato EVM se ejecutan de forma determinista dentro del consenso Antelope — sin un conjunto de validadores aparte, sin puente light-client.

Red

SPACE OS EVM

Chain ID

800000

Precio de gas

150 gwei (fixed)

Tipo de tx

Legacy (type 0) only

Tiempo de bloque

~0.5s

Token nativo

SPACE (18 decimals)

RPC

testnet.evm.spaceos.com

Explorador

testnet.evm-explorer.spaceos.com

EIP-1559 no es compatible. Usa siempre transacciones legacy con gasPrice explícito.

Protocolo de nodo abierto

La red completa está especificada en NODE_PROTOCOL.md — roles, manifiestos de capacidad, escalera de niveles, scopes de capacidad, estados de presencia, gramática WebSocket, peer-RPC. Diseñado para que clientes de terceros puedan interoperar sin ninguno de nuestros servicios hospedados.

El white paper v0 cubre el protocolo en §3. Lee el libro blanco para el resumen anotado, o coge la spec del repo fuente.

Ejemplo completo

import { Wallet } from 'ethers';

const API = 'https://test.app-api.spaceos.com/api';
const ROUTER = 'https://spacerouter.ai';
const wallet = Wallet.createRandom();

// 1. Authenticate
const { message } = await fetch(`${API}/auth/nonce?address=${wallet.address}`).then(r => r.json());
const signature = await wallet.signMessage(message);
const { token } = await fetch(`${API}/auth/verify`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ address: wallet.address, message, signature })
}).then(r => r.json());

// 2. Get inference API key
const { key } = await fetch(`${API}/router/keys`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: 'my-agent' })
}).then(r => r.json());

// 3. Call inference
const res = await fetch(`${ROUTER}/v1/chat/completions`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${key}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    model: 'meta-llama/Llama-3.1-70B-Instruct',
    messages: [{ role: 'user', content: 'Hello!' }]
  })
}).then(r => r.json());

console.log(res.choices[0].message.content);
Documentación para Devs — SPACE OS · space-os