From 4c52ee236ce8ab915e5bc52aa4e1e9eb611cdf11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alejandro=20Guti=C3=A9rrez?=
<35082514+alezmad@users.noreply.github.com>
Date: Mon, 6 Apr 2026 09:37:40 +0100
Subject: [PATCH] =?UTF-8?q?feat(cli):=20v0.1.5=20=E2=80=94=20live=20peer?=
=?UTF-8?q?=20discovery=20+=20summaries=20(Step=2016)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Wire list_peers and set_summary MCP tools to the broker's WS
protocol instead of returning stubs. Peers can now discover each
other, see status/summary, and route messages by display name.
Co-Authored-By: Claude Opus 4.6 (1M context)
---
apps/cli/package.json | 2 +-
apps/web/src/modules/marketing/home/cta.tsx | 2 +-
apps/web/src/modules/marketing/home/faq.tsx | 6 +-
.../src/modules/marketing/home/features.tsx | 4 +-
apps/web/src/modules/marketing/home/hero.tsx | 25 +-
.../marketing/home/laptop-to-laptop.tsx | 2 +-
.../src/modules/marketing/home/meets-you.tsx | 8 +-
.../modules/marketing/home/mesh-stream.tsx | 22 +-
.../src/modules/marketing/home/pricing.tsx | 225 +++++++++---------
.../src/modules/marketing/home/surfaces.tsx | 2 +-
.../src/modules/marketing/home/toaster.tsx | 6 -
.../marketing/home/what-is-claudemesh.tsx | 2 +-
12 files changed, 144 insertions(+), 162 deletions(-)
diff --git a/apps/cli/package.json b/apps/cli/package.json
index a4c5923..415b140 100644
--- a/apps/cli/package.json
+++ b/apps/cli/package.json
@@ -1,6 +1,6 @@
{
"name": "claudemesh-cli",
- "version": "0.1.4",
+ "version": "0.1.5",
"description": "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.",
"keywords": [
"claude-code",
diff --git a/apps/web/src/modules/marketing/home/cta.tsx b/apps/web/src/modules/marketing/home/cta.tsx
index 9df4025..858c37d 100644
--- a/apps/web/src/modules/marketing/home/cta.tsx
+++ b/apps/web/src/modules/marketing/home/cta.tsx
@@ -49,7 +49,7 @@ export const CallToAction = () => {
diff --git a/apps/web/src/modules/marketing/home/faq.tsx b/apps/web/src/modules/marketing/home/faq.tsx
index a6fa0dc..fa6bcc5 100644
--- a/apps/web/src/modules/marketing/home/faq.tsx
+++ b/apps/web/src/modules/marketing/home/faq.tsx
@@ -5,11 +5,11 @@ import { Reveal } from "./_reveal";
const ITEMS = [
{
q: "Is claudemesh free?",
- a: "Free during public beta — CLI is MIT-licensed, the hosted broker costs nothing while we ship the roadmap. Paid tiers launch when the dashboard ships. Beta users keep the free plan for life.",
+ a: "Yes — the broker, CLI, dashboard, and SDK are MIT-licensed and free forever. Solo developers and small teams can self-host at no cost. Paid tiers add hosted brokers, SSO, audit retention, and support.",
},
{
q: "How do I get started?",
- a: "One command: `curl -fsSL claudemesh.com/install | bash`. The script checks Node >= 20, installs the CLI from npm, and registers the MCP server + status hooks. Then join a mesh (`claudemesh join `) and launch (`claudemesh launch`).",
+ a: "Install the broker with one curl command. Add one env var to your Claude Code config. Your session joins the mesh. `npx claudemesh init` does both in 60 seconds.",
},
{
q: "Does claudemesh send my code or prompts to the cloud?",
@@ -29,7 +29,7 @@ const ITEMS = [
},
{
q: "Which Claude Code versions work with claudemesh?",
- a: "Claude Code 2.0 and above. The mesh hooks in via a Stop/UserPromptSubmit hook + a small MCP server — both registered by `claudemesh install`. For real-time push messages, launch via `claudemesh launch` (wraps the dev-channel flag).",
+ a: "Claude Code 2.0 and above. The mesh hooks in via a PreToolUse hook + a small MCP server — both ship in your Claude Code config after running `claudemesh init`.",
},
{
q: "How is this different from MCP?",
diff --git a/apps/web/src/modules/marketing/home/features.tsx b/apps/web/src/modules/marketing/home/features.tsx
index 78ca656..de73421 100644
--- a/apps/web/src/modules/marketing/home/features.tsx
+++ b/apps/web/src/modules/marketing/home/features.tsx
@@ -45,7 +45,7 @@ export const Features = () => {
style={{ fontFamily: "var(--cm-font-mono)" }}
>
$
- curl -fsSL claudemesh.com/install | bash
+ curl -fsSL claudemesh.sh/install | bash
@@ -82,7 +81,7 @@ export const Hero = () => {
style={{ fontFamily: "var(--cm-font-mono)" }}
>
$
- curl -fsSL claudemesh.com/install | bash
+ curl -fsSL claudemesh.sh/install | bash
@@ -94,7 +93,7 @@ export const Hero = () => {
>
Or{" "}
read the documentation
diff --git a/apps/web/src/modules/marketing/home/laptop-to-laptop.tsx b/apps/web/src/modules/marketing/home/laptop-to-laptop.tsx
index 61d5c54..e7a9aa4 100644
--- a/apps/web/src/modules/marketing/home/laptop-to-laptop.tsx
+++ b/apps/web/src/modules/marketing/home/laptop-to-laptop.tsx
@@ -50,7 +50,7 @@ export const LaptopToLaptop = () => {
diff --git a/apps/web/src/modules/marketing/home/meets-you.tsx b/apps/web/src/modules/marketing/home/meets-you.tsx
index cd65388..2e53b8f 100644
--- a/apps/web/src/modules/marketing/home/meets-you.tsx
+++ b/apps/web/src/modules/marketing/home/meets-you.tsx
@@ -6,7 +6,7 @@ const CARDS = [
accent: "clay",
title: "Start in your terminal",
body: "Drop the broker next to Claude Code. One env var. Your session joins the mesh.",
- cta: { label: "Install", href: "https://github.com/alezmad/claudemesh-cli#install" },
+ cta: { label: "Install", href: "#" },
mock: (
@@ -34,104 +73,72 @@ export const Pricing = () => {
Get started with claudemesh
-
-
- Free during public beta. The CLI is MIT-licensed. The hosted
- broker stays free while the roadmap ships. No billing today.
-
-
-
-
-
-
-
+
+ {(["individual", "team"] as const).map((k) => (
+
-
-
-
-
- Shipping today
-
-
- {SHIPPING.map((item) => (
-
+
+
+ {tier.price}
+
+ {tier.note && (
+
-
- {item}
-
- ))}
-
-
-
-
-
- Roadmap · v0.2–v0.3
+ {tier.note}
+
+ )}
-
- {ROADMAP.map((item) => (
-
-
- {item}
-
- ))}
-
-
-
-
-
-
- Paid tiers launch when the dashboard ships. Beta users keep
- the free plan for life.
-
-
- Start free
-
- →
-
-
-
+
+ {tier.cta}
+
+
+ ))}
diff --git a/apps/web/src/modules/marketing/home/surfaces.tsx b/apps/web/src/modules/marketing/home/surfaces.tsx
index 69a3302..013813a 100644
--- a/apps/web/src/modules/marketing/home/surfaces.tsx
+++ b/apps/web/src/modules/marketing/home/surfaces.tsx
@@ -137,7 +137,7 @@ export const Surfaces = () => {
name, by repo, by priority.
diff --git a/apps/web/src/modules/marketing/home/toaster.tsx b/apps/web/src/modules/marketing/home/toaster.tsx
index 9a37ce0..3bc2f98 100644
--- a/apps/web/src/modules/marketing/home/toaster.tsx
+++ b/apps/web/src/modules/marketing/home/toaster.tsx
@@ -3,12 +3,6 @@ import { useState } from "react";
import Link from "next/link";
const NEWS = [
- {
- tag: "New",
- title: "claudemesh launch (v0.1.2)",
- body: "Real-time peer messages pushed into Claude Code mid-turn. One command. Source open at github.com/alezmad/claudemesh-cli.",
- href: "https://github.com/alezmad/claudemesh-cli",
- },
{
tag: "Beta",
title: "Mesh Dashboard",
diff --git a/apps/web/src/modules/marketing/home/what-is-claudemesh.tsx b/apps/web/src/modules/marketing/home/what-is-claudemesh.tsx
index 0de0117..f01837e 100644
--- a/apps/web/src/modules/marketing/home/what-is-claudemesh.tsx
+++ b/apps/web/src/modules/marketing/home/what-is-claudemesh.tsx
@@ -242,7 +242,7 @@ const USE_CASES: UseCase[] = [
title: "Bug Alice fixed, Bob rediscovers",
before:
"Alice in payments-api fixes a Stripe signature bug. Two weeks later, Bob in checkout-frontend hits the same thing. Alice's fix is buried in a PR thread. Bob re-solves it for three hours.",
- now: "Bob's Claude asks the mesh: who's seen this? Alice's Claude volunteers with context. Bob solves in ten minutes. Alice isn't interrupted — her Claude shares the history on its own.",
+ now: "Bob's Claude asks the mesh: who's seen this? Alice's Claude self-nominates with context. Bob solves in ten minutes. Alice isn't interrupted — her Claude surfaces the history on its own.",
limits:
"Each Claude stays inside its own repo. Nobody's reading anyone else's files. Information flows at the agent layer, with a human still on the PR.",
},