About seldonframe
SeldonFrame is an open-source platform for agencies and builders to create and operate AI front offices for local-service businesses. From a business URL, coding agents can assemble branded sites, booking, intake, CRM, and agents, then run evaluations before handoff.
Key features
- 01Generate client workspaces from a business URL
- 02Build branded sites, booking, intake, and CRM
- 03Configure agents by trigger, skill, and channel
- 04Run evaluations and test bookings
- 05Operate client workspaces from an agency view
- 06Self-host with Docker
Use cases
- 01Create a local business's branded front office
- 02Set up agents for booking and lead follow-up
- 03Test agent behavior before client handoff
- 04Manage multiple client workspaces as an agency
MCP support
The local @seldonframe/mcp server connects MCP-compatible agents to SeldonFrame for creating and updating client workspaces. Agents can also be exposed through signed MCP endpoints for per-use rental.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.seldonframe.com/v1claude mcp add --transport http seldonframe https://mcp.seldonframe.com/v1{"mcpServers":{"seldonframe":{"type":"http","url":"https://mcp.seldonframe.com/v1"}}}Open in Cursor{"servers":{"seldonframe":{"type":"http","url":"https://mcp.seldonframe.com/v1"}}}Open in VS Code{"mcpServers":{"seldonframe":{"type":"http","url":"https://mcp.seldonframe.com/v1"}}}{"mcpServers":{"seldonframe":{"serverUrl":"https://mcp.seldonframe.com/v1"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
155| Parameter | Type | Required | Description |
|---|---|---|---|
| city | string | Yes | Operator's city. Drives timezone inference. |
| string | No | Optional contact email surfaced in the landing footer (NOT the operator's account email — that comes via finalize_workspace). | |
| phone | string | Yes | Business phone, any format. Renders in nav, hero, footer. |
| state | string | Yes | US state code or full name (or Canadian province). Drives timezone inference. |
| address | string | No | Optional business address. |
| same_day | boolean | No | Optional — same-day service available. Surfaces in trust strip. |
| services | array | Yes | Services / offerings the business provides — each as a plain string. The classifier reads these to pick the right CRM personality (HVAC, legal, dental, coaching, agency, default). |
| review_count | number | No | Optional — number of reviews. Surfaces in trust strip + hero proof metric. |
| service_area | array | No | Optional — cities or neighborhoods served (e.g. ['Scottsdale', 'Tempe']). |
| business_name | string | Yes | Business display name (e.g. 'Summit Air Comfort'). |
| review_rating | number | No | Optional — average star rating (e.g. 4.7). Surfaces in trust strip. |
| trust_signals | array | No | Optional — short claims like ['licensed', 'bonded', 'insured']. Surfaces in trust strip. |
| certifications | array | No | Optional — credentials like ['EPA-certified', 'NATE-certified']. Surfaces in trust strip. |
| emergency_service | boolean | No | Optional — operator offers 24/7 emergency service. Surfaces in nav + hero. |
| business_description | string | Yes | One paragraph describing the business — drives the hero subhead, about section, and (critically) the personality classifier. Include industry words verbatim ('residential HVAC', 'family-owned plumbing', 'dental practice'). |
Details
From the project READMESeldonFrame
Sell AI front offices. Deploy them in minutes.
SeldonFrame 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.
Website · For agencies · For builders · Docs · Discord
Live demos: HVAC · Med spa · Med spa · Weight loss
Ship your first client front office
claude mcp add seldonframe -- npx -y @seldonframe/mcp
Or as an auto-updating Claude Code plugin:
/plugin marketplace add seldonframe/seldonframe
/plugin install seldonframe@seldonframe
> Build a branded AI front office for my HVAC client in New Orleans.
✓ Workspace ready at acme-hvac.app.seldonframe.com
Build 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.
See a real one — a live workspace, not a mockup:
|
|
| The generated site — quote intake, reviews, and the chat agent (bottom right) | Its booking page — the real calendar the agent books against |
And 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):
Click any screenshot — this HVAC workspace is live and books real appointments. More live workspaces: Metro MedSpa · SKINNEY Medspa · Vive Ageless Weight Loss — and more on seldonframe.com.
The agency delivery loop
- Start with the client URL. SeldonFrame extracts the business facts and creates the workspace.
- Apply your agency playbook. Brand the site, booking flow, intake, CRM, and agent.
- Verify before handoff. Run evals and complete a real test booking.
- Publish and operate. Give the client a branded portal while your agency keeps the master view.
The same loop works from the dashboard, Claude Code, Cursor, Windsurf, or any MCP-compatible agent. See the agency workflow.
What an agent is made of here
Most "agent frameworks" hand you a chat loop and wish you luck. SeldonFrame gives your IDE agent the full production anatomy:
The agent model — Trigger × Skill × Channel
An agent isn't a chatbot UI; it's three independent axes:
- 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). - Skill — what it does: receptionist · review-requester · speed-to-lead · win-back · digest…
- Channel — how it speaks: voice · web chat · SMS · email · internal digest.
- 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.
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.
From agent to production loop
A production agent is a loop, not a single prompt:
Trigger → (Model + Tools + State) → Verify → Iterate, bounded by a Stop condition, improved by Evals, kept honest by Observability + Guardrails.
Two 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:
| Primitive | Status | What's there |
|---|---|---|
| Trigger | ✅ Shipped | Inbound + event triggers on the SeldonEvent bus. booking.completed → review-requester; lead.created → speed-to-lead, both sending outbound SMS/email. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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; becoming the default on-ramp next. |
The loop, drawn
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.)
Deeper — the pre-wired stack, the architectural bet, the roadmap: docs/ARCHITECTURE.md.
Five agents you can ship today
Trigger × Skill × Channel are independent axes — pick one of each and you've architected an agent:
| Agent | Trigger | Skill | Channel | The interesting part |
|---|---|---|---|---|
| AI receptionist | inbound call | qualify + book | voice | Books against the real calendar. Quote-guard, enforced read-back, take_message escalation to the owner. |
| Website chatbot | inbound chat | the same receptionist skill | web embed | Same blueprint, different channel — channels are swappable. |
| Speed-to-lead | lead.created event | first-touch + qualify | SMS | Fires seconds after a form submit, straight off the event bus. |
| Review requester | booking.completed event | review ask | SMS / email | Brain recall enforces "never ask the same customer twice." |
| Anything you describe | any | one English sentence | any | The Studio wizard adapts its questions to the primitives your agent needs. |
The Brain — memory that compounds
Agents that forget are demos. Every SeldonFrame workspace owns a Brain:
- 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.
- 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.
- 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.
Money rails, built in
Agents that do real work end up touching real money — so the rails are platform primitives, not an integration project:
- 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.
- Stripe Connect payouts —
seldonframe payoutmoves accrued earnings to a bank account. - Checkout that fulfills — a marketplace sale auto-provisions the deployment and re-grounds it on the buyer's business.
- Per-use rental billing — every agent exposes a signed MCP endpoint; other LLMs can rent it and the ledger meters each use.
- Real phone numbers — provision a number per agent (bring your own Twilio today; SF-managed metered numbers are rolling out).
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.
Operate every client from any IDE
One npm 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.
Claude Code
claude mcp add seldonframe -- npx -y @seldonframe/mcp
Or as a plugin (auto-updates, one-liner via the marketplace):
/plugin marketplace add seldonframe/seldonframe
/plugin install seldonframe@seldonframe
Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"seldonframe": {
"command": "npx",
"args": ["-y", "@seldonframe/mcp"]
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"seldonframe": {
"command": "npx",
"args": ["-y", "@seldonframe/mcp"]
}
}
}
VS Code (Copilot agent mode)
Add to .vscode/mcp.json:
{
"servers": {
"seldonframe": {
"command": "npx",
"args": ["-y", "@seldonframe/mcp"]
}
}
}
Zed
Add to settings.json:
{
"context_servers": {
"seldonframe": {
"source": "custom",
"command": "npx",
"args": ["-y", "@seldonframe/mcp"]
}
}
}
Codex CLI
Add to ~/.codex/config.toml:
[mcp_servers.seldonframe]
command = "npx"
args = ["-y", "@seldonframe/mcp"]
Or one line: codex mcp add seldonframe -- npx -y @seldonframe/mcp
Once connected, restart your IDE (MCP connectors load at session start), then just say:
> Build a workspace for my client: [business name]. [city, state]. [services]. [phone, optional].
See the same six snippets, kept in sync, at seldonframe.com/build.
Self-host the whole thing
Prefer to run it yourself? The entire monorepo is AGPL-3.0 — and there's a prebuilt image, so you don't even build it:
git clone https://github.com/seldonframe/seldonframe.git && cd seldonframe
cp .env.docker.example .env.docker # add your ANTHROPIC_API_KEY or OPENAI_API_KEY
docker compose -f docker-compose.yml -f docker-compose.ghcr.yml up # pulls the prebuilt image
Brings 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; 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.
When you're ready to scale
Your agency hub is 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 and let other LLMs rent them over MCP.
Pricing — no surprises
| Self-host | $0 — AGPL-3.0, the entire monorepo · docker compose up and you're running |
| Builder | $29/mo · BYOK · workspaces for businesses you operate |
| Managed | $49/mo · SeldonFrame-managed AI · one workspace |
| Agency Starter | $99/mo · white-label · 10 client workspaces · 0% GMV |
| Agency Growth | $199/mo · 30 client workspaces · 0% GMV |
| Agency Scale | $299/mo · unlimited client workspaces · API/MCP + marketplace access · 0% GMV |
| Build before checkout | Create the first client workspace free, then choose the hosted plan that matches your delivery needs |
| Marketplace sales | 5% only when the marketplace brings the buyer |
Tech stack
- Next.js 16 (App Router) + React 19 + TypeScript — one deployable app: dashboard, generated public sites, and API
- Drizzle ORM on Postgres (Neon in production; any Postgres 15+ when self-hosting)
- Tailwind CSS 4
- pnpm workspaces + Turborepo (monorepo)
- MCP server —
@seldonframe/mcp, plain Node, runs locally inside your IDE - Anthropic / OpenAI (bring your own key) · Stripe payments · Twilio voice/SMS · Resend email
Contributing
The 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.
- Start with CONTRIBUTING.md, then issues labeled
good first issue/help wanted - House rule: agent-behavior changes ship with eval scenarios; runtime changes ship with tests
Community
- 💬 Discord — fastest way to get help, feedback, or just say hi
- 🐦 @themaxthule on X — release notes, tips, dogfood notes
- 📚 Docs — deeper guides than this README
- 🐛 Issues · 📡 Discussions
- ✉️ Partnerships: [email protected]
License
AGPL-3.0 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. Same dual model as Mattermost, Plausible, and Postiz.
Build an agent. Sell it. Get paid. — from your IDE.
If this is the platform you've been looking for, ⭐ star the repo — it helps more builders find it.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.


