From 16b64cedef33ba53fd2358a07ba35ddb97cff174 Mon Sep 17 00:00:00 2001 From: Sean Robbins Date: Sun, 9 Aug 2026 14:42:22 -0400 Subject: [PATCH 1/6] docs(site): marketing copy pass and accurate release publish recipe Rewrite landing copy for checkpoints, packets, model-down recovery, and durable inbox without AI filler. Fix npm publish token expansion in the release runbook. Clarify Wrangler as the site deploy path. --- docs/guides/release.md | 19 +++-- site/README.md | 6 +- site/public/index.html | 179 +++++++++++++++++++++++------------------ 3 files changed, 119 insertions(+), 85 deletions(-) diff --git a/docs/guides/release.md b/docs/guides/release.md index 7f91201..ac4d3d3 100644 --- a/docs/guides/release.md +++ b/docs/guides/release.md @@ -114,6 +114,10 @@ Optional second token name for CI later: `3notch-cli-publish-gha` (no IP lock; s From the project root, with `package.json` already at the release version: ```bash +# Publish from the tree you intend to ship (usually up-to-date main) +git checkout main && git pull +node -p "require('./package.json').version" # confirm expected version + npm run build npm run release:check @@ -121,26 +125,27 @@ npm run release:check read -rs "NPM_TOKEN?Paste npm token from 1Password: " echo export NPM_TOKEN +test -n "$NPM_TOKEN" || { echo "empty token"; exit 1; } npm_cfg="$(mktemp)" chmod 600 "$npm_cfg" -printf '%s\n' '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' > "$npm_cfg" +# Double quotes required so ${NPM_TOKEN} expands (single quotes write the literal text) +printf '%s\n' "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > "$npm_cfg" export NPM_CONFIG_USERCONFIG="$npm_cfg" -trap 'rm -f -- "$npm_cfg"' EXIT +trap 'rm -f -- "$npm_cfg"; unset NPM_TOKEN' EXIT npm whoami npm publish --access public - -unset NPM_TOKEN +npm view @3notch/cli version npm run release:status -- --require-published ``` What this does: -- Keeps the token out of the project tree and out of your permanent user `.npmrc` if you prefer +- Publishes the current checkout (not whatever happens to be on GitHub unless you pulled) +- Keeps the token out of the project tree and out of a permanent project `.npmrc` - Uses a mode-`600` temp npm userconfig and deletes it on shell exit -- Confirms identity before publish -- Fails the status check until registry `latest` equals `package.json` +- Confirms identity before publish; fails status check until registry `latest` equals `package.json` Dry-run (no registry write): diff --git a/site/README.md b/site/README.md index 5d788a1..9fda906 100644 --- a/site/README.md +++ b/site/README.md @@ -45,6 +45,9 @@ This uses `npx serve` (no install needed). Open the URL, edit `public/index.html ## Deploy to Cloudflare Pages +**Canonical path:** Wrangler → Cloudflare Pages project `3notch`. +There is no GitHub Pages workflow for this site in-repo. If you ever saw a GitHub deploy, it was one-off or external—not the maintained path. + ### One-time setup 1. **Create a Cloudflare account** at https://dash.cloudflare.com (free). @@ -60,9 +63,10 @@ This uses `npx serve` (no install needed). Open the URL, edit `public/index.html ### Ship it -From `site/`: +From `site/` (after copy/version changes are on the branch you want live): ```bash +cd site npm run deploy ``` diff --git a/site/public/index.html b/site/public/index.html index fa0a57a..3738741 100644 --- a/site/public/index.html +++ b/site/public/index.html @@ -4,12 +4,12 @@ 3Notch — Mark your trail. - + - + @@ -17,7 +17,7 @@ - + @@ -27,7 +27,7 @@ "@context": "https://schema.org", "@type": "SoftwareApplication", "name": "3Notch", - "description": "3Notch is an open-source CLI tool that saves AI working state as local, portable checkpoints and packets. When a session hits a rate limit, the model goes down, the context window compacts, or you switch tools, 3Notch preserves the current objective, completed work, decisions, blockers, and next steps so the next session can resume without starting over.", + "description": "3Notch is an open-source CLI and MCP server for local AI working-state checkpoints and portable handoff packets. Use it when a session dies, a model fails, you switch tools, or you need async delivery between agents and repos—without a cloud account or hosted relay.", "applicationCategory": "DeveloperApplication", "operatingSystem": "macOS, Windows, Linux", "url": "https://3notch.dev/", @@ -58,7 +58,7 @@ "name": "How do I save context when switching AI models?", "acceptedAnswer": { "@type": "Answer", - "text": "3Notch creates portable checkpoints that capture your current objective, completed work, decisions, blockers, and next steps. When you switch from one AI tool to another (e.g., Claude to Codex), the outgoing agent writes a checkpoint and the incoming agent reads it to resume with full context. Install with: npm install -g @3notch/cli" + "text": "Write a packet (or continuation checkpoint) with the objective, what finished, what is blocked, and what is next. Import or resume it in the other tool. Install: npm install -g @3notch/cli" } }, { @@ -66,7 +66,7 @@ "name": "How do I recover context after an AI rate limit or session crash?", "acceptedAnswer": { "@type": "Answer", - "text": "With continuation checkpoints enabled, 3Notch saves working state when a session hits a rate limit, the model goes down (overloaded, server error, and related failures), or the context window compacts. When you start a new session, 3Notch offers the latest checkpoint for review and loads it after you approve." + "text": "Enable continuation checkpoints for Claude Code. 3Notch writes a fallback when the session hits a rate limit, model-down failure, or compaction, then offers that checkpoint at the next session start for your approval." } }, { @@ -74,7 +74,7 @@ "name": "What is 3Notch?", "acceptedAnswer": { "@type": "Answer", - "text": "3Notch is a free, open-source CLI tool and MCP server that saves AI coding session context as portable, local Markdown files. It works with Claude Code, Codex, Cursor, ChatGPT, and any MCP-compatible AI tool. Checkpoints are plain Markdown with structured frontmatter — no database, no cloud service, no account required. Everything stays on your machine." + "text": "A local CLI and MCP server for AI working-state checkpoints and portable handoff packets. Markdown on disk, no hosted service, no account. Works with Claude Code, Codex, Cursor, and other tools." } }, { @@ -82,7 +82,7 @@ "name": "Does 3Notch work with Claude Code, Codex, and Cursor?", "acceptedAnswer": { "@type": "Answer", - "text": "Yes. 3Notch is vendor-neutral and works with any AI coding tool. It includes a built-in MCP server for tools that support Model Context Protocol (Claude Code, Claude Desktop, Cursor), and portable .notchpkt archives that can be imported into any tool. Checkpoints are plain Markdown files readable by any agent." + "text": "Yes. Use the MCP server where the client supports it, or pack and import .notchpkt archives. Packets are plain Markdown plus optional artifacts—any agent can read them." } }, { @@ -90,7 +90,7 @@ "name": "Is 3Notch free?", "acceptedAnswer": { "@type": "Answer", - "text": "Yes. 3Notch is completely free, open-source software released under the MIT license. There is no cloud service, no account, no telemetry, and no paid tier. Install it with: npm install -g @3notch/cli" + "text": "Yes. MIT license. No cloud product, no account, no telemetry. npm install -g @3notch/cli" } } ] @@ -451,17 +451,19 @@ /* ── WORKFLOW CARDS ── */ .workflow-grid { - display: grid; grid-template-columns: repeat(3, 1fr); + display: grid; grid-template-columns: repeat(2, 1fr); border: 1px solid var(--line); margin-bottom: 1.25rem; } .workflow-card { padding: 2rem 1.75rem 2rem; background: var(--ink-soft); border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); display: flex; flex-direction: column; min-height: 280px; } -.workflow-card:last-child { border-right: none; } +.workflow-card:nth-child(2n) { border-right: none; } +.workflow-card:nth-child(n+3) { border-bottom: none; } .workflow-num { font-family: var(--f-mono); font-size: 0.7rem; letter-spacing: 0.18em; color: var(--mark); @@ -485,7 +487,13 @@ .workflow-code .m { color: var(--paper-mute); } @media (max-width: 900px) { .workflow-grid { grid-template-columns: 1fr; } - .workflow-card { border-right: none; border-bottom: 1px solid var(--line); min-height: 0; } + .workflow-card, + .workflow-card:nth-child(2n), + .workflow-card:nth-child(n+3) { + border-right: none; + border-bottom: 1px solid var(--line); + min-height: 0; + } .workflow-card:last-child { border-bottom: none; } } @@ -808,9 +816,9 @@ open source · - works with every AI tool + vendor-neutral · - nothing leaves your machine + stays on your machine
@@ -818,10 +826,10 @@

Mark your
trail.

- Your AI session died. Six hours of decisions, constraints, and working state—gone. The next agent starts from scratch because nothing portable survived the switch. + Rate limited. Model died. Context compacted. You switched tools. The code is still in git—the working state is not. The next session re-learns the objective, the constraints, and what you already tried.

- 3Notch saves the working state your AI tools won't. Local checkpoints that survive rate limits, context compaction, and model switches. Portable packets when context needs to move across tools, repos, or machines. + 3Notch is a local CLI and MCP server for checkpoints and handoff packets. Save selected state, resume after a crash, and move context across tools, repos, or agents—without a cloud account.

@@ -838,13 +846,13 @@

Mark your
trail.

Paste this into your agent -
- Run npm install -g @3notch/cli, then notch --help. Read the installed package README for client configuration before making changes. + Install @3notch/cli, run notch onboard here, enable continuation checkpoints for Claude Code if needed. Use packets for cross-tool or cross-repo handoffs. Read the package README before changing MCP config.
@@ -904,36 +912,36 @@

Mark your
trail.

THE PROBLEM

The code survives. The working state doesn't.

-

Rate limited at 2 AM. Context window compacted mid-refactor. Switched models because the cap hit at the worst moment. Every time, you rebuild from zero—re-explaining the goal, the constraints, what you already tried.

+

Git has the files. It does not have the objective you were mid-way through, the decisions you already made, or the landmines you already stepped on.

-

Your commits, docs, and wiki hold durable knowledge. But the objective you were chasing, the decisions you'd made, the blockers you'd identified, what you'd already verified—that state dies with the session. No AI vendor will fix this. Anthropic won't ship "easily move your context to Codex." OpenAI won't ship "easily move to Claude."

-

A neutral, locally-owned format is the only place this problem gets solved.

+

Vendors optimize for their own product. Claude will not make it easy to hand a live session to Codex. Codex will not make it easy to hand one to Cursor. That is not a bug in any one tool—it is the market structure.

+

3Notch is a neutral, local format for the state that falls between commits: what you were doing, what finished, what is blocked, and what is next. You decide what gets written. Nothing scrapes your chats in the background.

-
Session crashed?
+
Session died
- Pick up where you left off - 3Notch already saved your working state. The next session offers to resume. + Resume from a checkpoint + With Claude Code hooks enabled, 3Notch can write a fallback before the trail goes cold.
-
Switching models?
+
Switching tools
- Take your context with you - The outgoing agent writes what's done, what's blocked, what's next. The incoming agent reads it. + Write a packet, import it + Outgoing agent records the handoff. Incoming agent reads it after you approve.
-
Different tool?
+
Async agents / repos
- Package the handoff - Bundle the relevant files, decisions, and next steps into a portable packet. + Durable inbox + Pack, send to a shared mailbox, forward a text notice, pull and ack on the other side.
@@ -949,15 +957,15 @@

The code survives. The working state do
HOW IT WORKS

Session dies. Context survives.

-

When a session hits a rate limit, the model goes down, or context compacts, 3Notch can save the working state. When you start a new session, it offers to pick up where you left off.

+

Turn on continuation checkpoints for Claude Code. When the session fails for reasons that are not your fault, 3Notch can leave a checkpoint the next session can offer you.

Without 3Notch -

Start over. Every time.

-

Your session crashes at 2 AM. You open a new one, re-explain the project, re-describe what you were building, re-list what's done and what isn't. Forty minutes later you're back where you were—if you remembered everything.

+

Start over from memory.

+

New session. Blank agent. You reconstruct the plan from commits, chat scraps, and whatever you still remember. That reconstruction is slow and incomplete—and you pay for it every time the model flakes.

@@ -982,8 +990,8 @@

Start over. Every time.

With 3Notch -

Resume in seconds.

-

3Notch saved a checkpoint when the last session ended. The new session finds it, shows you what it contains, and picks up with full context after you approve.

+

Offer a checkpoint. You approve.

+

A fallback packet is already on disk: objective, tasks, git state. The next session can surface it once. Nothing loads into the agent until you say yes.

@@ -1014,44 +1022,52 @@

Resume in seconds.

USE CASES
-

Three ways your context breaks. One tool to fix all of them.

+

Four common breaks. Same local format for all of them.

-
Session crashed
-

Rate limited. Compacted. Model went down.

-

Doesn't matter why—with checkpoints enabled, 3Notch already saved where you were. Your next session offers to pick up exactly where this one stopped.

+
Session failed
+

Rate limit, overload, compaction.

+

Claude Code hooks can write a continuation checkpoint from task state and git—including model-down failures, not only rate limits. Next session can offer it once.

$ notch packet list
   auth-refactor  checkpoint
   next: Redis session adapter
-  ✓ ready to resume
+ ✓ ready to review
-
Switching models
-

Moving from Claude to Codex because the cap hit?

-

The outgoing agent writes a checkpoint: what's done, what's blocked, what's next. The incoming agent reads it and confirms before continuing.

-
$ notch packet show latest
+      
Switching tools
+

Claude today. Codex tomorrow.

+

Outgoing agent writes a handoff packet. Incoming agent imports it. No vendor bridge required—Markdown and optional artifacts on disk.

+
$ notch packet show <id>
   completed: 4 of 6 tasks
   blocked: API schema change
-  next: update client types
-  ✓ portable across tools
+ next: update client types
-
Different tool, different repo
-

Built in Claude Code, need to continue in Cursor?

-

Package the relevant files, decisions, and next steps into a portable packet. The receiving tool picks it up with full context.

-
$ notch packet pack latest
+      
Files need to travel
+

Pack a .notchpkt archive.

+

Hash-verified artifacts for the other machine or repo. Move the archive with scp, git, AirDrop, or whatever you already trust.

+
$ notch packet pack <id>
   auth-refactor.notchpkt
   3 files · sha256 verified
-  ✓ move it however you want
+ ✓ your transport
+
+
+
Async agents
+

Durable inbox between stores.

+

Two repos share a mailbox root. Send a packed project packet, forward the text delivery notice (chat, Slack, Claude messaging), then pull, import, and ack.

+
$ notch send pkt.notchpkt --to local:review
+  notice: pull delivery_…
+$ notch inbox pull … --import
+$ notch inbox ack …
-

You stay in control. A new session offers the checkpoint once and loads it only after you approve. Nothing commits, pushes, or travels automatically.

+

You stay in control. Checkpoints are offered, not force-loaded. Packets do not auto-commit or leave the machine unless you move them. Local addresses are routing labels, not authenticated identity.

@@ -1063,21 +1079,21 @@

Built in Claude Code, need to continue in Cursor?

UNDER THE HOOD
-

Plain Markdown. No database. Completely local.

-

A 3Notch checkpoint is a Markdown file you can read, edit, and version like any other file in your repo. Selected files travel alongside it, hash-verified. Everything stays on your machine unless you move it yourself.

+

Plain Markdown. No database. Local by default.

+

Packets are files under .notch/. You can open them, diff them, and keep them out of git when they should stay private.

- What you'd expect from a CLI tool -

Readable by you. Useful to the next agent.

+ Under the hood +

Readable by you. Usable by the next agent.

    -
  • You control what's saved — only context you or your agent explicitly supply. Nothing runs in the background.
  • -
  • Secret scanning built in — every write is scanned for credentials. Packets land clean or not at all.
  • -
  • Works with any AI tool — Claude Code, Codex, Cursor, ChatGPT, or whatever ships next. MCP server included.
  • -
  • Your transport, your call — move packets via Git, email, AirDrop, Tailscale, or anything else you trust.
  • -
  • Zero dependencies — no SQLite, no native compilation. Pure TypeScript, runs everywhere Node does.
  • +
  • Explicit writes only — you or the agent choose what to save. No chat scraping, no background daemon.
  • +
  • Secret scanning on write — credential-like content is blocked before it lands in a packet.
  • +
  • MCP where it helps — Claude Code, Desktop, Cursor, and other stdio clients; pack/import when MCP is not available.
  • +
  • Your transport — scp, git, AirDrop, Tailscale, a shared mailbox root. 3Notch does not host a relay.
  • +
  • No SQLite, no native addons — TypeScript on Node 20+.
@@ -1118,47 +1134,56 @@

Common questions.

+
+

Create a packet with the objective, completed work, blockers, and next steps—plus files if the other side needs them. Import it in the other tool, or pack a .notchpkt and move it yourself. npm install -g @3notch/cli

+
+
+
+
-

3Notch creates portable checkpoints that capture your current objective, completed work, decisions, blockers, and next steps. When you switch from one AI tool to another—say Claude to Codex—the outgoing agent writes a checkpoint and the incoming agent reads it to resume with full context. One install command: npm install -g @3notch/cli

+

With Claude Code continuation checkpoints enabled, 3Notch can write a fallback on rate limits, model-down failures (overload, server error, and related cases), and compaction. The next session may offer that checkpoint once; you approve before anything is loaded.

-

With continuation checkpoints enabled, 3Notch saves working state on rate limits, model-down failures, and context compaction. When you start a new session, it offers the latest checkpoint for review and loads it after you approve—seconds instead of re-explaining the project.

+

Use the durable inbox: both stores register the same mailbox root, you send a packed project packet, forward the plain-text delivery notice through any channel you already use, then pull/import/ack on the receiver. Local addresses are labels, not auth.

-

Yes. 3Notch is vendor-neutral and works with any AI coding tool. It includes a built-in MCP server for tools that support Model Context Protocol (Claude Code, Claude Desktop, Cursor), and portable .notchpkt archives that can be imported into any tool. Checkpoints are plain Markdown files readable by any agent.

+

Yes. MCP for clients that support it; pack/import for everything else. Packets are Markdown on disk, not a proprietary memory store.

-

Neither. Memory tools help a single AI tool remember more. 3Notch makes working context move between tools. Checkpoints are plain Markdown files with structured frontmatter—no database, no embeddings, no cloud service. You can read, edit, and version them like any other file in your repo.

+

No. Memory tools grow one vendor's context window. 3Notch moves selected working state across sessions and tools as files. No embeddings, no hosted index.

-

Completely free, open-source software under the MIT license. No cloud service, no account, no telemetry, no paid tier. Everything runs locally on your machine.

+

MIT. No SaaS tier, no account, no telemetry. Install from npm and run locally.

@@ -1172,9 +1197,9 @@

Common questions.

- open source · MIT · works everywhere + open source · MIT · local by default

Stop rebuilding
context.

-

One command to install. Works with Claude, Codex, Cursor, and whatever you switch to next.

+

Install once. Use checkpoints when a session dies. Use packets when work has to move.

@@ -1190,12 +1215,12 @@

Stop rebuilding
context.

Paste this into your agent -
-
Run npm install -g @3notch/cli, then notch --help. Read the installed package README for client configuration before making changes.
+
Install @3notch/cli, run notch onboard here, enable continuation checkpoints for Claude Code if needed. Use packets for cross-tool or cross-repo handoffs. Read the package README before changing MCP config.
@@ -1220,8 +1245,8 @@

Stop rebuilding
context.

3Notch
- - + +
@@ -1308,7 +1308,7 @@

Stop rebuilding
context.

From 3707872289744aa9cb7c368df67bf146ea289b9b Mon Sep 17 00:00:00 2001 From: Sean Robbins Date: Sun, 9 Aug 2026 14:58:43 -0400 Subject: [PATCH 5/6] docs(site): SEO/GEO pass and honest resume demo Expand meta, WebSite/SoftwareApplication/FAQ JSON-LD, and sitemap lastmod for search and answer engines. Soften the checkpoint demo to chat confirmation (not a fake y/n UI) and use a 20-minute recovery claim. --- site/public/index.html | 103 +++++++++++++++++++++++++++++++--------- site/public/robots.txt | 3 ++ site/public/sitemap.xml | 22 ++++----- 3 files changed, 94 insertions(+), 34 deletions(-) diff --git a/site/public/index.html b/site/public/index.html index 855c351..15bddc6 100644 --- a/site/public/index.html +++ b/site/public/index.html @@ -3,36 +3,64 @@ -3Notch — Mark your trail. - +3Notch — Local AI checkpoints and portable handoff packets + + + + - - + + + + + - - + + + - + +