embercore
Open-source AI marketing agent toolkit with plan-first workflow, human checkpoints, and BYOK support.
README
<div align="center">
<br/>
<img alt="embercore logo" src="./assets/logo.png" width="200" />
<br/> <br/>
<h1>embercore</h1>
<p><strong>Most AI marketing tools write content.<br/>embercore writes your <em>plan</em> — then stops and asks what you think.</strong></p>
<sub>An open-source MCP server that turns a one-page product brief into a complete marketing plan.<br/>Five agents. Named after Greek gods. Human checkpoints at every stage. Nothing ships without your say.</sub>
<br/> <br/>
<a href="https://github.com/embercore-labs/embercore/releases/tag/v0.1.0"><img src="https://img.shields.io/badge/version-0.1.0-FF6B35?style=for-the-badge" alt="Version 0.1.0" /></a> <a href="https://github.com/embercore-labs/embercore/stargazers"><img src="https://img.shields.io/github/stars/embercore-labs/embercore?style=for-the-badge&color=F7C948" alt="GitHub Stars" /></a> <a href="https://github.com/embercore-labs/embercore/blob/main/LICENSE"><img src="https://img.shields.io/github/license/embercore-labs/embercore?style=for-the-badge&color=FF6B35" alt="MIT License" /></a> <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-1D3557?style=for-the-badge" alt="MCP Compatible" /></a> <a href="https://embercore-labs.github.io/embercore"><img src="https://img.shields.io/badge/📖_Docs-GitHub_Pages-blue?style=for-the-badge" alt="Documentation" /></a>
<br/>
<a href="https://go.dev"><img src="https://img.shields.io/badge/Go-00ADD8?style=for-the-badge&logo=go&logoColor=white" alt="Go" /></a> <a href="https://nextjs.org"><img src="https://img.shields.io/badge/Next.js-000000?style=for-the-badge&logo=next.js&logoColor=white" alt="Next.js" /></a> <a href="https://github.com/embercore-labs/embercore/blob/main/CONTRIBUTING.md"><img src="https://img.shields.io/badge/PRs-welcome-E63946?style=for-the-badge" alt="PRs Welcome" /></a> <a href="https://github.com/embercore-labs/embercore/discussions"><img src="https://img.shields.io/github/discussions/embercore-labs/embercore?style=for-the-badge&color=1D3557" alt="Discussions" /></a>
<br/> <br/>
<a href="#-why-embercore">Why</a> • <a href="#-quick-start">Quick Start</a> • <a href="#-how-it-works">How It Works</a> • <a href="#-the-agents">Agents</a> • <a href="#-self-host">Self-Host</a> • <a href="docs/architecture.md">Architecture</a> • <a href="CONTRIBUTING.md">Contributing</a> • <a href="https://github.com/embercore-labs/embercore/discussions">Discuss</a>
<br/> <br/>
<!-- Demo GIF will be added once Phase 1 ships -->
</div>
<br/>
🤔 Why embercore
You shipped a product. You have no idea how to market it. Every AI tool either:
- Asks you to describe your audience and spits out 50 LinkedIn posts (not what you need)
- Demands a $99/mo subscription to an opaque SaaS with your data inside it
- Assumes you already know what an "ICP" or "positioning statement" is
embercore does something different. It makes the plan before it makes the content, and it asks you what you think before moving on.
<br/>
| 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. |
<br/>
⚡ Quick Start
Two ways to use embercore. Pick one. Both take ~3 minutes.
<br/>
Option A — Web App
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.
<br/>
Option B — MCP Server
# 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.
<br/>
🔄 How It Works
┌─────────────────────┐
│ 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.
<br/>
🏛 The Agents
<div align="center"> <table> <thead> <tr> <th align="center">Agent</th> <th align="center">Domain</th> <th>Stage</th> <th>Output</th> </tr> </thead> <tbody> <tr> <td align="center">🦉 <strong>Athena</strong></td> <td align="center"><em>Wisdom & Strategy</em></td> <td>Research, ICP, competitive landscape</td> <td><code>01_research.md</code></td> </tr> <tr> <td align="center">🎵 <strong>Apollo</strong></td> <td align="center"><em>Light & Prophecy</em></td> <td>Brand voice, positioning, messaging pillars</td> <td><code>02_brand_messaging.md</code></td> </tr> <tr> <td align="center">🏠 <strong>Hestia</strong></td> <td align="center"><em>Hearth & Home</em></td> <td>Onboarding flow, screens, UX wireframes</td> <td><code>03_ux.md</code></td> </tr> <tr> <td align="center">⚡ <strong>Hermes</strong></td> <td align="center"><em>Messenger of the Gods</em></td> <td>Go-to-market: social, B2B outreach, channels</td> <td><code>04_go_to_market.md</code></td> </tr> <tr> <td align="center">🔨 <strong>Hephaestus</strong></td> <td align="center"><em>Divine Smith</em></td> <td>Assembly of the final plan from all prior outputs</td> <td><code>final_product_plan.md</code></td> </tr> </tbody> </table> </div>
<br/>
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 inpackages/engine/tools/
<br/>
🔑 BYOK + Privacy
- Your Anthropic key is set in your shell environment (or MCP client config). It never touches an embercore server because there is no embercore server — just code on your machine.
- The web app stores nothing server-side. Briefs and plans live in
localStorageand on disk underoutput/. - Zero telemetry. Zero analytics. We can't see you using embercore — and that's the point.
- Engine logs are local-only and elide secrets by default. See
packages/engine/internal/logger.
<br/>
🏠 Self-Host
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.
<br/>
🤝 Contributing
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 |
<br/>
🗺 Roadmap
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."
<br/>
📄 License
MIT — see LICENSE. Use it for anything. Sell things you build with it. Just don't sue us.
<br/>
🙏 Acknowledgements
- Built on the Model Context Protocol by Anthropic
- Engine uses
mark3labs/mcp-goandanthropics/anthropic-sdk-go - Web app is Next.js + Tailwind CSS v4
- Inspired by: Cal.com, Supabase, PostHog, Plausible, Documenso, Inbox Zero, Trigger.dev
- Names: the Hellenes, ~3000 years ago
<br/>
<div align="center">
<br/>
<a href="https://github.com/embercore-labs/embercore/stargazers"><img src="https://img.shields.io/badge/⭐_Star_embercore-F7C948?style=for-the-badge" alt="Star embercore" /></a>
<br/> <br/>
<sub>Built with 🔥 by <a href="https://github.com/tamish-max">Tamish Mhatre</a> and <a href="https://github.com/embercore-labs/embercore/graphs/contributors">contributors</a>.</sub>
<br/>
<sub>If embercore saved you an afternoon of marketing-tab hell, <a href="https://github.com/embercore-labs/embercore/stargazers">give it a star</a> — it helps more than you think.</sub>
<br/> <br/>
</div>
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.