Skip to content
Back to osModa Spawn

Card snapshot

spawn.os.moda · 2026-06-14 00:45:07 UTC · d74f9a1ae2bd4060f1440ba05508ffb5e6e379b620b939c4612e990dc0892466

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "name": "osModa Spawn",
  "description": "Spawn dedicated AI-managed servers. Pay with USDC via x402. v1.3.6 (2026-05-08): chat persistence finally works \u2014 verified against real OpenClaw frame shapes. Was: v1.3.3's extractor looked for `payload.data.text` but production OpenClaw emits `payload.data.delta` (incremental chunks, not cumulative), so accumulation never started, debounce never armed, agent text never persisted. Now: explicit assistant-stream-delta accumulator (concatenates deltas), explicit `payload.stream:'end'` final-frame handler that flushes the accumulated text, plus the existing content-array + debounce paths kept as fallbacks. Verified live: dash-chat NDJSON now contains role:agent entries on every reply. v1.3.5 (2026-05-08): v1 API-key delivery actually wires credentials now. Was: 14-line SSH command joined with `&&` produced invalid `if [ ... ]; then && curl` syntax \u2014 the credential POST succeeded but the agent-binding PATCH never ran, leaving orders with credential in store but agent.enabled=false \u2192 every chat returned `agent_error`. Topimones bug 2026-05-08 root cause. Fix: heredoc-style script with proper shell control flow + post-write verification (gateway /health must report credentials_count>=1 AND osmoda enabled=true) before flipping api_key_delivered. v1.3.4: wedge auto-restart race fix \u2014 finalize() no longer re-establishes auto_restart_status:'timeout' if the recovery path cleared the wedge during the SSH wait. Was: heartbeat resumes mid-SSH \u2192 recovery deletes attempts+status \u2192 SSH times out \u2192 finalize writes status='timeout' onto a clean state, leaving order in `auto_restart_status:'timeout', auto_restart_attempts:0` (impossible-looking contradiction). Now: finalize checks if recovery already won the race and no-ops. v1.3.3: chat persistence really works now. v1.3.2's Method 1 + Method 3 patterns weren't matching real production frame shapes \u2014 inspection of the actual dash-chat NDJSON showed zero agent text entries, just user msgs + tool-use bubbles. Now: defensive multi-shape text extractor pulls candidate text from every plausible field, accumulates longest, persists on 5 s debounce \u2014 fires regardless of which lifecycle event the runtime ends with. Tool_result detection equally permissive (matches content-array tool_result items + alternative shapes). Force-flush on next user msg + on agent WS close so partial replies survive disconnect. Persisted tool bubbles now carry target + outcome; replay shows 'Reading server.js \u00b7 187 lines' instead of bare badges. Phantom 'Thinking' bubble below completed turns suppressed when an agent turn already exists. v1.3.2: chat persistence + replay fixes. v1.3.1: wedge-detector hardening + chat_responsive signal + reseller spawn-log. v1.3.0: unified server-event plane + universal request receipts.",
  "url": "https://spawn.os.moda",
  "version": "1.3.6",
  "protocols": [
    "A2A/1.0",
    "ERC-8004"
  ],
  "protocol": "A2A",
  "capabilities": {
    "x402": true,
    "streaming": true,
    "websocket": true,
    "modular_runtime": true,
    "oauth_credentials": true,
    "idempotency": true,
    "token_lifecycle": true,
    "structured_errors": true,
    "install_failure_visibility": true,
    "install_watchdog_minutes": 25,
    "provision_progress_callbacks": true,
    "spec_driven_development": true,
    "spec_kit_version": "v0.8.4",
    "network_mode": "testnet",
    "dashboard_streaming_chat": true,
    "streaming_chat_protocol": "sse",
    "agent_restart_endpoint": true,
    "agent_responsiveness_probe": true,
    "pam_self_heal": true,
    "ssh_auto_recovery": true,
    "wedged_server_detector": true,
    "unified_event_stream": true,
    "universal_request_receipts": true,
    "truthful_has_api_key": true
  },
  "runtimes": [
    {
      "name": "claude-code",
      "display_name": "Claude Code",
      "recommended": true,
      "supported_auth_types": [
        "oauth",
        "api_key"
      ],
      "default_models": [
        "claude-opus-4-7",
        "claude-sonnet-4-6",
        "claude-haiku-4-5"
      ],
      "description": "Anthropic's official Claude CLI. Accepts both OAuth (Claude Pro / Max subscription, flat monthly fee) and API key (pay-per-token). Choose OAuth for heavy daily use; API key for predictable per-call billing."
    },
    {
      "name": "openclaw",
      "display_name": "OpenClaw",
      "supported_auth_types": [
        "api_key"
      ],
      "default_models": [
        "claude-sonnet-4-6"
      ],
      "description": "OpenClaw multi-runtime CLI (BYOK). API key only \u2014 does not accept Claude Pro OAuth tokens. Pick this for the openclaw plugin ecosystem or non-Anthropic providers."
    }
  ],
  "skills": [
    {
      "id": "spawn-test",
      "name": "Spawn Solo Server",
      "description": "1 agent, light tasks \u2014 2 vCPU, 4GB RAM, 40GB SSD",
      "endpoint": "https://spawn.os.moda/api/v1/spawn/test",
      "method": "POST",
      "price": {
        "amount": "$29",
        "currency": "USDC",
        "protocol": "x402",
        "accepts": [
          {
            "network": "eip155:84532",
            "chainId": 84532,
            "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
            "payTo": "0xb78476F8e3b9D3f7A0Da8315272B00b26293535a"
          },
          {
            "network": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
            "chainId": "devnet",
            "asset": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
            "payTo": "DFbWWDweU9jqaJSrEpyBCrWGZyDkaoDayak9EZA3QnYA"
          }
        ]
      },
      "inputSchema": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "enum": [
              "eu-central",
              "eu-north",
              "us-east",
              "us-west"
            ],
            "default": "eu-central"
          },
          "ssh_key": {
            "type": "string",
            "description": "SSH public key (ed25519, RSA, or ECDSA). Injected into the provisioned server's authorized_keys."
          },
          "runtime": {
            "type": "string",
            "enum": [
              "claude-code",
              "openclaw"
            ],
            "default": "claude-code",
            "description": "Agent runtime engine. claude-code supports OAuth + API key; openclaw supports API key only."
          },
          "default_model": {
            "type": "string",
            "description": "Initial default model for the osmoda agent (e.g. claude-opus-4-6, claude-sonnet-4-6)."
          },
          "credentials": {
            "type": "array",
            "description": "Pre-seed up to 8 credentials. Encrypted server-side on first boot.",
            "maxItems": 8,
            "items": {
              "type": "object",
              "required": [
                "provider",
                "type",
                "secret"
              ],
              "properties": {
                "label": {
                  "type": "string",
                  "maxLength": 60
                },
                "provider": {
                  "type": "string",
                  "enum": [
                    "anthropic",
                    "openai",
                    "openrouter",
                    "deepseek"
                  ]
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "oauth",
                    "api_key"
                  ]
                },
                "secret": {
                  "type": "string",
                  "minLength": 10,
                  "maxLength": 4096,
                  "description": "Raw secret. Will be AES-256-GCM encrypted at rest on the spawned server."
                }
              }
            }
          },
          "ai_provider": {
            "type": "string",
            "enum": [
              "anthropic",
              "openai"
            ],
            "default": "anthropic",
            "description": "Legacy one-credential shortcut. Prefer credentials[]."
          },
          "api_key": {
            "type": "string",
            "description": "Legacy one-credential shortcut. Prefer credentials[]."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "order_id": {
            "type": "string",
            "description": "UUID of the created order."
          },
          "api_token": {
            "type": "string",
            "description": "osk_-prefixed Bearer token. Shown once; store securely."
          },
          "plan": {
            "type": "string"
          },
          "price_usd": {
            "type": "number"
          },
          "server_ip": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "status_url": {
            "type": "string"
          },
          "chat_url": {
            "type": "string"
          },
          "ssh": {
            "type": "string"
          }
        }
      }
    },
    {
      "id": "spawn-starter",
      "name": "Spawn Pro Server",
      "description": "2-4 agents, real work \u2014 4 vCPU, 8GB RAM, 80GB SSD",
      "endpoint": "https://spawn.os.moda/api/v1/spawn/starter",
      "method": "POST",
      "price": {
        "amount": "$99",
        "currency": "USDC",
        "protocol": "x402",
        "accepts": [
          {
            "network": "eip155:84532",
            "chainId": 84532,
            "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
            "payTo": "0xb78476F8e3b9D3f7A0Da8315272B00b26293535a"
          },
          {
            "network": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
            "chainId": "devnet",
            "asset": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
            "payTo": "DFbWWDweU9jqaJSrEpyBCrWGZyDkaoDayak9EZA3QnYA"
          }
        ]
      },
      "inputSchema": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "enum": [
              "eu-central",
              "eu-north",
              "us-east",
              "us-west"
            ],
            "default": "eu-central"
          },
          "ssh_key": {
            "type": "string",
            "description": "SSH public key (ed25519, RSA, or ECDSA). Injected into the provisioned server's authorized_keys."
          },
          "runtime": {
            "type": "string",
            "enum": [
              "claude-code",
              "openclaw"
            ],
            "default": "claude-code",
            "description": "Agent runtime engine. claude-code supports OAuth + API key; openclaw supports API key only."
          },
          "default_model": {
            "type": "string",
            "description": "Initial default model for the osmoda agent (e.g. claude-opus-4-6, claude-sonnet-4-6)."
          },
          "credentials": {
            "type": "array",
            "description": "Pre-seed up to 8 credentials. Encrypted server-side on first boot.",
            "maxItems": 8,
            "items": {
              "type": "object",
              "required": [
                "provider",
                "type",
                "secret"
              ],
              "properties": {
                "label": {
                  "type": "string",
                  "maxLength": 60
                },
                "provider": {
                  "type": "string",
                  "enum": [
                    "anthropic",
                    "openai",
                    "openrouter",
                    "deepseek"
                  ]
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "oauth",
                    "api_key"
                  ]
                },
                "secret": {
                  "type": "string",
                  "minLength": 10,
                  "maxLength": 4096,
                  "description": "Raw secret. Will be AES-256-GCM encrypted at rest on the spawned server."
                }
              }
            }
          },
          "ai_provider": {
            "type": "string",
            "enum": [
              "anthropic",
              "openai"
            ],
            "default": "anthropic",
            "description": "Legacy one-credential shortcut. Prefer credentials[]."
          },
          "api_key": {
            "type": "string",
            "description": "Legacy one-credential shortcut. Prefer credentials[]."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "order_id": {
            "type": "string",
            "description": "UUID of the created order."
          },
          "api_token": {
            "type": "string",
            "description": "osk_-prefixed Bearer token. Shown once; store securely."
          },
          "plan": {
            "type": "string"
          },
          "price_usd": {
            "type": "number"
          },
          "server_ip": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "status_url": {
            "type": "string"
          },
          "chat_url": {
            "type": "string"
          },
          "ssh": {
            "type": "string"
          }
        }
      }
    },
    {
      "id": "spawn-developer",
      "name": "Spawn Team Server",
      "description": "5-10 agents, heavy loads \u2014 8 vCPU, 16GB RAM, 160GB SSD",
      "endpoint": "https://spawn.os.moda/api/v1/spawn/developer",
      "method": "POST",
      "price": {
        "amount": "$199",
        "currency": "USDC",
        "protocol": "x402",
        "accepts": [
          {
            "network": "eip155:84532",
            "chainId": 84532,
            "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
            "payTo": "0xb78476F8e3b9D3f7A0Da8315272B00b26293535a"
          },
          {
            "network": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
            "chainId": "devnet",
            "asset": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
            "payTo": "DFbWWDweU9jqaJSrEpyBCrWGZyDkaoDayak9EZA3QnYA"
          }
        ]
      },
      "inputSchema": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "enum": [
              "eu-central",
              "eu-north",
              "us-east",
              "us-west"
            ],
            "default": "eu-central"
          },
          "ssh_key": {
            "type": "string",
            "description": "SSH public key (ed25519, RSA, or ECDSA). Injected into the provisioned server's authorized_keys."
          },
          "runtime": {
            "type": "string",
            "enum": [
              "claude-code",
              "openclaw"
            ],
            "default": "claude-code",
            "description": "Agent runtime engine. claude-code supports OAuth + API key; openclaw supports API key only."
          },
          "default_model": {
            "type": "string",
            "description": "Initial default model for the osmoda agent (e.g. claude-opus-4-6, claude-sonnet-4-6)."
          },
          "credentials": {
            "type": "array",
            "description": "Pre-seed up to 8 credentials. Encrypted server-side on first boot.",
            "maxItems": 8,
            "items": {
              "type": "object",
              "required": [
                "provider",
                "type",
                "secret"
              ],
              "properties": {
                "label": {
                  "type": "string",
                  "maxLength": 60
                },
                "provider": {
                  "type": "string",
                  "enum": [
                    "anthropic",
                    "openai",
                    "openrouter",
                    "deepseek"
                  ]
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "oauth",
                    "api_key"
                  ]
                },
                "secret": {
                  "type": "string",
                  "minLength": 10,
                  "maxLength": 4096,
                  "description": "Raw secret. Will be AES-256-GCM encrypted at rest on the spawned server."
                }
              }
            }
          },
          "ai_provider": {
            "type": "string",
            "enum": [
              "anthropic",
              "openai"
            ],
            "default": "anthropic",
            "description": "Legacy one-credential shortcut. Prefer credentials[]."
          },
          "api_key": {
            "type": "string",
            "description": "Legacy one-credential shortcut. Prefer credentials[]."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "order_id": {
            "type": "string",
            "description": "UUID of the created order."
          },
          "api_token": {
            "type": "string",
            "description": "osk_-prefixed Bearer token. Shown once; store securely."
          },
          "plan": {
            "type": "string"
          },
          "price_usd": {
            "type": "number"
          },
          "server_ip": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "status_url": {
            "type": "string"
          },
          "chat_url": {
            "type": "string"
          },
          "ssh": {
            "type": "string"
          }
        }
      }
    },
    {
      "id": "spawn-production",
      "name": "Spawn Scale Server",
      "description": "10-20+ agents, full fleet \u2014 16 vCPU, 32GB RAM, 320GB SSD",
      "endpoint": "https://spawn.os.moda/api/v1/spawn/production",
      "method": "POST",
      "price": {
        "amount": "$299",
        "currency": "USDC",
        "protocol": "x402",
        "accepts": [
          {
            "network": "eip155:84532",
            "chainId": 84532,
            "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
            "payTo": "0xb78476F8e3b9D3f7A0Da8315272B00b26293535a"
          },
          {
            "network": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
            "chainId": "devnet",
            "asset": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
            "payTo": "DFbWWDweU9jqaJSrEpyBCrWGZyDkaoDayak9EZA3QnYA"
          }
        ]
      },
      "inputSchema": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "enum": [
              "eu-central",
              "eu-north",
              "us-east",
              "us-west"
            ],
            "default": "eu-central"
          },
          "ssh_key": {
            "type": "string",
            "description": "SSH public key (ed25519, RSA, or ECDSA). Injected into the provisioned server's authorized_keys."
          },
          "runtime": {
            "type": "string",
            "enum": [
              "claude-code",
              "openclaw"
            ],
            "default": "claude-code",
            "description": "Agent runtime engine. claude-code supports OAuth + API key; openclaw supports API key only."
          },
          "default_model": {
            "type": "string",
            "description": "Initial default model for the osmoda agent (e.g. claude-opus-4-6, claude-sonnet-4-6)."
          },
          "credentials": {
            "type": "array",
            "description": "Pre-seed up to 8 credentials. Encrypted server-side on first boot.",
            "maxItems": 8,
            "items": {
              "type": "object",
              "required": [
                "provider",
                "type",
                "secret"
              ],
              "properties": {
                "label": {
                  "type": "string",
                  "maxLength": 60
                },
                "provider": {
                  "type": "string",
                  "enum": [
                    "anthropic",
                    "openai",
                    "openrouter",
                    "deepseek"
                  ]
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "oauth",
                    "api_key"
                  ]
                },
                "secret": {
                  "type": "string",
                  "minLength": 10,
                  "maxLength": 4096,
                  "description": "Raw secret. Will be AES-256-GCM encrypted at rest on the spawned server."
                }
              }
            }
          },
          "ai_provider": {
            "type": "string",
            "enum": [
              "anthropic",
              "openai"
            ],
            "default": "anthropic",
            "description": "Legacy one-credential shortcut. Prefer credentials[]."
          },
          "api_key": {
            "type": "string",
            "description": "Legacy one-credential shortcut. Prefer credentials[]."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "order_id": {
            "type": "string",
            "description": "UUID of the created order."
          },
          "api_token": {
            "type": "string",
            "description": "osk_-prefixed Bearer token. Shown once; store securely."
          },
          "plan": {
            "type": "string"
          },
          "price_usd": {
            "type": "number"
          },
          "server_ip": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "status_url": {
            "type": "string"
          },
          "chat_url": {
            "type": "string"
          },
          "ssh": {
            "type": "string"
          }
        }
      }
    }
  ],
  "payment": {
    "protocol": "x402",
    "accepts": [
      {
        "network": "eip155:84532",
        "chainId": 84532,
        "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
        "payTo": "0xb78476F8e3b9D3f7A0Da8315272B00b26293535a"
      },
      {
        "network": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
        "chainId": "devnet",
        "asset": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
        "payTo": "DFbWWDweU9jqaJSrEpyBCrWGZyDkaoDayak9EZA3QnYA"
      }
    ]
  },
  "endpoints": {
    "plans": "https://spawn.os.moda/api/v1/plans",
    "spawn": "https://spawn.os.moda/api/v1/spawn/{planId}",
    "status": "https://spawn.os.moda/api/v1/status/{orderId}",
    "tokens": "https://spawn.os.moda/api/v1/tokens/{token_id}",
    "chat": "wss://spawn.os.moda/api/v1/chat/{orderId}",
    "docs": "https://spawn.os.moda/api/v1/docs",
    "docs_ui": "https://spawn.os.moda/docs",
    "skill": "https://spawn.os.moda/SKILL.md",
    "spec_kit_projects": "https://spawn.os.moda/api/v1/spec-kit/projects",
    "chat_async": "https://spawn.os.moda/api/dashboard/servers/{orderId}/chat-async",
    "chat_stream": "https://spawn.os.moda/api/dashboard/servers/{orderId}/chat-stream/{conversation_id}",
    "chat_history": "https://spawn.os.moda/api/dashboard/servers/{orderId}/chat-history/{conversation_id}",
    "agent_restart_start": "https://spawn.os.moda/api/dashboard/servers/{orderId}/agents/{agentId}/restart",
    "agent_restart_status": "https://spawn.os.moda/api/dashboard/servers/{orderId}/agents/{agentId}/restart/{restart_id}",
    "events_dashboard": "https://spawn.os.moda/api/dashboard/servers/{orderId}/events",
    "events_v1_reseller": "https://spawn.os.moda/api/v1/servers/{orderId}/events",
    "requests_dashboard": "https://spawn.os.moda/api/dashboard/servers/{orderId}/requests/{request_id}",
    "requests_v1_reseller": "https://spawn.os.moda/api/v1/servers/{orderId}/requests/{request_id}"
  },
  "callback_endpoints": {
    "heartbeat": "https://spawn.os.moda/api/heartbeat",
    "provision_progress": "https://spawn.os.moda/api/provision-progress",
    "provision_failed": "https://spawn.os.moda/api/provision-failed"
  }
}