Brod
Deploy the small web apps your agent builds to a private team address, with sign-in, roles, a database and rollback built in.
Hosted MCP Server
npx add-mcp 'https://brod.sh/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Your agent built it. Brod puts it online for your team.
Brod is a cloud for small software: the tools you build with an AI agent for yourself or your team. One step from code to a private address, with sign-in, roles and storage already there.
Or connect your agent now: https://brod.sh/mcp
Where do I paste it? Steps for Claude, Cursor, VS Code and others
Claude Code
- In a terminal, run
claude mcp add --transport http brod https://brod.sh/mcp - Start
claude, type/mcp, choose brod and sign in when the browser opens.
Claude (web and desktop app)
- Open Settings, then Connectors, then Add custom connector.
- Name it Brod, paste
https://brod.sh/mcpas the URL, and add it. - Press Connect and sign in when the browser opens.
Cursor
- Open
~/.cursor/mcp.json(or Settings, then MCP, then Add new MCP server) and add:{ "mcpServers": { "brod": { "url": "https://brod.sh/mcp" } } } - Brod shows up in the MCP list; press Connect and sign in when the browser opens.
VS Code
- Create
.vscode/mcp.jsonin your project with:{ "servers": { "brod": { "type": "http", "url": "https://brod.sh/mcp" } } } - Press Start above the entry, sign in when the browser opens, and use Brod in Copilot's agent mode.
Any other agent
- Add a remote MCP server over HTTP with the address
https://brod.sh/mcp. - When the browser opens, sign in with your email and pick the workspace the agent may use.
- No browser sign-in in your agent? Make a token on your workspace's Connections page and send it as
Authorization: Bearer brod_…
Then ask: “Put this online with Brod.”
Any agent that speaks MCPExample
Put the shift swap tool online for the warehouse team.
get_workspace Reads your groups and roles, so the app fits without being told.
deploy_app Shift swap, version 1. Live in seconds.
https://shift-swap.harborops.brod.sh
Private. Only you can open it. Sharing waits for you
The agent asked to share it with everyone in Harbor Ops.
What every app gets without asking
No regions, instance sizes, access policies or login code. The parts every small tool needs are already attached.
Sign-in
People sign in with an emailed link. Your app never sees a password and keeps no user table.
GET /_brod/me
Roles and groups
Owner, editor and viewer by default. Define groups once in the workspace and every app uses them.
x-brod-role
A database
Each app has its own SQLite database, with transactions.
env.DB.query(sql, params)
Key-value and files
Small values and uploaded files, stored per app.
env.KV env.FILES
Secrets
Write-only. Nobody can read one back after it is set, the agent included.
set_secret
Versions and rollback
Every deploy is kept. Rolling back takes effect on the next request and rebuilds nothing.
rollback
A safe deploy
A version whose server code does not start is refused, and the working version stays live.
deploy_app
Logs
Console output and errors for recent requests, kept seven days, searchable by the agent that is fixing the bug.
get_logs
One workspace, one sign-in, every app
A workspace holds your team's people, groups and apps. Add a colleague to a group and they have the right access everywhere. Remove them and it ends everywhere.
-
Private
Only the app's owner and workspace admins. -
People
Only the people and groups you give a role. -
Workspace
Everyone in your workspace. -
Signed in
Anyone who signs in. -
Public
Anyone, with no sign-in.
An agent cannot open an app up by itself. Narrowing access applies at once. Widening it, or inviting someone, waits for a person to confirm.
An app is a folder. Server code is one file.
Static files are served as they are. Add a _worker.js and it answers every other request, with the signed-in person in the headers and the app's storage on env.
Your agent already knows this. Brod tells it when it connects.
// _worker.js
export default {
async fetch(request, env) {
const role = request.headers.get('x-brod-role');
if (role !== 'editor' && role !== 'owner')
return new Response('Ask an editor', { status: 403 });
const open = await env.DB.query(
'SELECT * FROM swaps WHERE status = ?', ['open']);
return Response.json(open);
}
};
Free to start. A plan, never a bill per app.
Brod is priced as a plan for a workspace, with room for a number of apps and people. Deploying inside it never adds a charge.
Free
- 10 running apps. Paused apps do not count.
- 10 people in the workspace
- 250 MB of storage
- Sign-in, roles, database, secrets, rollback and logs Start free
On the way
- Larger plans for bigger teams, with more apps and people.
- A marketplace: list an app you built, and other teams install a private copy into their own workspace, with their own data and sign-in.
Neither is available yet.