RunCabin · For AI agents and the people who build them
RunCabin: the easiest way to connect and manage your website with AI. RunCabin for AI agents hosts the websites your agent builds; it doesn't run the agent itself. Your agent connects through our MCP server or REST API, publishes the site, and can stage previews, roll back a bad publish, add forms that email you and put the site on your own domain. You approve every connection and every payment. Free to start on a RunCabin address, and cheap to keep: $4.99 a month or $47.99 a year on your own domain, plus the domain's price. Hosted in a green data center on 100% renewable hydropower.
Not a developer? The plain-language walkthrough.
There are two kinds of hosting for AI agents. One runs the agent's code. RunCabin for AI agents is the other kind: it hosts the website your agent builds, and gives the agent the tools to publish it, change it, roll it back and put it on your domain. Claude, ChatGPT, Claude Code, Cursor, VS Code and agents you write yourself all connect to the same MCP server for publishing websites, at https://runcabin.com/mcp, or call the REST API at https://runcabin.com/v1.
index.html.Need a database or server code? That is a different product, RunCabin's AI website builder. Why RunCabin sets the products side by side.
Grouped by job. The tool names are for the agent; you just ask in plain words: “Put this online.” “Add a contact form that emails me.” “Undo yesterday's change.” “Put it on my domain.”
One call creates the site and puts it online; the reply carries the live https address. Later calls with the same site id update it in place. Images and fonts come in from a public https link.
cabin_publish cabin_create_site cabin_deploy cabin_upload_asset
Stage a version at a preview address, make it live when it looks right, or roll back to any earlier publish.
cabin_deploy_preview cabin_promote cabin_rollback cabin_list_deployments
The agent can read exactly what is published before it edits, and check that the site serves, which version is live, whether its forms are wired, and how many visits it gets.
cabin_list_sites cabin_get_site cabin_get_file cabin_deploy_status cabin_site_health
A form address and a ready HTML snippet. Messages are stored and emailed to you, and the agent can read them back.
cabin_create_form cabin_list_submissions
Checking a name's availability and price is free. Buying one is a checkout link you open, review and pay yourself; after that, registration, DNS and HTTPS are set up for you. A domain you already own connects with records you add at your provider.
cabin_check_domain cabin_attach_domain cabin_domain_status
On a domain bought through RunCabin, the agent can forward an address like hello@yourdomain to your inbox and add TXT records, such as a Search Console verification, at no extra charge.
cabin_setup_email_forwarding cabin_add_txt_record
More tools: cabin_build_guide hands the agent RunCabin's current build rules (see the steps below), cabin_get_pricing returns prices and hosting facts as data, and cabin_delete_site permanently removes a site that has no active hosting. Two send feedback to the RunCabin team, kept apart: cabin_send_user_feedback carries your own words when you ask, and cabin_send_agent_feedback is the agent's own note when a tool gives it trouble. Full list: tool reference.
Being tested: moving a site you already have. cabin_port_analyze is a free, read-only check of an existing website (Wix, Squarespace, GoDaddy, WordPress and more): what it's built on, who runs its domain and DNS, how its email is set up, and what moves, what gets rebuilt and what can't move. cabin_dns_access lists the exact DNS edits to point a domain you've attached, at whichever company runs its DNS, without touching your email. They appear in your agent's tool list once they're switched on. They read only public pages as RunCabinPort and never ask for a password.
A working example: our own site, technicalrhymer.org, a rhyming dictionary, was built with Claude Code and published entirely through RunCabin's agent hosting, including its assets and custom domain.
Claude, ChatGPT and coding tools open RunCabin's sign-in page in your browser. You sign in with Google or email and approve the app; your first sign-in creates your free account. Scripts use an API key from runcabin.com/keys, or the device login below. The first time you create or approve a key, /keys asks for your name and address; signing in from a chat app doesn't.
cabin_build_guide (or GET /v1/build-guide) returns RunCabin's current hosting limits and build rules, with a specVersion that changes exactly when the guide does. Among the rules: put on the page only facts you gave, and never invent reviews or ratings.
cabin_publish (or POST /v1/sites/{id}/deployments) writes the files and replies with the live https address. A free RunCabin address has HTTPS from the moment it goes live. Every publish is a new version, and earlier versions are kept.
The reply lists anything to fix against the guide: a missing page title or description, an image without alt text, a form that posts nowhere, placeholder text left in, words on our banned list. The agent fixes them and publishes again with the same siteId. A file that contains a secret key, such as a Stripe or OpenAI key or a private key, is refused before anything is written, and the reply names the file, never the key.
To buy one, the agent checks the name and price, then gives you a link to RunCabin's order page, where you review the order, sign in and pay; registration, DNS and HTTPS are then set up for you. To connect a domain you already own, you start hosting through the link the agent gives you, then add an A record and a _cabin-verify TXT record at your provider; nothing serves on it until that TXT record proves the domain is yours. Once the domain is live, the free address redirects to it.
Claude, ChatGPT and the coding tools sign you in through RunCabin's page in your browser the first time. Here is the short version; the setup page has every step. Muse, Meta's AI agent, can add the same server as a custom connector.
| App | What to do | Full steps |
|---|---|---|
| Claude (web and desktop) | In Claude, open Customize → Connectors, choose Add custom connector, enter |
Claude setup |
| ChatGPT | In ChatGPT on the web, open Plugins, select the plus button, then Add custom MCP server. Enter |
Any MCP client |
| Muse, Meta's AI agent | In a chat with Muse, ask it to create a custom connector for RunCabin with the server address |
Muse setup |
| Claude Code |
claude mcp add --transport http runcabin https://runcabin.com/mcpThen run |
Claude Code setup |
| Cursor |
Under "runcabin": { "url": "https://runcabin.com/mcp" } |
Cursor setup, with the one-click button |
| VS Code |
Under "runcabin": { "type": "http", "url": "https://runcabin.com/mcp" } |
VS Code setup |
| Windsurf |
Under "runcabin": { "serverUrl": "https://runcabin.com/mcp" } |
Windsurf setup |
| Any MCP client | OAuth 2.1 for public clients: authorization code with PKCE S256, dynamic client registration, redirect URIs on https or loopback. Access tokens last an hour; refresh tokens last 30 days and rotate on use. Discovery starts at |
Other clients |
Adding the server address works today in Claude, ChatGPT and the coding tools above. For Muse, the route above is the one Meta's help describes.
Scripts, CI jobs and coding agents can skip MCP and call the REST hosting API at https://runcabin.com/v1 with an API key. Every call reaches only the key owner's own sites.
The tool asks for a sign-in code, you approve it in your browser at runcabin.com/keys, and the tool picks up its own key. A request expires after 10 minutes and works once, and we email you each time a tool gets a key this way. The first approval asks for your name and address if your account doesn't have them yet.
curl -s -X POST https://runcabin.com/v1/login/start \
-H "Content-Type: application/json" \
-d '{"clientName": "My deploy script"}'curl -s -X POST https://runcabin.com/v1/login/token \
-H "Content-Type: application/json" \
-d '{"deviceCode": "cabin_dc_..."}'While it waits, the poll answers HTTP 400 with error set to authorization_pending (poll again in 5 seconds), slow_down (wait longer), access_denied (the request was turned down) or expired_token (start again). On approval it returns key, prefix, email and scopes once; store the key then, because it can't be shown again. If /v1/login/start answers 429 too_many_pending, wait for the time in Retry-After. Full details: sign in from a terminal.
curl -s -X POST https://runcabin.com/v1/sites \
-H "Authorization: Bearer $RUNCABIN_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "My test site"}'
# 201 Created: siteId, subdomain, url, status (a free address is made up for you)
curl -s -X POST https://runcabin.com/v1/sites/SITE_ID/deployments \
-H "Authorization: Bearer $RUNCABIN_KEY" \
-H "Content-Type: application/json" \
-d '{"files": {"index.html": "<!doctype html>...", "style.css": "body { margin: 0; }"}}'
# returns once the site is live: deploymentId, status, url, specVersion, checksSend html for a one-page site, or files with index.html at the root. The reply comes back when the site is live, with the url, the deploymentId, the guide's specVersion and a checks list (code, file, message) to fix before you publish again. A publish carries text files only (SVG counts as text). There is no REST route for images or fonts yet: add them with the MCP tool cabin_upload_asset, from a public https link.
curl -s https://runcabin.com/v1/build-guide \
-H "Authorization: Bearer $RUNCABIN_KEY"The same guide the MCP tool returns, as markdown with its specVersion.
| Route | Send | Get back |
|---|---|---|
POST /v1/login/start | clientName (optional) | deviceCode, userCode, verificationUrlComplete, expiresIn, interval |
POST /v1/login/token | deviceCode | key, prefix, email, scopes (once) |
POST /v1/sites | name, subdomain (both optional) | 201 with siteId, subdomain, url, status |
GET /v1/sites and GET /v1/sites/{id} | - | your sites; one site's details |
POST /v1/sites/{id}/deployments | html, or files as { "path": "text" } including index.html | deploymentId, status, url, specVersion, checks |
GET /v1/deployments/{id} | - | status, isLive, previewUrl |
GET /v1/build-guide | - | specVersion, guide (markdown) |
GET /v1/pricing | - | prices and hosting facts |
GET /v1/domains/check?q= | a domain name | domain, available, priceCents, price |
POST /v1/sites/{id}/domains | domain, action (buy or connect), replace and billing (month or year) optional | buy: url to the order page; connect: subscriptionUrl, or dnsRecords when hosting is already active; with a link, terms (give it to the owner before they pay) and message |
GET /v1/domains/{id} | - | status, verified, dnsRecords |
POST /v1/sites/{id}/subscription | billing (month or year, optional) | url, terms (give it to the owner before they pay), message; 409 already_subscribed |
POST /v1/sites/{id}/forms | name, notifyOwner (both optional) | formId, action, snippet |
GET /v1/sites/{id}/forms | - | the site's forms |
GET /v1/sites/{id}/submissions?form=&limit= | - | submissions, newest first |
POST /v1/domains/email-forwarding | domain, forwardTo, alias (optional, default hello) | address, forwardTo |
POST /v1/domains/txt | domain, value, host (optional) | the record added |
POST /v1/port/analyze (being tested) | url; depth optional (quick) | platform, domain (registrar, DNS host), mail, page and feature counts, movesCleanly, needsRebuild, cannotMove, say; 429 with Retry-After past 10 an hour |
GET /v1/domains/{domain}/access (being tested) | a domain on one of your sites | where its DNS is edited, records to set, delete and keep, blockers, steps, say |
POST /v1/feedback | source (agent or user), message; kind, tool, siteId, wantsReply optional | 201 with feedbackId; 200 with duplicate for the same note again; 429 cooldown (one note per 30 seconds, 60 for user) or daily_limit, with Retry-After |
Errors come back as an HTTP status with {"error": "<message>"}. Some refusals add a status code, such as replace_required or already_subscribed. Some 503s that clear on their own carry Retry-After; retry any 503 after a short wait. A missing or revoked key gets 401. The device-login routes and POST /v1/feedback put a code in error instead, with a message. Previews, promote, rollback, deployment history, reading files back, site health and visits, images and fonts, and deleting a site are MCP tools today.
Every paid step is a checkout link you open, review and pay yourself. RunCabin's tools only hand over the link and never charge you.
Sign-in happens in your own browser, so the app never sees your password. The approval screen shows the app's name and where it sends you back, and warns you when it doesn't recognize the app. Device-login codes wait for your approval.
Revoke any key or connected app at runcabin.com/keys; a revoked app is signed out everywhere immediately. When a tool gets a key through device login, we email you. A key is shown once and stored only as a hash.
A key reaches only its owner's sites, domains and forms.
Every publish is a new version and earlier ones are kept, so a bad publish rolls back in one step. A rollback doesn't undo everything: deleting a site, replacing an uploaded image or font, swapping your domain and changing where email forwards stay done, so read those requests before you say yes.
A publish that contains a recognizable secret key (Stripe, AWS, GitHub, Slack, OpenAI, Anthropic, a private key) is refused before anything is written.
A domain you connect serves only after its TXT record proves it's yours.
Through the MCP tool, messages visitors type into your forms reach the agent marked as untrusted visitor text.
index.html at the root. Up to 200 files and 10 MB per publish, text file types only (SVG counts as text).cabin_upload_asset, not from your disk and not over REST. A new upload at the same path replaces the old file, and uploads aren't versioned, so a rollback doesn't bring an old image back./about shows your home page unless the page is at about/index.html; or link about.html directly.replace=true, which takes the old domain off the site; for a domain you connect, that happens at once.Free on a RunCabin address
Your own domain: $4.99/mo or $47.99/yr + the domain's price · Cancel anytime
Connect your agent →Yearly saves $11.89 over paying monthly. One hosting subscription keeps one custom domain live for one site. Cancel at runcabin.com/cancel or by email: hosting runs to the end of the period you paid for, then your custom domain stops serving, and the free RunCabin address keeps working. A domain bought through RunCabin is yours; if you cancel, we release it to you with its transfer code. Terms.
Every site RunCabin hosts runs in Hetzner's Falkenstein data center park in Germany, on 100% renewable electricity from certified hydropower, which Hetzner has used since 2008. It is air-cooled, with a PUE of 1.10-1.16 against roughly 1.5 for a typical data center. It costs you nothing extra; there is no green tier. We make no carbon claim beyond that.
Green data center100% hydropower
Details: how we checked · why we moved
Updated . If this page ever disagrees with cabin_build_guide or cabin_get_pricing, trust those two: they are generated from the code that enforces the limits and charges the prices.
If you are an AI agent helping someone put a website online, RunCabin can host it.
https://runcabin.com/mcp (Streamable HTTP). Every tool needs a signed-in owner, so before sign-in this page is your summary; the build guide and prices need a connection or a key.mcp:tools. Access tokens last 1 hour; refresh tokens last 30 days and rotate on use. Metadata: https://runcabin.com/.well-known/oauth-protected-resource/mcp and https://runcabin.com/.well-known/oauth-authorization-server.Authorization: Bearer cabin_live_.... The owner creates keys at https://runcabin.com/keys, or you get one by device login: POST https://runcabin.com/v1/login/start, show the owner the userCode and verificationUrlComplete, then poll POST https://runcabin.com/v1/login/token with the deviceCode every 5 seconds. Until the owner approves, the poll answers HTTP 400 authorization_pending (or slow_down, access_denied, expired_token). On approval it returns key once: store it then. If the owner has no name and address on file, /keys asks for them before approving.cabin_build_guide and follow it. Publish with cabin_publish (html, or files including index.html). Fix each item in the reply's checks, then publish again with the same siteId. Read the guide again when specVersion changes.cabin_check_domain, then cabin_attach_domain, and give the owner the link it returns. Never ask for card details; nothing is charged until the owner pays. A hosting link for a connected domain expires after 24 hours; ask for a new one if needed. If the site already has a working domain, use replace=true only after the owner says so: the old domain stops serving the site.{error, message} flagged isError. REST returns an HTTP status with {"error": "<message>"}, sometimes with a status code such as replace_required. Retry a 503 after a short wait; some carry Retry-After. The device-login routes put a code in error instead, as above.cabin_get_pricing, or GET https://runcabin.com/v1/pricing with a key.cabin_send_agent_feedback; it changes nothing on any site. The owner's: when they want to tell RunCabin something, send their own words with cabin_send_user_feedback, only when they ask, with wantsReply if they want an answer by email. REST: POST https://runcabin.com/v1/feedback with source agent or user.cabin_port_analyze, call it with the site's address first and relay its say. Builder sites are rebuilt from the owner's own text and photos, never copied, so never promise the same site. For the DNS edits, attach the domain with cabin_attach_domain (action connect), then call cabin_dns_access.https://runcabin.com/llms.txt, the tool reference at https://runcabin.com/connect#tools, MCP Registry name com.runcabin/cabin.Not on this plan. Agent hosting serves the static sites your agent publishes: HTML, CSS and JavaScript on a free RunCabin address or your own domain. It doesn't run agent code, server code or a database. Run your agent where you already do and connect it to https://runcabin.com/mcp or https://runcabin.com/v1.
Yes. Creating and publishing sites is free on a RunCabin address with HTTPS, with no card and no time limit. You need a free account, which your first sign-in creates. You pay only to keep your own domain live: $4.99 a month or $47.99 a year, plus the domain's price if you buy it through RunCabin, shown before you pay.
Claude Code writes the files; a host puts them online. Run claude mcp add --transport http runcabin https://runcabin.com/mcp, then /mcp to sign in once, and ask Claude Code to publish the site. It publishes through RunCabin and replies with the live https address.
Yes, as a custom MCP server. In ChatGPT on the web, open Plugins, select the plus button, then Add custom MCP server. Enter https://runcabin.com/mcp as the server URL, choose OAuth, select Create as a plugin and sign in. ChatGPT can then publish and update the site, and it hands you a checkout link for anything paid.
You can add RunCabin to Muse as a custom connector, the route Meta's help describes. In a chat with Muse, ask it to create a custom connector for RunCabin with the server address https://runcabin.com/mcp, then sign in on RunCabin's page and approve it; your first sign-in creates your free account. Meta doesn't review custom connectors. In Muse's Settings you choose whether to approve each action it takes, and RunCabin never charges you through Muse: anything paid is a checkout link you open, review and pay yourself. Muse is available in the US and Canada to adults 18 and over. Full steps: our guide to putting your website online from Muse.
Yes. The site is plain HTML, CSS and JavaScript. Your agent can read back every file of the live publish with cabin_get_site and cabin_get_file, and uploaded images and fonts stay downloadable at their addresses on your site, so you can keep a copy and host it elsewhere. A domain bought through RunCabin is yours; if you cancel, we release it to you with its transfer code.
Both. The REST API at https://runcabin.com/v1 takes an API key and covers sites, publishing, domains, hosting subscriptions, forms, email forwarding, TXT records, the build guide and prices. Previews, promote, rollback, reading files back, site health, images and fonts, and deleting a site are MCP tools today.
Static sites: HTML, CSS, JavaScript and other text files, up to 200 files and 10 MB per publish, with images and fonts added from a public https link through the MCP server. Single-page apps work. Server-side code, PHP, build steps and databases are not part of this plan.
It can check a domain's availability and price for free, then give you a checkout link; once you pay, registration, DNS and HTTPS are set up automatically. On a domain bought through RunCabin it can also forward an address like hello@yourdomain to your inbox and add TXT records, at no extra charge. For a domain you already own, you add the records it gives you at your provider.
Further reading: is it safe to let an AI agent update your website? · put your website online from Muse · publish a website from Claude · manage your website with AI · what an AI-editable website is · llms.txt
Questions: hello@runcabin.com. Security reports: security.txt. Privacy · Who runs RunCabin
The server address is https://runcabin.com/mcp. Sign-in happens in your browser, and the free address costs nothing.
Would you rather we build the whole site for you? See done-for-you websites →