OpenClaw is the local-first agent framework under Lumina: an LLM brain wired to real chat channels (iMessage, Telegram, Slack), driven by Markdown skills and agents. Not a stateless chatbot — a daemon that wakes on a heartbeat, holds long-term memory, and executes multi-step work across sales, marketing, ops, and engineering. Two browser surfaces let you watch and steer it live.
All four share one Clerk login. Sign in once at app.holalumina.com/admin/login → every surface below opens with no re-auth (Clerk satellite-domain SSO).
Per-tenant agent-orchestration dashboard. A chat panel where you talk directly to your agents and watch them work — e.g. "create an HTML email previewing our retreat package" renders the HTML right in the thread. Page title: "Mission Control — AI Agent Orchestration Dashboard."
🔒 Sign in first, then open ↓Per-tenant generative design shell. Chat to build pages and emails — "build an HTML landing page,
headline X, button Y" renders inline. Hardened wedge surface (spec 101); handshakes to the main app via
/api/od-handshake so it inherits your session with no re-auth.
Message an OpenClaw agent from your phone. Telegram is a first-class gateway channel (the telegram
plugin runs on the gateway alongside clawpipe + hindsight).
@BotFather → /newbot → copy the bot tokenopenclaw.json / .env/startOAuth broker for connecting third-party apps (Gmail, Slack, Calendars, CRMs) to a tenant's agents — so a skill can act in those tools. Runs as a gateway plugin + onboarding OAuth flow.
/api/onboarding/composio-callback mints state, token saved to the tenant vaultmc-*) sits behind the gateway access login;
Open Design inherits your app session via /api/od-handshake — cold-clicking it before sign-in returns 401.
Lumina's Open Design (lumina.opendesign.holalumina.com) is not provisioned yet → 404 (coming soon).Next.js 15 app on Vercel, Clerk auth, multi-tenant Postgres (Neon, RLS). Where humans create campaigns, manage sites, and (soon) work the lead pipeline.
Create & orchestrate retreat / workshop / webinar / newsletter campaigns. Draft → Generating → Ready → Published. Generation is multi-agent (copy + landing page + HTML email).
Register & manage tenant sites and landing pages (name, URL, CMS link). New-page wizard wires copy + design.
Unified inbox + pipeline for inbound leads. Front-end not built yet — backend pieces exist (CRM resolver, sales agents). Full flow in Coming Soon ↓
Draft, gate & send newsletters via Resend with an approval workflow.
Manage events/registrations and promotional offers tied to campaigns.
Provision/monitor tenant gateway instances; manage org members & roles.
Render artifacts (signed-URL, RLS-scoped) and manage generated slide decks / presentations.
A new tenant ("Eric Edmeades") boots as an iMessage-channel agent on the shared platform library — a coach agent + the runtime plugin stack + the baked-in ClawSuite. Behind it: 63 agents, 397 skills.
Operator: Eric Edmeades · domain ericedmeades.com · tier pro ·
channel iMessage (via the immutable lumina-relay). Boots the canonical coaching agent
(agents/sales/coach).
Declared in pack.yaml, health-checked at boot:
Vanilla (baked into the image):
Every tenant draws from this library. A sample by department:
Each skill is a Markdown capability (~24 tokens to route) with a slash command. A demo-worthy slice:
python3 -m compiler.engine.cli skill findTwo paths. Self-serve onboarding spins up a tenant from the browser (conversational). Operator provisioning stands up the gateway daemon + channels on the host. A tenant = a brand identity + a plugin pack + its slice of agents & skills.
Conversational setup driven by ClawInterview — collects brand, channel, and integrations, then provisions a
Railway instance. APIs under /api/onboarding/*.
POST /api/onboarding/start/api/onboarding/chat — adaptive Q&A captures brand voice, org, goals/api/onboarding/telegram-verify, /imessage-welcome)/api/onboarding/complete → Railway provisions the instance; track via /api/onboarding/statusStand up the gateway daemon + channels manually. Full runbook: docs/multi-tenant-guide.md.
Gate: openclaw doctor passes with zero errors.
# 1 · infra + secrets sudo sysadminctl -addUser <tenant> -fullName "<Name>" sudo -u <tenant> npm i -g openclaw@latest mkdir -p ~/.openclaw && chmod 700 ~/.openclaw # .env → 600 doppler setup # OPENCLAW_PORT, WEBHOOK_PORT, bot tokens… # 2 · launchd services (gateway · webhook-proxy · cloudflared) scripts/<tenant>/install-<tenant>-daemons.sh # ref working example: scripts/yumi/ # 3 · Cloudflare tunnel → localhost:<webhook-port> # 4 · install + verify sudo bash scripts/<tenant>/install-<tenant>-daemons.sh sudo -u <tenant> openclaw doctor
Copy the skeleton at tenants/_template/ → tenants/<name>/ and fill in:
bash scripts/setup-packages.sh — editable-installs clawscaffold, clawagentskill, clawwrap, clawpipe, lumina-pack.Ceremonia is a psychedelic-healing retreat company ($5k–$25k retreats). Its agents qualify inbound seekers over iMessage/SMS, build & run campaigns, screen participants for medical safety, and process retreat media — all brand-gated to Ceremonia's voice.
The marketing site (Next.js on Vercel), brand-tokenized from tenants/ceremonia/design-system.
Two families: runtime plugins on the gateway (extend what live agents can do) and knowledge / dev plugins (MCP tools that make building & recalling faster).
Smart LLM router for OpenClaw. Picks the cheapest model that can do the job (tiers: simple → standard → complex → reasoning) and logs tokens, cost & latency per tenant for billing.
Persistent cross-session memory / recall (vectorize-io), tenant-isolated at the DB layer. An agent remembers facts & decisions across days, not just within one session.
Semantic search over code + curated memory (HNSW vectors). "Where is X handled?" / "what did we decide?" — better than grep for fuzzy questions.
LLM observability (comet-ml/opik) — traces, evals and quality scoring of agent runs.
Headless browser control for agents — navigate, fill forms, scrape, verify live pages.
Context-efficiency plugin — keeps long agent context coherent while trimming token cost.
Multi-agent orchestration MCP — spin up swarms, route tasks, store/recall learned patterns.
Workspace code intelligence — "how does X work / why / what breaks if I touch it."
Sandbox that runs analysis off-context — only the answer enters the conversation, not the raw bytes.
The "claw" packages are Python tools baked into the gateway image. They turn interviews into specs,
specs into scaffolds, and chain skills into pipelines. Install:
bash scripts/setup-packages.sh.
Markdown pipeline engine — chains skills into multi-step workflows (intake → CRM → email), with resume, lessons-learned, goals & heartbeat-driven runs.
# run / resume / inspect a pipeline python -m clawpipe run <pipeline> python -m clawpipe resume <id> python -m clawpipe show | lessons | goals
Conversational data collection — runs an adaptive Q&A over iMessage/Telegram and writes structured records (e.g. retreat intake → Airtable). Powers the onboarding interview engine.
# drives onboarding intake; invoked by # the interviewer agent + # /website-intake-interview
Scaffolds new agents & tenants from a spec (assemble / extract / interview). External package — github.com/austinmao/clawscaffold.
# discover, then scaffold a skill/agent python -m clawagentskill find <query> python -m clawagentskill adopt | port | scan
Generates technical specs & contracts (TDD-enforced) and runs eval baselines (Opik-scored).
Bundles & governs outbound — the targets.yaml + outbound-policy.yaml gate that
validates every WhatsApp/email/Slack send target.
Skill discovery + scaffold validation — find / adopt / port / scan / status. Used in pre-commit & harness-eval baselines.
ClawInterview collects a retreat seeker's answers over iMessage →
Clawpipe runs the qualify→CRM→email pipeline → the outbound send is validated by the
Clawwrap gate → the run is logged for Opik scoring. No step touches a hardcoded address;
the gate resolves every target.Channels feed a gateway daemon on Hetzner; the brain routes through Manifest to the LLMs; state lives in Neon; the web surfaces deploy on Vercel; tenant instances orchestrate via Railway + Cloudflare.
The backend muscle exists (CRM resolvers, sales agents, the outbound gate). What's missing is the operator front-end. Here's the flow it will expose:
A single cockpit to see every inbound lead, where it came from, what the agent already said, and what to do next — instead of leads scattered across iMessage threads, forms, and the CRM.
1. Capture Form / iMessage / Telegram / webinar reg → lead created 2. Qualify /qualify-lead scores intent & fit; Lumina agent engages warmly 3. Screen programs/onboarding agents flag medical contraindications 4. Route director agent assigns → enrollment / nurture / concierge 5. Track synced to CRM (Attio resolver); pipeline stage updated 6. Close outbound (clawwrap gate) → operator approves → send ── the missing piece: a /admin/leads UI over all six steps ──
Until the UI ships, the pipeline runs agent-side and surfaces in Mission Control chat. The front-end will turn it into a sortable board with stage filters, lead scoring, and one-click approvals.
/api/tool-call gateway endpoint
(proposed) to let dashboards probe any plugin tool directly.