loading…
Search for a command to run...
loading…
Open-source AI marketing agent toolkit with plan-first workflow, human checkpoints, and BYOK support.
Open-source AI marketing agent toolkit with plan-first workflow, human checkpoints, and BYOK support.

Most AI marketing tools write content.
embercore writes your plan — then stops and asks what you think.
An open-source MCP server that turns a one-page product brief into a complete marketing plan.
Five agents. Named after Greek gods. Human checkpoints at every stage. Nothing ships without your say.
Why • Quick Start • How It Works • Agents • Self-Host • Architecture • Contributing • Discuss
You shipped a product. You have no idea how to market it. Every AI tool either:
embercore does something different. It makes the plan before it makes the content, and it asks you what you think before moving on.
| Feature | What it means | |
|---|---|---|
| 📋 | Plan-first, not draft-first | Five stages: Research → Brand → UX → GTM → Assemble. Structured artifacts on disk, not a wall of copy. |
| 🛑 | Human checkpoints (H1–H4) | The pipeline pauses between every stage. You approve, edit, or redirect. |
| 🔑 | Bring Your Own Key | Your Anthropic key stays in your environment. Zero telemetry. |
| 🔓 | Fully open source (MIT) | Read every prompt. Fork it. Run it forever. No paid tier, no upsell. |
| 🏠 | Local-first | Runs in Claude Desktop, Cursor, Copilot CLI, Windsurf — any MCP client. |
| 🚫 | No jargon | Every decision explained in plain language. Marketing terms get defined. |
Two ways to use embercore. Pick one. Both take ~3 minutes.
git clone https://github.com/embercore-labs/embercore.git
cd embercore
pnpm install
pnpm dev
Open localhost:3000, paste your Anthropic key, drop in your product brief, watch the agents work.
# Build the engine (Go 1.23+ required)
cd packages/engine
make build
# Move it onto your PATH
mv embercore-engine /usr/local/bin/ # macOS / Linux
# Move-Item embercore-engine.exe "$env:USERPROFILE\bin\" # Windows
Add to your MCP client config (Claude Desktop example):
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"embercore": {
"command": "embercore-engine",
"env": { "ANTHROPIC_API_KEY": "sk-ant-..." },
},
},
}
Restart your client, drop a product_brief.md in your working directory, and ask the assistant to "run the embercore workflow."
📖 See docs/quickstart.md for Cursor and Copilot CLI configs.
┌─────────────────────┐
│ product_brief.md │
│ (your 1-page input) │
└─────────┬───────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ │
│ 🦉 Athena → 01_research.md ── H1 │
│ ▲ │
│ approve / edit │
│ ▼ │
│ 🎵 Apollo → 02_brand_messaging.md ── H2 │
│ ▲ │
│ approve / edit │
│ ▼ │
│ 🏠 Hestia → 03_ux.md ── H3 │
│ ▲ │
│ approve / edit │
│ ▼ │
│ ⚡ Hermes → 04_go_to_market.md ── H4 │
│ ▲ │
│ approve / edit │
│ ▼ │
│ 🔨 Hephaestus → final_product_plan.md │
│ │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────┐
│ output/ │
│ (all artifacts on │
│ your disk) │
└─────────────────────┘
Each H# is a checkpoint — the pipeline blocks until you approve, edit, or send it back. The final plan is assembled only after all four checkpoints are green.
State lives at .embercore-state/ so a crashed run resumes from the last completed stage.
| Agent | Domain | Stage | Output |
|---|---|---|---|
| 🦉 Athena | Wisdom & Strategy | Research, ICP, competitive landscape | 01_research.md |
| 🎵 Apollo | Light & Prophecy | Brand voice, positioning, messaging pillars | 02_brand_messaging.md |
| 🏠 Hestia | Hearth & Home | Onboarding flow, screens, UX wireframes | 03_ux.md |
| ⚡ Hermes | Messenger of the Gods | Go-to-market: social, B2B outreach, channels | 04_go_to_market.md |
| 🔨 Hephaestus | Divine Smith | Assembly of the final plan from all prior outputs | final_product_plan.md |
Why named agents? Because "Stage 3" is forgettable — "Hestia just finished your onboarding flow" is not.
📖 Agent mapping in docs/agents.md · Prompts in packages/engine/prompts/ · Implementation in packages/engine/tools/
localStorage and on disk under output/.Everything is self-host by default — there is no hosted version to switch from.
| Deployment | How |
|---|---|
| Web app | Deploy apps/web to Vercel, Netlify, Cloudflare Pages, or any Node host. Users paste their own key. |
| MCP engine | Ship the embercore-engine binary alongside any MCP client. No daemon, no server. |
| Air-gapped | Set ANTHROPIC_BASE_URL to point at an internal proxy. The engine doesn't care. |
📖 See docs/architecture.md for the full picture.
We mean it when we say PRs welcome. The repo is fresh, the surface is small, and there are plenty of good first issues that don't require touching the LLM code.
| Resource | Description |
|---|---|
| CONTRIBUTING.md | Dev setup, PR flow, commit style |
| CODE_OF_CONDUCT.md | Contributor Covenant 2.1 |
| SECURITY.md | How to report vulnerabilities privately |
| Discussions | Roadmap conversations & design questions |
Full detail in ROADMAP.md. The short version:
| Phase | Focus | Status |
|---|---|---|
| Phase 0 — Foundations | Repo scaffold, OSS docs, BYOK architecture | ✅ Complete |
| Phase 1 — Core Loop | End-to-end plan → checkpoint → execute pipeline | ✅ Complete |
| Phase 2 — Marketing Workflows | Apollo, Hephaestus, workflow templates, review queue | 🧭 In progress |
| Phase 3 — MCP & Integrations | MCP server tools, plugin API, local providers | 💭 Exploring |
The default forever-future for embercore is "OSS, BYOK, runs on your machine."
MIT — see LICENSE. Use it for anything. Sell things you build with it. Just don't sue us.
Built with 🔥 by Tamish Mhatre and contributors.
If embercore saved you an afternoon of marketing-tab hell, give it a star — it helps more than you think.
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"embercore": {
"command": "npx",
"args": []
}
}
}