The open-source review layer for AI agents. Work done for humans is decided by humans.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
The open source review layer for AI agents.
One inbox where your agents' actions stop and wait for a person. Review the exact payload, edit it, decide. Every decision on the record.
Your AI agent drafts an email, generates a report, or initiates a transaction. Before it reaches the real world, a human reviews it in a structured form, edits what needs fixing, and sends the decision back. The agent learns from what humans changed.
Works with any agent framework. Self hosted. Open source (AGPL-3.0; client SDKs are Apache-2.0). See LICENSING.md.
Your agents act for you: they send the proposals, run the campaigns, handle the invoices, write the replies. Before an action leaves the building, a human should decide. Gatewerk is the review layer between your agents and the real world. Human judgment enters the pipeline, exactly where you choose.
Email drafts, customer support replies, Slack messages, SMS campaigns, outreach to candidates, proposals to clients
Code deployments, database migrations, financial transactions, infrastructure changes, API calls to third-party services
Blog posts, social media content, ad campaigns, product listings, documentation updates, press releases, reports
Expense reports, refund requests, access permissions, contract terms, insurance claims, purchase orders
Between the gates, agents can also bring you the judgment calls: classify the edge case, pick the path, resolve the exception. Gatewerk makes human judgment callable: agents ask a structured question, you answer typed, and the pipeline continues.
Gatewerk is protocol-first, not framework-specific. Your agent framework already has a way to make HTTP calls or use MCP: that's all you need.
| Framework | Integration Path |
|---|---|
| LangChain / LangGraph | Python SDK |
| CrewAI | Python SDK |
| AutoGen / Semantic Kernel | Python SDK |
| OpenAI Agents SDK | TypeScript or Python SDK |
| Vercel AI SDK | TypeScript SDK |
| Claude / Cursor / Windsurf | MCP Server |
| n8n / Make / Zapier | REST API + Webhooks (n8n community node published as n8n-nodes-gatewerk) |
| Dify | REST API |
| Custom agents | REST API, TypeScript SDK, Python SDK, or MCP |
Without a review layer, every agent grows its own approval hack: a Slack button here, a weekend dashboard there, a shared sheet nobody audits. You end up building the same thing over and over, once per workflow. Gatewerk is that layer built once, properly:
Docker is the supported path. quickstart.sh writes a .env with freshly generated secrets, pulls the published images, applies migrations, seeds demo data, and waits until the API is healthy.
Dashboard: http://localhost:8880
API: http://localhost:3100
Requirements: Docker and openssl. Nothing else. The images are multi-arch, so amd64 and arm64 both pull prebuilt.
To compile the images from this checkout instead of pulling them, run ./scripts/quickstart.sh --build.
To run the API and dashboard from source with pnpm and hot reload, see Contributing.
Open the dashboard and log in with the seed admin account:
admin@gatewerk.localadmin123On first login the dashboard will prompt you to change the password: pick something secure.
The seed script (packages/db/src/seed.ts) also creates a default project, 6 starter templates (Proposal Review, Email Review, Code Deploy, Content Approval, Expense Report, Customer Reply), and a default API key. The raw key is printed once, by the seed container. Read it back with:
Save that key if you want to skip the next step. It starts with gwk_.
To create a fresh API key from the dashboard, navigate to Settings β Project β API Keys, click New, scope it for your agent, and copy the value. The raw key is shown only once. Use it wherever you see YOUR_API_KEY below.
Templates define what gets reviewed. Create one via the dashboard or API:
The three action types are approve, reject, and request_changes (non-terminal, requires reviewer feedback). Inline editing happens automatically on any field with "editable": true, there is no separate "edit" action. Actions can also be declared as { type, label, value } objects for custom button labels.
Both SDKs and the MCP server are published. Install them with npm install gatewerk, pip install gatewerk, or npx @gatewerk/mcp. No build from source required.
The two mechanisms for delivering decisions back to your agent are distinct:
callback_url (per-review, used below): a one-shot HTTP destination attached to a single review. Fires the three event types documented in step 5.Pick one, or use both. The payload shape is identical.
TypeScript:
Python:
MCP (for Claude, Cursor, Windsurf, etc.):
When a reviewer acts on a review, Gatewerk POSTs one of three event types to your callback_url:
review.decided: reviewer approved or rejected (terminal; may include edits)review.retried: reviewer requested changes and sent feedback (non-terminal; your agent regenerates and submits a new version)review.expired: timeout reached with no decision (terminal)Example review.decided payload:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/gatewerk)<a href="https://allmcps.com/mcp/gatewerk"><img src="https://allmcps.com/api/badge/gatewerk?style=directory" alt="Gatewerk on AllMCPs" /></a>