--- name: hobing description: Publish static websites with a hobing account or anonymously, as the user chooses. --- # hobing Base: https://hobing.link. HTTPS; JSON requests need Content-Type: application/json. Include root index.html; exclude secrets, .env, source maps, node_modules and symlinks. Plain HTML/CSS/JS needs no build. Build framework projects in your available environment before uploading. ## Tool requirements No CLI or MCP installation is required. Use an available HTTP request tool that can send external POST requests with a JSON body and read the response. Reading websites or generating code alone does not provide this ability. If unavailable, provide the HTML/ZIP (or file contents if attachments are unavailable) for the user to upload at https://hobing.link/; clearly state it is not published. Do not require CLI installation or claim a command was executed. Direct requests from another website's preview may be blocked by origin restrictions; report that error and offer manual upload, without bypassing it. If documentation cannot be read, say so; never guess endpoints, headers or payloads. ## 1. Choose before connecting or uploading - **Account login:** browser approval; saved sites and current Free/Pro benefits. - **Anonymous:** no login; temporary link (normally 24 hours), no account benefits; network limits apply. Follow an explicit choice already made. Otherwise explain both and ASK which to use, then WAIT. Existing browser login/credentials do not choose for the user. Never switch modes after an error without asking. ## 2. Follow ONLY the chosen branch **Account:** reuse a private credential for this origin, or POST /v1/agent/device {"name":"Agent name"}. Show verificationUriComplete and userCode; the user approves in their browser. Keep deviceCode private; poll POST /v1/agent/token {"deviceCode":"..."} every 5 seconds (202 pending, 200 accessToken; request expires after 10 minutes). Never approve for the user or read browser sessions/passwords. Send Authorization: Bearer ; GET /v1/me, /v1/config and /v1/projects. Confirm identity/plan; identify an existing target before updating. On 401 stop and reconnect. **Anonymous:** omit Authorization, including saved credentials. GET /v1/config for limits; publishingMode:"anonymous" means no account; plan:"free" is only a limit profile. Do not call /v1/me, /v1/usage or /v1/projects, or start authorization. Keep returned managementToken/claimUrl private. ## 3. Publish POST https://hobing.link/v1/publishes with Content-Type: application/json and body {"title":"Site","files":[{"path":"index.html","content":"

Hello

","encoding":"utf8"}]} (replace with the actual files). This uses JSON, not multipart/form-data. /api/deploy and X-Publish-Mode are not supported. Binary: base64. For bundles over 10 MiB use staged uploads (all modes); read https://hobing.link/api.md. Never delete, take offline or republish without the user's request. Only a successful API response containing url confirms publication; generated code, commands and preview links do not. Return only public URL, chosen mode, confirmed account plan if connected, and expiry/always-online status. On 429 report error.message and retryAt/retryAfter; do not retry early, change networks or send anonymous users to Usage. No URL means no successful publish. Keep credentials in memory or a mode-0600 file outside the project; never logs/chat/Git. Account access lasts 30 days; revoke at https://hobing.link/agents/. Help: https://hobing.link/docs/; feedback: https://hobing.link/feedback/.