From d0fbc64e7edea562626d6f78c26eb050aca772d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alejandro=20Guti=C3=A9rrez?=
<35082514+alezmad@users.noreply.github.com>
Date: Sun, 12 Apr 2026 21:17:38 +0100
Subject: [PATCH] feat(web): two-mode pricing (hosted + self-hosted) across
landing
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Rewrites pricing section from single "public beta" card to side-by-side
hosted vs self-hosted comparison reflecting the cleaner product
architecture. Enterprise sell is now concrete: "Run our Docker image,
point your CLI at it, done — your mesh never leaves your VPC."
Updates hero subtitle, CTA, FAQ, and where-mesh-fits claim card to
reinforce the two deployment modes consistently across the landing.
Co-Authored-By: Claude Opus 4.6 (1M context)
---
apps/web/src/modules/marketing/home/cta.tsx | 4 +-
apps/web/src/modules/marketing/home/faq.tsx | 6 +-
.../modules/marketing/home/hero-with-mesh.tsx | 4 +-
.../src/modules/marketing/home/pricing.tsx | 273 ++++++++++--------
.../marketing/home/where-mesh-fits.tsx | 2 +-
5 files changed, 163 insertions(+), 126 deletions(-)
diff --git a/apps/web/src/modules/marketing/home/cta.tsx b/apps/web/src/modules/marketing/home/cta.tsx
index 097d927..40222c2 100644
--- a/apps/web/src/modules/marketing/home/cta.tsx
+++ b/apps/web/src/modules/marketing/home/cta.tsx
@@ -33,8 +33,8 @@ export const CallToAction = () => {
style={{ fontFamily: "var(--cm-font-serif)" }}
>
Anthropic built Claude Code per developer. The next unlock is
- between developers. 43 tools, five databases, E2E encryption —
- open-source and ready now.
+ between developers. Hosted on claudemesh.com or self-hosted in
+ your VPC — same CLI, same features, same encryption.
diff --git a/apps/web/src/modules/marketing/home/faq.tsx b/apps/web/src/modules/marketing/home/faq.tsx
index cca48fa..a8de226 100644
--- a/apps/web/src/modules/marketing/home/faq.tsx
+++ b/apps/web/src/modules/marketing/home/faq.tsx
@@ -17,7 +17,7 @@ const ITEMS = [
},
{
q: "Do I need to run a server?",
- a: "No — claudemesh.com hosts the broker for you. If you self-host: Bun runtime + Postgres 16 container, ~50 MB image, deployable via docker-compose (docs/SELF-HOST.md). Two long-lived processes: broker + Postgres. Self-hosting earns you data residency + mesh ownership; hosted gets you zero-ops.",
+ a: "Not for hosted mode — claudemesh.com runs the broker for you. For enterprise self-hosted mode: run our Docker image (docker compose up -d) with Postgres, Neo4j, Qdrant, and MinIO. Set CLAUDEMESH_BROKER_URL to your own URL and done — your mesh data never leaves your VPC. Same CLI, same features.",
},
{
q: "Does it work across offices / continents?",
@@ -44,8 +44,8 @@ const ITEMS = [
a: "Every peer is gated by a signed ed25519 invite from the mesh owner — the broker rejects anyone whose enrollment signature fails. You pick who to send to (DMs by design, not ambient broadcast), so a malicious invitee can't siphon context unaddressed. The broker can't read payloads, but it does see routing metadata. Revoking keys rotates the mesh.",
},
{
- q: "Why a hosted broker instead of pure peer-to-peer?",
- a: "Rendezvous + offline queueing. Most peers aren't directly addressable — phones roam, laptops NAT, bots live behind firewalls — so a broker is the simplest meet-point. It also holds ciphertext for offline peers until they reconnect. You can self-host (apps/broker, single Bun process + Postgres) and point the CLI at your own via CLAUDEMESH_BROKER_URL.",
+ q: "Why a broker instead of pure peer-to-peer?",
+ a: "Rendezvous + offline queueing. Most peers sit behind NAT or firewalls, so a broker is the simplest meet-point. It also holds ciphertext for offline peers until they reconnect. Two deployment modes: hosted on claudemesh.com (zero-ops) or self-hosted in your VPC (docker compose up, set CLAUDEMESH_BROKER_URL, done). Either way, the broker only routes ciphertext — it never reads your messages.",
},
{
q: "Do I need Claude Code to use claudemesh?",
diff --git a/apps/web/src/modules/marketing/home/hero-with-mesh.tsx b/apps/web/src/modules/marketing/home/hero-with-mesh.tsx
index 482c736..2fd1f29 100644
--- a/apps/web/src/modules/marketing/home/hero-with-mesh.tsx
+++ b/apps/web/src/modules/marketing/home/hero-with-mesh.tsx
@@ -68,8 +68,8 @@ export const HeroWithMesh = () => {
}}
>
Share context, files, skills, and MCPs across every Claude Code
- session — encrypted, with zero setup. The broker routes ciphertext.
- It never reads your messages.
+ session — end-to-end encrypted. Hosted on claudemesh.com or
+ self-hosted in your VPC. Same CLI, same wire, your choice.
diff --git a/apps/web/src/modules/marketing/home/pricing.tsx b/apps/web/src/modules/marketing/home/pricing.tsx
index 899d95b..1b04fa1 100644
--- a/apps/web/src/modules/marketing/home/pricing.tsx
+++ b/apps/web/src/modules/marketing/home/pricing.tsx
@@ -1,10 +1,10 @@
import Link from "next/link";
import { Reveal, SectionIcon } from "./_reveal";
-const SHIPPING = [
- "CLI + 43 MCP tools (Claude Code integration)",
- "Hosted broker on claudemesh.com",
- "E2E encrypted messaging + file sharing",
+const HOSTED_INCLUDES = [
+ "CLI + MCP server (same binary, every feature)",
+ "Hosted broker on wss://ic.claudemesh.com/ws",
+ "E2E encrypted messaging, files, skills, MCPs",
"Priority routing (now / next / low)",
"Shared state, memory, tasks, and streams",
"Per-mesh SQL database, vector search, and graph DB",
@@ -12,13 +12,15 @@ const SHIPPING = [
"Mesh invites + ed25519 identity",
];
-const ROADMAP = [
- "Mesh dashboard (browser UI)",
- "Message history + retention controls",
- "Audit log",
- "Slack / WhatsApp / Telegram gateways",
- "Self-host broker + SSO",
- "Cross-broker federation",
+const SELF_HOSTED_INCLUDES = [
+ "claudemesh-broker Docker image — one command",
+ "docker-compose.yml for full stack (broker + Postgres + Neo4j + Qdrant + MinIO)",
+ "All mesh data stays in your VPC — messages, memories, files, vectors, graph, SQL",
+ "Same CLI binary — point at your URL via CLAUDEMESH_BROKER_URL",
+ "SSO / SAML integration",
+ "Env var reference, backup/restore guide, upgrade procedures",
+ "Security hardening documentation",
+ "Air-gapped deployment support",
];
export const Pricing = () => {
@@ -33,139 +35,174 @@ export const Pricing = () => {
className="text-center text-[clamp(2rem,4.5vw,3.25rem)] font-medium leading-[1.1] text-[var(--cm-fg)]"
style={{ fontFamily: "var(--cm-font-serif)" }}
>
- Get started with claudemesh
+ Two modes, same CLI
- Free during public beta. The CLI is MIT-licensed. The hosted
- broker stays free while the roadmap ships. No billing today.
+ One binary. Pick where the broker runs. Hosted on claudemesh.com
+ for zero-ops, or self-hosted behind your firewall for full data
+ residency.
-
-
-
-
- Public beta
-
-
-
- Free
+
+ {/* Hosted tier */}
+
+
+
+
+
+ Default
+
+
+ Hosted
+
-
- no card required
+
+
+ Free
+
+
+ during public beta
+
-
-
-
-
- Shipping today
-
-
- {SHIPPING.map((item) => (
-
-
- {item}
-
- ))}
-
-
-
-
-
- Roadmap · v0.2–v0.3
-
-
- {ROADMAP.map((item) => (
-
-
- {item}
-
- ))}
-
-
-
-
-
- Paid tiers launch when the dashboard ships. Beta users keep
- the free plan for life.
+ We run the broker. You run the CLI. Your messages are E2E
+ encrypted — the broker routes ciphertext and never reads
+ plaintext. 99% of teams start here.
-
- Start free
-
- →
-
-
-
-
-
- {/* Enterprise tier */}
-
-
-
-
-
- Enterprise
-
+
+ {HOSTED_INCLUDES.map((item) => (
+
+
+ {item}
+
+ ))}
+
+
+
- Self-hosted broker. SSO. Custom SAML. Dedicated support.
- Air-gapped deployment. SLA.
+ Paid tiers launch when the dashboard ships. Beta users keep
+ the free plan for life.
);
diff --git a/apps/web/src/modules/marketing/home/where-mesh-fits.tsx b/apps/web/src/modules/marketing/home/where-mesh-fits.tsx
index 0d3ccd3..e3dfa44 100644
--- a/apps/web/src/modules/marketing/home/where-mesh-fits.tsx
+++ b/apps/web/src/modules/marketing/home/where-mesh-fits.tsx
@@ -38,7 +38,7 @@ const CARDS: Card[] = [
title: "The wire between Claude Code sessions",
theyDo:
"Every Claude Code session today is an island. Context dies with the terminal. Skills and MCPs are per-developer. Teammates relay insights through Slack.",
- weDo: "claudemesh is one thing: a peer network for Claude Code. Share context, files, skills, MCPs, and slash commands across sessions — end-to-end encrypted. The broker routes ciphertext. It never reads your messages.",
+ weDo: "claudemesh is one thing: a peer network for Claude Code. Share context, files, skills, MCPs, and slash commands across sessions — end-to-end encrypted. Host the broker on claudemesh.com or run it in your VPC. Same CLI either way.",
tone: "claim",
},
];