{"name":"osModa Spawn","description":"Spawn dedicated AI-managed servers. Pay with USDC via x402. v1.3.6 (2026-05-08): chat persistence finally works — 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 — the credential POST succeeded but the agent-binding PATCH never ran, leaving orders with credential in store but agent.enabled=false → 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 — 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 → recovery deletes attempts+status → SSH times out → 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 — 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 — 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 · 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 — 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 — 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 — 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 — 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 — 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"}}