Heym
Self-hosted runtime for agentic workflows, driven by MCP, with its agent also served over A2A.
A Python and Vue platform for building and running workflows of agents and fixed steps, with a visual canvas, human review checkpoints, evals, traces and cost tracking. Workflows run from REST, schedules, triggers and MCP, and the Heym Agent behind the Chat tab can also be called over A2A. The core is free to self-host under MIT with the Commons Clause, which is source-available, not open source; Heym Work is a paid layer for business teams.
Alternative to n8n, Zapier, Make
- I want to build agent workflows on my own servers without paying per execution
- I want my coding agent to build, test and run workflows for me through one MCP tool
- I want a person to approve what an agent does before the run continues
- I want another agent to send tasks to my self-hosted workflow platform over A2A
- The Commons Clause forbids selling a product or service whose value comes substantially from Heym, and it names hosting and consulting fees. An agency that charges to host or support Heym needs a commercial license
- A2A is off by default and rides on the Heym Agent: turn on the agent, pick a credential and model, then tick Enable A2A. Until then the card address returns 404
- A2A 1.0 only: 0.3 method names such as message/send are refused, push notifications are not offered, and file parts are refused
- Named servers serve their card at /api/a2a/servers/{server_id}/agent-card.json, not the well-known path
- heym_chat is one plain-language tool, so an MCP client's reach runs through a model on your own credential
- Test runs from heym_chat are real runs and their side effects happen
- An agent cannot enter a credential; a person has to save it on a Heym page
Last activity Nov 3, 2026. Fit: adaptable 2, operable 3.
Adaptable: what is yours to change
Make it yours
Config only22 things to editadmin-ui surface
ENVIRONMENT-VARIABLES.md lists every setting: database, keys, sandboxes, plugins and cluster roles. Most are deployment values. Business behavior lives in workflows, which are built on the canvas or by heym_chat, stored in the database, and moved as JSON. Custom nodes install as zip packages with a plugin.json when HEYM_PLUGINS_ENABLED is on, and agents take SKILL.md files. Changing the AI Assistant's own prompt means editing backend/app/services/workflow_dsl_prompt.py.
- Env vars
DATABASE_URLENCRYPTION_KEYSECRET_KEYALLOW_REGISTERFRONTEND_URLCORS_ORIGINSTIMEZONEHEYM_PLUGINS_ENABLEDHEYM_PLUGIN_ADMIN_EMAILSHEYM_PLUGINS_DIRHEYM_PYTHON_TOOL_SANDBOXHEYM_MCP_STDIO_SANDBOXHEYM_MCP_ALLOW_PRIVATE_URLSHEYM_HTTP_ALLOW_PRIVATE_URLSHEYM_OTEL_ENABLEDHEYM_CLUSTER_ENABLED- Config files
.env.exampleENVIRONMENT-VARIABLES.mddocker-compose.ymldocker-compose.cluster.ymldeploy/kubernetes- Prompt files
backend/app/services/workflow_dsl_prompt.py- Accounts you need
- At least one model provider account, such as OpenAI or Google, or your own model endpoint
Source
- github.com/heymrun/heym
- MIT with Commons Clause license
- Last commit Nov 3, 2026
- 1,236 stars
Operable: what an agent can drive
Interface
OfficialMCP serverpublished by the builderlocal
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
- Docs
- heym.run/docs/tabs/mcp-tab
- Tools
heym_chat MCP toolworkflows published as MCP toolsMCP servers, Python tools and skills attached to Agent nodes
A2A Protocol
Supportedpublished by the builder
- Role
- Other agents can call it
- Version
- 1.0
- Bindings
- JSONRPC
- Agent Card
/.well-known/agent-card.jsonon each deployment- Source
- heym.run/docs/reference/a2abackend/app/api/a2a.py serves the Agent Card and POST /api/a2a, backend/app/services/a2a/agent_card.py declares JSONRPC at protocol version 1.0, and backend/tests/test_a2a_conformance.py checks the wire format against a2a-sdk; backend/app has no A2A client, and the public card at heym.run is a site-help agent, not this software.
Reach describes the interface above, not A2A.
Reach
Partial coverage. 8 of 10 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Build and revise workflows from plain language | Reachable | heym_chat runs in build mode: it saves, test-runs and fixes a workflow, per frontend/src/docs/content/tabs/mcp-tab.md |
| Run workflows | Reachable | workflows with the MCP toggle on appear as tools; heym_execution_status follows queued runs |
| Inspect analytics, run history and failures | Reachable | heym_chat reports analytics, recent executions and live runs, per mcp-tab.md |
| Review human-in-the-loop checkpoints | Reachable | heym_chat can approve, edit or refuse pending reviews, per mcp-tab.md |
| Manage Board cards | Reachable | heym_chat lists boards, creates cards and reads card detail, per mcp-tab.md |
| Manage data tables | Reachable | heym_chat creates tables and columns and writes rows, per mcp-tab.md |
| Build dashboards | Reachable | heym_chat adds, renames and deletes widgets and tidies layouts, per mcp-tab.md |
| Create and run evals | Reachable | heym_chat creates, edits and runs prompt and agent eval suites, per mcp-tab.md |
| Enter credentials | Not reachable | mcp-tab.md: a person signs in and saves the value on a Heym page; the MCP client never receives it |
| Turn on MCP and A2A, and set team access | Not reachable | the toggles, keys and model choice are set in the MCP / A2A tab; heym_chat only reads teams |
Code stack
- Languages
- PythonTypeScriptVue
- Frameworks
- FastAPIVue.jsSQLAlchemy
- Package manager
- uv
- Database
- PostgreSQLQdrant (optional)
- Hosting target
- DockerDocker ComposeKubernetes
- Built
- Mixed (recorded, never ranked)
Model stack
- Providers
- OpenAIGooglecustom model endpoints through a Custom credential
- Models
- none
- Keys you need
ENCRYPTION_KEYSECRET_KEY- Prompts live in
prompts on LLM and Agent nodes, stored in each workflowSKILL.md files attached to agentsbackend/app/services/workflow_dsl_prompt.py
Skills
One skill for writing Heym's docs. Skills an Adopter attaches to agents are created in the product.
- Kind
- contributor
- Paths
.cursor/skills/heym-documentation/SKILL.md
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README.md: canvas and tabs in a Vue frontend over a FastAPI backend, opened at localhost:4017 | 85% |
| executionModel | the workflow graph runs as fixed orchestration, and LLM and Agent nodes call a model at runtime | 85% |
| operability | frontend/src/docs/content/tabs/mcp-tab.md: Heym serves {origin}/api/mcp/sse with an API key or OAuth; the REST execute endpoints are in reference/webhooks.md | 90% |
| effort | ENVIRONMENT-VARIABLES.md and .env.example are mostly deployment values; reference/plugin-authoring.md covers custom nodes; workflows are built in the app | 70% |
| editions | LICENSE, COMMONS-CLAUSE.md, reference/enterprise.md and heym.run/pricing: Core free, Heym Work EUR 99 per paid seat per month with a five-seat minimum, Enterprise custom | 85% |
| active | GitHub API pushed_at 2026-11-03 and release v0.0.145 on 2026-11-03 | – |
| provenance | two human contributors lead the history, and AGENTS.md plus a heym-coder contributor show agent-assisted development | – |
| alternativeTo | frontend/src/docs/content/getting-started/why-heym.md compares Heym with n8n, Zapier and Make.com | – |
| a2aRole | server only: reference/a2a.md describes inbound methods, and no A2A client import or call was found in backend/app | – |
| reach | 75% |
Open questions
- Reach and A2A were read from docs and source; Heym was not run, no MCP tool was called, and no deployment's Agent Card was fetched
- heym.run/.well-known/agent-card.json is live, but it describes the Heym Site Agent at heym.run/a2a, which searches the website. It was left out of a2a.agentCard because the page would show it in place of the per-deployment path; is that the right call?
- Reach for heym_chat comes from the Builder's list of abilities, and a model decides each step, so how reliably each job completes is unknown
- Which jobs the Chat engine can do for vector stores, Portal publishing and alert creation was not confirmed; the docs show it can read alerts
Sources
- github.com/heymrun/heym sourcing:agent-infrastructure:a2a-topic
- heym.run/docs/reference/a2a analysis:agent-infrastructure
- heym.run/docs/tabs/mcp-tab analysis:agent-infrastructure
- heym.run/pricing analysis:agent-infrastructure
- heym.run/.well-known/agent-card.json analysis:agent-infrastructure