diff --git a/apps/web/src/app/[locale]/(marketing)/getting-started/page.tsx b/apps/web/src/app/[locale]/(marketing)/getting-started/page.tsx index bf9da1c..60c1816 100644 --- a/apps/web/src/app/[locale]/(marketing)/getting-started/page.tsx +++ b/apps/web/src/app/[locale]/(marketing)/getting-started/page.tsx @@ -146,46 +146,23 @@ export default function GettingStartedPage() {

- One command installs the CLI globally and configures Claude Code. - The script is short and auditable —{" "} + One command. If you get a permissions error, see{" "} - read it first - {" "} - if you prefer. + npm docs + + .

-
- or install manually: - - npm install -g claudemesh-cli && claudemesh install - -
- -

- Close and reopen Claude Code (or your IDE with Claude Code - extension). This loads the claudemesh MCP server so the 43 mesh - tools appear. -

-
- - &2; } - -say "" -say "\${BOLD}claudemesh-cli installer\${RESET}" -say "$(printf '%.0s─' {1..40})" - -# --- preflight ------------------------------------------------------ - -if ! command -v node >/dev/null 2>&1; then - err "Node.js is not installed." - say " Install Node.js 20 or newer: \${BOLD}https://nodejs.org\${RESET}" - say " Or via nvm: \${DIM}curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash\${RESET}" - exit 1 -fi - -NODE_MAJOR=$(node -p "process.versions.node.split('.')[0]") -if [ "$NODE_MAJOR" -lt 20 ]; then - err "Node.js $(node -v) is too old — claudemesh-cli needs >= 20." - say " Upgrade: \${BOLD}https://nodejs.org\${RESET}" - exit 1 -fi -ok "Node.js $(node -v)" - -if ! command -v npm >/dev/null 2>&1; then - err "npm is not installed (usually ships with Node)." - exit 1 -fi -ok "npm $(npm -v)" - -# --- install -------------------------------------------------------- - -say "" -say "Installing \${BOLD}claudemesh-cli\${RESET} from npm…" -if ! npm install -g claudemesh-cli; then - err "npm install failed." - say " If this is a permissions error on macOS/Linux, try:" - say " \${DIM}sudo npm install -g claudemesh-cli\${RESET}" - say " or configure npm to use a user-owned prefix:" - say " \${DIM}https://docs.npmjs.com/resolving-eacces-permissions-errors\${RESET}" - exit 1 -fi -ok "claudemesh-cli installed ($(claudemesh --version))" - -# --- register MCP + hooks ------------------------------------------ - -say "" -say "Registering Claude Code MCP server + status hooks…" -if ! claudemesh install; then - err "claudemesh install failed — run it manually to see the error." - exit 1 -fi - -# --- done ----------------------------------------------------------- - -say "" -say "\${GREEN}\${BOLD}Done.\${RESET}" -say "" -say "Next steps:" -say " 1. Restart Claude Code so the MCP tools appear." -say " 2. Join a mesh: \${BOLD}claudemesh join \${RESET}" -say " 3. Launch with push: \${BOLD}claudemesh launch\${RESET}" -say "" -say "Need an invite? Visit \${BOLD}https://claudemesh.com\${RESET}" -say "" -`; - -export function GET(): Response { - return new Response(SCRIPT, { - status: 200, - headers: { - "Content-Type": "text/x-shellscript; charset=utf-8", - "Cache-Control": "public, max-age=300, s-maxage=600", - "X-Content-Type-Options": "nosniff", - }, - }); -} diff --git a/apps/web/src/modules/join/install-toggle.tsx b/apps/web/src/modules/join/install-toggle.tsx index b531144..8aa6ff3 100644 --- a/apps/web/src/modules/join/install-toggle.tsx +++ b/apps/web/src/modules/join/install-toggle.tsx @@ -6,7 +6,7 @@ interface Props { } const JOIN_CMD = (token: string) => `claudemesh join ${token}`; -const INSTALL_CMD = "curl -fsSL https://claudemesh.com/install | bash"; +const INSTALL_CMD = "npm i -g claudemesh-cli"; export const InstallToggle = ({ token }: Props) => { const [hasCli, setHasCli] = useState<"unknown" | "yes" | "no">("unknown"); @@ -127,8 +127,7 @@ export const InstallToggle = ({ token }: Props) => { className="mt-2 text-xs text-[var(--cm-fg-tertiary)]" style={{ fontFamily: "var(--cm-font-serif)" }} > - Installs the CLI, registers the MCP server + status hooks in - Claude Code. Restart Claude Code after this step. + Installs the CLI globally. Requires Node.js 20+.

  • @@ -175,10 +174,8 @@ export const InstallToggle = ({ token }: Props) => { className="mt-2 text-xs text-[var(--cm-fg-tertiary)]" style={{ fontFamily: "var(--cm-font-serif)" }} > - Restart Claude Code first, then launch. Peers see you appear on - the mesh. Or run plain{" "} - claude{" "} - — tools work, but messages are pull-only. + Spawns Claude Code with mesh connectivity, peer messaging, + and native access to deployed MCP services.

  • diff --git a/apps/web/src/modules/marketing/home/faq.tsx b/apps/web/src/modules/marketing/home/faq.tsx index 907360d..cca48fa 100644 --- a/apps/web/src/modules/marketing/home/faq.tsx +++ b/apps/web/src/modules/marketing/home/faq.tsx @@ -9,7 +9,7 @@ const ITEMS = [ }, { q: "How do I get started?", - a: "Three commands. First: `curl -fsSL https://claudemesh.com/install | bash` — this checks Node >= 20, installs the CLI from npm, and registers the MCP server + status hooks. Then restart Claude Code. Second: `claudemesh join ` — paste the invite link to generate your ed25519 keypair and enroll with the broker. Third: `claudemesh launch --name YourName` — this spawns Claude Code with real-time peer messaging. See the Getting Started guide for full details.", + a: "Three commands. First: `npm i -g claudemesh-cli` — installs the CLI from npm (requires Node >= 20). Second: `claudemesh join ` — paste the invite link to generate your ed25519 keypair and enroll with the broker. Third: `claudemesh launch --name YourName` — spawns Claude Code with mesh connectivity, peer messaging, and deployed MCP services.", }, { q: "Does claudemesh send my code or prompts to the cloud?", diff --git a/apps/web/src/modules/marketing/home/hero.tsx b/apps/web/src/modules/marketing/home/hero.tsx index 20b551a..a98936e 100644 --- a/apps/web/src/modules/marketing/home/hero.tsx +++ b/apps/web/src/modules/marketing/home/hero.tsx @@ -83,7 +83,7 @@ export const Hero = () => { style={{ fontFamily: "var(--cm-font-mono)" }} > $ - curl -fsSL claudemesh.com/install | bash + npm i -g claudemesh-cli