Everything your agent needs, drivable as code.
Think of Executor as Zapier or Retool, but fully drivable as code, with everything exposed to your agent. Connect the services you already use once, and any agent can use them through one MCP endpoint, without ever seeing a credential.
Website · Documentation · Discord · Launch post
executor-v2-launch.mp4
You have an agent, and you want it to call something: an API, an MCP server, a CLI, a service with no spec at all. Usually that means pasting the same keys into every client, wiring the same servers up again, and writing an exception for every API that does not fit the format.
Executor gives all of that one shape: the app. An app is a small TypeScript program that turns your accounts into tools. One app can wrap an OpenAPI spec, proxy a remote MCP server, or call an API by hand. It can also store data, serve its own UI, run in the background, and ask before it does anything risky.
- Connect once, use everywhere. Save an account (an API key or an OAuth sign-in) once. Every app that needs the same service reuses it. The agent never sees the credential; Executor attaches it inside the app.
- Your agent writes code, not tool calls. Agents get two tools,
skillsandexecute. They search for what they need and run a short program across as many apps as the task takes. - Approvals where they matter. Each tool decides when to ask first: always, never, or only when the input looks risky. You approve through your agent, in your MCP client's own prompt, or on a browser page.
- Build what isn't there yet. Install from the catalog, add a remote MCP server by URL, or have your agent write and deploy a new app for you. Every deploy is a new version you can roll back.
- For teams too. Hosted and self-host add organizations, groups, shared accounts and browser sign-in.
Hosted. Sign in at app.executor.sh. There is nothing to install.
On your machine. Your accounts and data stay local:
curl -fsSL https://executor.sh/docs/install.sh | sh
executorexecutor starts Executor in the background and opens the dashboard. npm,
Homebrew and Windows installs are in the command line guide.
On your own infrastructure. One Docker container with an embedded database. See Self-host with Docker.
All three run the same apps and serve the same MCP endpoint.
Point any MCP client at your endpoint. With Claude Code and hosted Executor:
claude mcp add --transport http --scope user executor 'https://mcp.executor.sh/mcp'Then run /mcp inside Claude Code to sign in. The local endpoint is
http://127.0.0.1:4312/mcp. ChatGPT, Codex, Cursor and others are covered in
Add an MCP client.
Once connected, ask your agent what it can do: "Show me the apps and tools in my Executor workspace."
An app is ordinary async TypeScript. This one has a single tool:
import { defineApp, object, query, router, string } from "apps";
export default defineApp(
{},
{
tools: router({
greet: query(
{ description: "Greet someone by name", input: object({ name: string() }) },
async (_ctx, { name }) => ({ message: `Hello, ${name}!` }),
),
}),
},
);Declare the accounts it needs and Executor asks the person using it to connect
them. Read Author an app for accounts,
approvals, stored data and deploying. Or skip the reading and ask your agent to
build one: it can read the same guide through the skills tool.
- What Executor is: accounts, apps and tools in two minutes
- Providers and accounts: what Executor stores and what an app sees
- Tools and approvals: how calls are checked before they run
- MCP: code mode,
skills,executeand resuming approvals
Issues and pull requests are welcome. DEVELOPMENT.md covers
running Executor from source, the repository layout and how the pieces fit
together. Executor 1 lives on the main
branch.