{
  "markdown": "<div align=\"center\">\n\n<img src=\".github/assets/seldon-mark.svg\" width=\"72\" height=\"72\" alt=\"Seldon\" />\n\n# SeldonFrame\n\n**Sell AI front offices. Deploy them in minutes.**\n\nSeldonFrame is the agent-native, open-source alternative to GoHighLevel for agencies serving local businesses. Give your coding agent a client's URL and it can create a branded website, booking flow, intake, CRM, and AI agent in one workspace. Run evals, publish, and hand it off — then operate every client from one agency view.\n\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-1FAE85.svg)](LICENSE)\n[![npm version](https://img.shields.io/npm/v/@seldonframe/mcp.svg?color=1FAE85)](https://www.npmjs.com/package/@seldonframe/mcp)\n[![GitHub stars](https://img.shields.io/github/stars/seldonframe/seldonframe?color=1FAE85)](https://github.com/seldonframe/seldonframe/stargazers)\n[![Discord](https://img.shields.io/badge/Discord-join-5865F2.svg)](https://discord.gg/sbVUu976NW)\n[![X](https://img.shields.io/badge/follow-%40themaxthule-1d9bf0.svg)](https://x.com/themaxthule)\n[![smithery badge](https://smithery.ai/badge/maximehoule100/seldonframe)](https://smithery.ai/servers/maximehoule100/seldonframe)\n\n[Website](https://seldonframe.com) · [For agencies](https://seldonframe.com/agencies) · [For builders](https://seldonframe.com/build) · [Docs](https://seldonframe.com/docs) · [Discord](https://discord.gg/sbVUu976NW)\n\n**Live demos:** [HVAC](https://j-marin-heating-air-conditioning-9599.app.seldonframe.com/) · [Med spa](https://app.seldonframe.com/w/metro-medspa-9d24) · [Med spa](https://app.seldonframe.com/w/skinney-medspa) · [Weight loss](https://app.seldonframe.com/w/vive-ageless-weight-loss-center)\n\n</div>\n\n---\n\n## Ship your first client front office\n\n```bash\nclaude mcp add seldonframe -- npx -y @seldonframe/mcp\n```\n\nOr as an auto-updating Claude Code plugin:\n\n```\n/plugin marketplace add seldonframe/seldonframe\n/plugin install seldonframe@seldonframe\n```\n\n```\n> Build a branded AI front office for my HVAC client in New Orleans.\n\n  ✓ Workspace ready at acme-hvac.app.seldonframe.com\n```\n\nBuild the first client workspace before paying. Hosted Managed uses SeldonFrame's keys; Builder and Agency plans are BYOK. Your agency owns the client relationship, workspace data, and delivery margin.\n\n**See a real one — a live workspace, not a mockup:**\n\n<table>\n  <tr>\n    <td width=\"50%\">\n      <a href=\"https://j-marin-heating-air-conditioning-9599.app.seldonframe.com/\"><img src=\".github/assets/demo-workspace.png\" alt=\"A live SeldonFrame workspace — generated website with quote intake and the chat agent (bottom right)\" /></a>\n    </td>\n    <td width=\"50%\">\n      <a href=\"https://j-marin-heating-air-conditioning-9599.app.seldonframe.com/book\"><img src=\".github/assets/demo-booking.png\" alt=\"The same workspace's booking page — the real calendar the agent books against\" /></a>\n    </td>\n  </tr>\n  <tr>\n    <td align=\"center\"><sub>The generated site — quote intake, reviews, and the chat agent (bottom right)</sub></td>\n    <td align=\"center\"><sub>Its booking page — the real calendar the agent books against</sub></td>\n  </tr>\n</table>\n\nAnd here's the agent on that site handling a real inbound — checking the live calendar, and, when asked for a price, *refusing to invent one* (that's the quote-guard, not a scripted reply):\n\n<table>\n  <tr>\n    <td width=\"42%\">\n      <a href=\"https://j-marin-heating-air-conditioning-9599.app.seldonframe.com/\"><img src=\".github/assets/demo-chat.png\" alt=\"A real conversation with the site's chat agent — it offers same-day scheduling and declines to guess a price\" /></a>\n    </td>\n    <td width=\"58%\">\n      <p>A genuine exchange with the chatbot on the live site — nothing scripted:</p>\n      <ul>\n        <li><b>It reads the real calendar.</b> \"Today's fully booked — here are tomorrow's 9/10/11 AM slots.\"</li>\n        <li><b>It won't lie about price.</b> Asked what a visit costs, it says <i>\"I don't have exact rates on hand, but I'll have a technician confirm the cost before any work starts\"</i> — the <b>quote-guard</b> in action, not a canned line.</li>\n        <li><b>It qualifies to book.</b> Asks for the service address to confirm you're in-area, then locks the slot.</li>\n      </ul>\n      <p>Same agent answers on <b>SMS and voice</b> too — the channel is just a config knob.</p>\n    </td>\n  </tr>\n</table>\n\nClick any screenshot — [this HVAC workspace](https://j-marin-heating-air-conditioning-9599.app.seldonframe.com/) is live and books real appointments. More live workspaces: [Metro MedSpa](https://app.seldonframe.com/w/metro-medspa-9d24) · [SKINNEY Medspa](https://app.seldonframe.com/w/skinney-medspa) · [Vive Ageless Weight Loss](https://app.seldonframe.com/w/vive-ageless-weight-loss-center) — and more on [seldonframe.com](https://seldonframe.com).\n\n---\n\n## The agency delivery loop\n\n1. **Start with the client URL.** SeldonFrame extracts the business facts and creates the workspace.\n2. **Apply your agency playbook.** Brand the site, booking flow, intake, CRM, and agent.\n3. **Verify before handoff.** Run evals and complete a real test booking.\n4. **Publish and operate.** Give the client a branded portal while your agency keeps the master view.\n\nThe same loop works from the dashboard, Claude Code, Cursor, Windsurf, or any MCP-compatible agent. See the [agency workflow](https://seldonframe.com/agencies).\n\n---\n\n## What an agent is made of here\n\nMost \"agent frameworks\" hand you a chat loop and wish you luck. SeldonFrame gives your IDE agent the full production anatomy:\n\n### The agent model — Trigger × Skill × Channel\n\nAn agent isn't a chatbot UI; it's three independent axes:\n\n- **Trigger** — *when it runs*: **inbound** (a call / chat / email / SMS arrives) · **event** (a domain event fires — `booking.completed`, `lead.created`, `invoice.paid`…) · **schedule** (a cron cadence).\n- **Skill** — *what it does*: receptionist · review-requester · speed-to-lead · win-back · digest…\n- **Channel** — *how it speaks*: voice · web chat · SMS · email · internal digest.\n- **Tools** — *what it can touch*: native tools (book against the real calendar · read/write the CRM · send SMS & email · take a message) **plus 1,000+ app integrations via Composio** (Google Calendar, Sheets, Slack, HubSpot, Notion, …), bound per-agent.\n\n`surface: voice | chat` (the old receptionist-only knob) is just one point in this space — `trigger=inbound`. One builder creates any agent; the marketplace sells any agent.\n\n### From agent to production *loop*\n\nA production agent is a **loop**, not a single prompt:\n\n> **Trigger → (Model + Tools + State) → Verify → Iterate**, bounded by a **Stop** condition, improved by **Evals**, kept honest by **Observability + Guardrails**.\n\nTwo non-negotiables drive the roadmap: **the checker must be separate from the maker** (a model grading its own work is too generous a grader), and **the loop must have brakes** (or it bills you in silence). Where each primitive stands today:\n\n| Primitive | Status | What's there |\n|---|---|---|\n| **Trigger** | ✅ Shipped | Inbound + **event** triggers on the `SeldonEvent` bus. `booking.completed` → review-requester; `lead.created` → speed-to-lead, both sending outbound SMS/email. |\n| **State** | ✅ Shipped | Agent **loop-memory** in **Brain v2** — agents recall what they did before acting and record after. The review \"ask once per customer\" throttle is now a memory recall, not a bespoke flag. |\n| **Verify** (maker ≠ checker) | ✅ Shipped | Deterministic validators grade every run — pass rates surface on each agent's health card and `/runs`; `run_agent_evals` replays scripted scenarios. Rolling out: the same checker as a hard pre-send gate + an LLM judge for judgment calls. |\n| **Guardrails / Stop** | ✅ Shipped | Quote-guard (never invent prices), enforced read-back before booking, per-contact throttles, booking-policy enforcement (hours · duration · required fields), hard call/iteration caps. Rolling out: generic token-budget brakes for long-looping agents. |\n| **Generate-by-default** | ✅ Shipped | One English sentence → trigger + skill + channel + tool bindings + guardrails, generated together. *\"text every customer for a Google review the day after their job — never twice, only if completed\"* compiles into a real agent. The `generate_agent` MCP tool and the Studio wizard both run this pipeline. |\n| **Record → Agent** | 🗺 Roadmap | Skip describing it — **screen-share your workflow once**. SeldonFrame watches, compiles the steps into a draft agent (skill + tool bindings + eval scenarios derived from the recording), and you deploy in minutes. Live behind a flag at [`/record`](https://seldonframe.com/record); becoming the default on-ramp next. |\n### The loop, drawn\n\n<img src=\".github/assets/agent-loop.svg\" alt=\"The agent loop: one build command in a terminal; Inbound / Event / Schedule triggers feed a running agent loop (Model · Tools · State · Verify) with native + Composio tools orbiting the core and Stop brakes bounding it; each pass produces a real action — books the calendar, texts the lead back, answers the phone.\" width=\"100%\" />\n\n> One sentence builds it; **triggers** drive it; the ring is the loop *running* — **Model → Tools → State → Verify** — with tools orbiting the core, `/runs` + Brain observing, and the **Stop** brakes bounding every pass. Everything in the diagram is shipped today. *(Animated SVG — if your viewer freezes it, the still frame reads the same.)*\n\n---\nDeeper — the pre-wired stack, the architectural bet, the roadmap: **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)**.\n\n## Five agents you can ship today\n\nTrigger × Skill × Channel are independent axes — pick one of each and you've architected an agent:\n\n| Agent | Trigger | Skill | Channel | The interesting part |\n|---|---|---|---|---|\n| **AI receptionist** | inbound call | qualify + book | voice | Books against the real calendar. Quote-guard, enforced read-back, `take_message` escalation to the owner. |\n| **Website chatbot** | inbound chat | the same receptionist skill | web embed | Same blueprint, different channel — channels are swappable. |\n| **Speed-to-lead** | `lead.created` event | first-touch + qualify | SMS | Fires seconds after a form submit, straight off the event bus. |\n| **Review requester** | `booking.completed` event | review ask | SMS / email | Brain recall enforces \"never ask the same customer twice.\" |\n| **Anything you describe** | any | one English sentence | any | The Studio wizard adapts its questions to the primitives your agent needs. |\n\n## The Brain — memory that compounds\n\nAgents that forget are demos. Every SeldonFrame workspace owns a **Brain**:\n\n- **The Soul** — the single source of truth an agent grounds on (identity, services, hours, pricing). Install someone else's agent and it re-grounds on *your* Soul, never their facts.\n- **Loop memory** — agents recall before acting and record after. \"Did I already ask this customer for a review?\" is a memory recall, not a bespoke flag.\n- **Notes → distilled rules** — raw observations get compiled and promoted into durable knowledge on a schedule, so every run starts smarter than the last one ended.\n\n## Money rails, built in\n\nAgents that do real work end up touching real money — so the rails are platform primitives, not an integration project:\n\n- **A prepaid wallet ledger** — UNIQUE idempotency keys and guarded never-negative decrements: a charge can't double-fire, a balance can't go below zero.\n- **Stripe Connect payouts** — `seldonframe payout` moves accrued earnings to a bank account.\n- **Checkout that fulfills** — a marketplace sale auto-provisions the deployment and re-grounds it on the buyer's business.\n- **Per-use rental billing** — every agent exposes a signed MCP endpoint; other LLMs can rent it and the ledger meters each use.\n- **Real phone numbers** — provision a number per agent (bring your own Twilio today; SF-managed metered numbers are rolling out).\n\n<sub>Fee fine print: SeldonFrame takes a 5% GMV fee only when the marketplace brings the buyer, ~2% on sales through your own SeldonFrame storefront, and $0 anywhere else.</sub>\n\n---\n\n## Operate every client from any IDE\n\nOne npm package — [`@seldonframe/mcp`](https://www.npmjs.com/package/@seldonframe/mcp) — runs as a local MCP server in every major AI-native editor. Pick yours, paste the snippet, and ask your agent to create or update a client workspace — website, booking page, intake form, CRM, and agent in one pass.\n\n<details>\n<summary><strong>Claude Code</strong></summary>\n\n```bash\nclaude mcp add seldonframe -- npx -y @seldonframe/mcp\n```\n\nOr as a plugin (auto-updates, one-liner via the marketplace):\n\n```\n/plugin marketplace add seldonframe/seldonframe\n/plugin install seldonframe@seldonframe\n```\n\n</details>\n\n<details>\n<summary><strong>Cursor</strong></summary>\n\nAdd to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"seldonframe\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@seldonframe/mcp\"]\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Windsurf</strong></summary>\n\nAdd to `~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"seldonframe\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@seldonframe/mcp\"]\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>VS Code (Copilot agent mode)</strong></summary>\n\nAdd to `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"seldonframe\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@seldonframe/mcp\"]\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Zed</strong></summary>\n\nAdd to `settings.json`:\n\n```json\n{\n  \"context_servers\": {\n    \"seldonframe\": {\n      \"source\": \"custom\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@seldonframe/mcp\"]\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Codex CLI</strong></summary>\n\nAdd to `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.seldonframe]\ncommand = \"npx\"\nargs = [\"-y\", \"@seldonframe/mcp\"]\n```\n\nOr one line: `codex mcp add seldonframe -- npx -y @seldonframe/mcp`\n\n</details>\n\nOnce connected, restart your IDE (MCP connectors load at session start), then just say:\n\n```\n> Build a workspace for my client: [business name]. [city, state]. [services]. [phone, optional].\n```\n\nSee the same six snippets, kept in sync, at [seldonframe.com/build](https://seldonframe.com/build#install).\n\n---\n\n## Self-host the whole thing\n\nPrefer to run it yourself? The entire monorepo is AGPL-3.0 — and there's a **prebuilt image**, so you don't even build it:\n\n```bash\ngit clone https://github.com/seldonframe/seldonframe.git && cd seldonframe\ncp .env.docker.example .env.docker   # add your ANTHROPIC_API_KEY or OPENAI_API_KEY\ndocker compose -f docker-compose.yml -f docker-compose.ghcr.yml up   # pulls the prebuilt image\n```\n\nBrings up Postgres, migrations, and the app on `localhost:3000` — the same dashboard, generated public sites, and API as the hosted version. Multi-arch image (amd64 + arm64) at [`ghcr.io/seldonframe/seldonframe`](https://github.com/seldonframe/seldonframe/pkgs/container/seldonframe); or `docker compose up --build` to build from source. Bring your own LLM key (Anthropic or OpenAI); SMS/voice (Twilio), email (Resend), and 1,000+ integrations (Composio) are add-your-own-key. Full guide: **[QUICKSTART.md](QUICKSTART.md#self-host)**.\n\n---\n\n## When you're ready to scale\n\nYour agency hub is **[seldonframe.com/agencies](https://seldonframe.com/agencies)** — deploy branded client workspaces, set your own client pricing, and keep the master view. Builders can still publish portable agents through **[seldonframe.com/build](https://seldonframe.com/build)** and let other LLMs rent them over MCP.\n\n## Pricing — no surprises\n\n| | |\n|---|---|\n| **Self-host** | $0 — AGPL-3.0, the entire monorepo · [`docker compose up`](QUICKSTART.md#self-host) and you're running |\n| **Builder** | $29/mo · BYOK · workspaces for businesses you operate |\n| **Managed** | $49/mo · SeldonFrame-managed AI · one workspace |\n| **Agency Starter** | $99/mo · white-label · 10 client workspaces · 0% GMV |\n| **Agency Growth** | $199/mo · 30 client workspaces · 0% GMV |\n| **Agency Scale** | $299/mo · unlimited client workspaces · API/MCP + marketplace access · 0% GMV |\n| **Build before checkout** | Create the first client workspace free, then choose the hosted plan that matches your delivery needs |\n| **Marketplace sales** | 5% only when the marketplace brings the buyer |\n## Tech stack\n\n- **Next.js 16** (App Router) + **React 19** + **TypeScript** — one deployable app: dashboard, generated public sites, and API\n- **Drizzle ORM** on **Postgres** (Neon in production; any Postgres 15+ when self-hosting)\n- **Tailwind CSS 4**\n- **pnpm workspaces + Turborepo** (monorepo)\n- **MCP server** — [`@seldonframe/mcp`](https://www.npmjs.com/package/@seldonframe/mcp), plain Node, runs locally inside your IDE\n- **Anthropic / OpenAI** (bring your own key) · **Stripe** payments · **Twilio** voice/SMS · **Resend** email\n\n## Contributing\n\nThe highest-leverage PR here is **an agent template or a vertical skill-pack** — merged templates ship to the marketplace where every SeldonFrame user can find them, and you can list your own paid variants alongside. Core, connector, and eval PRs are equally welcome.\n\n- Start with [CONTRIBUTING.md](CONTRIBUTING.md), then issues labeled `good first issue` / `help wanted`\n- House rule: agent-behavior changes ship with eval scenarios; runtime changes ship with tests\n\n## Community\n\n- 💬 [Discord](https://discord.gg/sbVUu976NW) — fastest way to get help, feedback, or just say hi\n- 🐦 [@themaxthule on X](https://x.com/themaxthule) — release notes, tips, dogfood notes\n- 📚 [Docs](https://seldonframe.com/docs) — deeper guides than this README\n- 🐛 [Issues](https://github.com/seldonframe/seldonframe/issues) · 📡 [Discussions](https://github.com/seldonframe/seldonframe/discussions)\n- ✉️ Partnerships: [hello@seldonframe.com](mailto:hello@seldonframe.com)\n\n## License\n\n[AGPL-3.0](LICENSE) for the whole monorepo. Self-host freely; if you modify it and run it as a network service, your modifications stay open. For closed-source embedding, the hosted plan is the commercial alternative — see [LICENSING.md](LICENSING.md). Same dual model as Mattermost, Plausible, and Postiz.\n\n<div align=\"center\">\n\n**Build an agent. Sell it. Get paid. — from your IDE.**\n\nIf this is the platform you've been looking for, [⭐ star the repo](https://github.com/seldonframe/seldonframe/stargazers) — it helps more builders find it.\n\n</div>\n",
  "bytes": 18438,
  "sha": "ae5e3763c507740ab7822ae46de54b70468a29027b5c3fba34f4386c9a5edade",
  "repo_slug": "seldonframe/seldonframe",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_seldonframe_mcp_6a60217f/readme"
}