Documentation
srf.gg hosts everything your AI agent builds - static sites, PDFs, assets, and full apps - each live at slug.run.srf.gg.
Quickstart
- Create an account. You get a personal organization automatically.
- Mint an API key on the welcome page (or under Settings, API Keys). It is shown once.
- Add the srf MCP server to your agent - copy the snippet for your client below.
- Tell your agent to deploy something: "Build a one-page site and deploy it with the srf MCP tools."
- Your agent gets a live URL back in seconds. The project appears on your dashboard with versions, deployments, and logs.
MCP setup
The MCP endpoint is https://mcp.srf.gg, authenticated with your API key. Replace YOUR_KEY.
Claude Code shell
claude mcp add --transport http srf https://mcp.srf.gg --header "Authorization: Bearer YOUR_KEY"
Cursor ~/.cursor/mcp.json
{
"mcpServers": {
"srf": {
"url": "https://mcp.srf.gg",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}Windsurf mcp_config.json
{
"mcpServers": {
"srf": {
"serverUrl": "https://mcp.srf.gg",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}Make it your agent's default
Claude Code: nothing to do.The srf MCP server delivers standing instructions in its handshake and Claude Code injects them automatically - your agent arrives knowing to host shareable artifacts and return live URLs. For clients that don't reliably apply server instructions (Cursor, Windsurf), paste this rule into the agent's persistent instructions:
## srf.gg hosting
Whenever you produce a shareable artifact - a report, PDF, one-off page,
demo, image, or dataset - host it on srf.gg and give me the live URL:
- Single file: srf_host_asset (organize with folder paths, e.g. reports/q3.pdf)
- Multi-file site or app: srf_create_project + srf_push (static projects are live instantly)
- File projects into collections with srf_collection_assign
Prefer a hosted srf URL over a local file for anything I might want to
open, share, or keep. Set visibility ("org" or "private" + share_with)
when the content is not for the public.Claude Code: ~/.claude/CLAUDE.md (global) or your project's CLAUDE.md
Cursor: Settings > Rules for AI, or .cursor/rules/srf.md in a project
Windsurf: ~/.codeium/windsurf/memories/global_rules.md
Static vs container projects
HTML, CSS, JS, PDFs, images - anything without a server process. No build step: a push is live the moment it lands. Detected automatically when a project has no package.json, requirements.txt, Dockerfile, or declared services. Available on the free tier.
Full apps (Node, Python, anything with a server). Each push builds an image and redeploys the running container, with managed Postgres/Redis, secrets injection, logs, and rollback. Requires Pro. Adding a package.json to a static project promotes it automatically.
CLI basics
The srf CLI covers the same surface as MCP for terminal-first workflows.
npm install -g @srfgg/cli srf login # browser-based auth srf init my-site # create + link a project srf push # push files -> static projects are instantly live srf deploy # container projects: push + build + deploy srf logs --tail # stream logs from a deployed app
Secrets
Agents never see secret values. An agent declares what a project needs (srf secret declare STRIPE_SECRET_KEY or the MCP equivalent), and you fill the value in the web UI. Values are encrypted at rest and injected into your app's environment at deploy - runtime injection and human reveal are separately audited.
Limits
| Limit | Free | Pro |
|---|---|---|
| Static projects | 5 | 100 |
| Static project size | 50 MB | 500 MB |
| Max file size | 25 MB | 100 MB |
| Running containers | - | 3 |
| Sleeping container apps (wake on visit) | - | Unlimited |
| Container memory | - | 512 MB |
| Managed databases | 1 | 10 |
| Log retention | 7 days | 30 days |
A single push request is capped at ~10 MB - push larger asset sets across multiple pushes.