The ideals we're designing toward. These are aspirations, not specifications — some will be delivered on fully, some partially, some over time. They exist to keep decisions pointed in the right direction.
A note on "agents" throughout this document
When these principles say "agent" or "agents," they primarily mean
Claude acting on behalf of a human user — via Claude Desktop, Claude.ai, or a connected MCP session. The human is present in the session, directing the work. This is what the Mesh is designed for first.
Autonomous agents are a real secondary case: a coding agent pulling brand guidelines, or a client-side agent reading content from a shared Mesh page. These are accommodated by the existing surfaces (MCP for internal, shared web URL for external) but don't drive the core design decisions. When a principle distinguishes how it applies to autonomous vs. supervised agents, it says so explicitly.
Principle 01
Claude is a thinking partner — the Mesh is where that thinking persists
Working with Claude feels less like operating a system and more like thinking alongside a coworker. That difference matters. A coworker doesn't just execute what you ask — they help you plan, push back, generate options you hadn't considered, and make complex decisions legible. The quality of thinking that emerges from that relationship is different from what you get by querying a tool.
Planning complex work requires more than text. A coworker who can only communicate in paragraphs is limited. When Claude produces a structured comparison, a diagram that makes a tradeoff visible at a glance, a visual plan that couldn't exist in a chat message — that is the full bandwidth that real planning requires. HTML is the format that carries all of it: prose, structure, graphs, and spatial thinking in a single artefact that lives at a URL.
This starts solo: one person, thinking through a hard problem with Claude, producing something — a brief, a plan, a research synthesis — that is more than a conversation and more than a document. It extends to teams: that artefact enters the Mesh, and the thinking becomes shared ground. The Mesh is what makes the coworker relationship durable. Without it, every session starts from zero — the thinking is ephemeral, locked in a conversation that ends. With it, what was worked out, why, and what was decided persists. The coworker remembers.
Full-bandwidth thinking
Planning with Claude isn't text-only. Graphs, structured comparisons, diagrams, visual decision trees — these are how complex choices get made visible, not just discussable. HTML carries all of it in a single artefact. That is the communication bandwidth the work actually requires.
Planning, not just doing
The coworker relationship is most valuable before a direction is set — when the problem is still being shaped. Claude helps explore the option space, stress-test assumptions, and make tradeoffs explicit. That is where the thinking happens; the Mesh is where it lands.
Solo to shared
A planning artefact created with Claude starts as personal work. When it enters the Mesh, it becomes team context. The thinking doesn't disappear when the session ends — it compounds. What one person worked out with their coworker is available to everyone who opens the Mesh next.
The Mesh as memory
Without persistent context, every Claude session starts from scratch. The Mesh transforms a series of individual conversations into a continuous working relationship — one where what was established last month is available today, and what the team decided is never lost in a thread.
The coworker framing
The difference between using a tool and working with a coworker isn't capability — it's relationship. A tool executes. A coworker thinks alongside you, catches what you miss, offers a perspective you hadn't considered. The Mesh is designed to preserve that relationship across time and across people: so the thinking that happens in one session is still there in the next one, and in the one a teammate opens tomorrow.
Principle 02
The Mesh wins by being easier, not by being required
The Mesh doesn't succeed because people are instructed to use it. It succeeds because using it is genuinely simpler than every alternative. If someone reaches for a Notion doc, a Slack thread, a hand-typed system prompt, or an email chain to capture working context, the Mesh has a friction problem — not a communication problem.
The north star: when you're in Claude, using the Mesh should be the natural move. Not a deliberate choice, not an extra step — just what happens when you work. Say something to Claude, it's in the Mesh. Want the team to know something, share it without leaving the conversation. Want to start a new session with full context, it's already there.
This means every design decision that adds a step, introduces a new interface to learn, or requires switching contexts is a threat to adoption. Frictionlessness isn't a feature — it's the adoption mechanism.
Claude is the interface
There is no separate "Mesh app" to open. The Mesh is accessed, edited, and shared through Claude conversations. If it requires leaving Claude to manage, it's already too much friction.
Zero-step capture
Saving something to the Mesh should cost one instruction at most: "add this to the Mesh." Claude handles the rest — where it goes, how it's structured, how it's connected to existing content. No manual filing.
Sharing in-conversation
Sharing context with a teammate should be possible without leaving the chat. "Share what we just worked out with the engineering team" should be a complete instruction — not the start of a multi-step export process.
The workaround test
If a team member invents their own system for something the Mesh should handle, that's a signal worth investigating — not dismissing. Workarounds reveal friction. Fix the Mesh, don't mandate against the workaround.
Friction is calibrated to stakes — not absent everywhere
Private content and team-shared open content are maximally frictionless: edits land immediately, no gates, no approval. Protected content — the handbook, brand guidelines, org-level policies — is intentionally less frictionless. That friction is the feature, not a failure. The vast majority of Mesh activity happens in the frictionless zone. The review gate applies to a narrow, high-stakes category where the cost of a bad edit is high enough to justify it. The goal is never zero friction everywhere — it's friction proportional to consequence.
The right kind of stickiness
The goal is not lock-in. It's that the Mesh is so well integrated into how people work with Claude that not using it would mean working with less context, less continuity, and more repetition. That's a product problem worth solving — and solving it well is what creates genuine adoption.
Principle 03
The Mesh is written by agents, not by hand
Most content creation and editing in the Mesh happens through Claude — not by someone sitting down to write a document from scratch. Claude writes a new section, refines an existing one, synthesises input from multiple sources, or updates a page because something changed. The human directs, reviews, and approves; Claude does the drafting and the typing.
This shifts the skill needed to maintain the Mesh from "willing to write documentation" to "willing to prompt Claude and review the output" — a much lower bar that scales to the whole team.
Concretely: a team member opens Claude Desktop or Claude.ai, has a conversation, and at the end says "save this to the Mesh" or "update the project brief with what we just decided." Claude writes it. The human confirms. It lands in the Mesh. No separate editing interface, no context switch, no documentation session.
Why this matters
Documentation dies when it becomes a chore. If Claude can do a first draft from a conversation, a decision, or a code change — and the human just says "yes, that" — the Mesh stays current with near-zero friction.
Principle 04
Designed for solo work — collaborative by degrees
The Mesh starts in single-player mode: one person, one Claude conversation, building context for themselves. This is the primary use case and it should be excellent on its own terms. A researcher building a personal knowledge base, a founder loading company context into a new session, an engineer grounding their agent in project decisions — all of this works without anyone else being involved.
But the architecture doesn't change when you go collaborative. The same Mesh that holds personal research holds shared team research. The same MCP a solo agent queries can be queried by a teammate's agent. Individual context can be promoted to team context deliberately, without rebuilding anything.
Collaboration happens across a spectrum of synchrony — from hours-apart async, to real-time-but-manual, to eventually automatic. The Mesh doesn't need to solve all three at once. Each tier builds on the one before it, and the first tier is already collaborative in a meaningful sense.
Tier 1 — Async (baseline)
Person A works on a project, saves context to the Mesh. Hours later, Person B loads that same section into their Claude session. No coordination required — the Mesh is the shared memory, and any working Mesh already delivers this. This is collaboration; it just isn't synchronous.
Tier 2 — Manual semi-sync (near-term)
Two people on a call, both with Claude open. Person A updates the Mesh. They say "I updated section X." Person B tells Claude: "Refresh from that section." The sync is human-triggered — no automation needed — but the turnaround is seconds. This requires the Mesh to support efficient section-level refresh, not full re-load.
Tier 3 — Auto-sync (aspirational)
Claude sessions that can subscribe to sections of the Mesh and receive updates without a human triggering the refresh. One session writes a finding; the other session's context updates automatically. Feasibility is uncertain — but the architecture should never foreclose it.
Same infrastructure, wider scope
None of these tiers require different infrastructure. The scope changes (individual → team → org); the Mesh layer does not. What changes between tiers is the latency of context propagation — and the degree to which humans have to orchestrate it.
What Tier 2 requires from the Mesh
Manual semi-sync only works smoothly if section-level addressing is efficient. "Refresh just this section" should be a low-cost operation — not a full document reload. This makes section-level addressing (P17, P20) load-bearing for the collaboration story, not just for editing efficiency.
The design constraint this sets
Any decision that makes Mesh content session-local, non-addressable from outside, or hard to merge with parallel work needs to be interrogated. Solo must be excellent first — and it must also be the foundation that each collaboration tier builds on without requiring a redesign.
Principle 06
Content lives in HTML. Agents read it as Markdown.
When you prompt Claude to draft or update a section of the Mesh, what you're reviewing is an HTML document. Not a Markdown file — an HTML page with structure, visual hierarchy, tables, tree layouts, and spatial organisation that makes the content legible and useful. Editing it is closer to designing than writing. A schema definition, a process breakdown, a team structure — these have a graphic dimension: the way columns are laid out, the way a hierarchy is visualised, the way types are distinguished. That visual structure is part of the meaning. The HTML is the canonical thing. Claude edits it. You review it.
When an agent needs to load that content into context, it doesn't read the HTML markup. The system extracts clean Markdown from the document and delivers it without the tag overhead. The same content, leaner. This happens automatically — the agent asks for a section, it gets Markdown. No conversion the author has to manage, no separate source file to maintain.
This is not "Markdown source, HTML presentation." The HTML is the source. The Markdown is derived on demand at read-time. There is one document.
What you and Claude edit
HTML — treated more like a design asset than a text document. The layout of a schema, the visual structure of a tree, the column arrangement of a spec — these are decisions, not accidents. Claude drafts and revises them; you review the result the same way you'd review a design: by looking at it rendered, not at the source.
What agents receive
Markdown extracted automatically from the HTML at read-time. No tag overhead. The agent gets the meaning without the markup. No extra work on the author's part — the extraction is a system responsibility, not a workflow step.
The extraction constraint
For extraction to work cleanly, structure must not bury content. A table of values should be recoverable as a list. A diagram caption should survive as a sentence. This sets a quality bar on how HTML Mesh documents are authored — not a restriction on richness, but a requirement for legibility.
One canonical file
There is no source-plus-artifact pair to keep in sync. The HTML document is authoritative. Its text representation is derived at read-time. Nothing drifts because there is nothing separate to drift.
Principle 07
The Mesh needs a purpose-built canonical layer — ClickUp is the baseline, not the destination
Today, Thibaut uses ClickUp Documents as an informal Markdown wiki — written and maintained by Claude via the ClickUp MCP. That's a workable starting point, and it validates the core model: agent as the author, shared document store as the backbone, human in the loop for review. The baseline works.
But ClickUp's MCP doesn't give the tools the Mesh actually requires. Section-level addressing, surgical edits, agent authentication, the protected-page review workflow, content freshness signals, three-level scope control, diff-only updates — none of these are available through ClickUp's API. The Mesh will outgrow ClickUp before it's fully built.
The canonical layer needs to be purpose-built around the Mesh's own requirements: HTML as the storage format with Markdown extracted on demand for agent consumption, section-level addressability as a first-class concept, controlled access at three levels, a clean agent-facing API, and a delivery path to Cloudflare. Given that Thibaut already builds on Cloudflare Workers and has established the pattern of building custom MCPs, the canonical layer is most likely a custom service on Cloudflare infrastructure — not a third-party platform the Mesh happens to be living in.
The current baseline
ClickUp Docs as a Markdown wiki. Claude writes via the ClickUp MCP. Documents scoped to spaces and teams. Everyone has a ClickUp account. Good enough to start building on, not good enough to build toward.
What ClickUp can't give us
Section-level addressing. Surgical edit operations. Agent auth tied to content scope. Protected-page workflows with visual diff. Content versioning at section granularity. Diff-only update APIs. These are non-negotiable for the Mesh to work as designed.
What the purpose-built layer looks like
A Cloudflare-native service: HTML content in structured storage, a Workers-based API for agent and human access, Mesh Auth for internal access, a text-extraction layer that converts HTML to Markdown for agent consumption on demand.
What doesn't change
HTML stays the canonical format; agents still receive Markdown extracted on demand. Access still doesn't require GitHub. The three-level scope model still applies. The ClickUp MCP can continue to be used for other team workflows — it just won't be the Mesh's canonical home.
The migration question
Moving from ClickUp to a purpose-built layer means whatever content exists in ClickUp at that point needs to migrate. The longer the Mesh is built on ClickUp, the larger that migration. This is an argument for starting the purpose-built layer early, not for staying on ClickUp until the requirements are fully known.
Principle 08
Contributing must not require a GitHub account
The Mesh is for the whole team — not only engineers, not only people comfortable with git or Markdown. Gating contribution to GitHub means the Mesh slowly becomes an engineering artefact, maintained by the people with commit access. Everyone else reads, but nobody updates it, and it drifts. You could technically give everyone a GitHub account, but that creates the exact friction the Mesh is designed to eliminate.
Anyone on the team should be able to prompt Claude to update a section, review a draft, or flag something that's out of date. That is the access model.
What this rules out
A git-first workflow where Markdown files live in a repository and PRs are the update mechanism. That works for developers. It doesn't work for the rest of the company.
Principle 09
GitHub is the safety net, not the source
The Mesh is where content is created and edited — the purpose-built canonical layer that stores and serves HTML. GitHub is where that content gets versioned and backed up. The sync is one-directional and automatic — the Mesh pushes to GitHub on every write, nobody edits in GitHub. This gives the Mesh a full edit history, diffable changes over time, and a backup that survives any infrastructure incident or accidental deletion.
GitHub also enables future downstream hooks: regenerating static artifacts when content changes, notifying agents that a section has been updated, or triggering a review workflow for major changes.
Claudeauthors content
→
Mesh MCPwrites HTML
→
The Meshcanonical source
→
GitHubversioning & safety
→
Cloudflaredelivery & auth
The key constraint
Nobody edits in GitHub. Anyone who does is working outside the Mesh. If a PR ever becomes the update mechanism, the access principle has been broken.
Principle 10
The Mesh operates at three levels — without creating noise
Context is not one-size-fits-all. Some knowledge belongs to the whole organisation. Some is relevant only to a team. Some is a person's own working notes and research. The Mesh should support all three without conflating them — and without noise from lower levels polluting higher ones.
The principle: content does not propagate upward automatically. Moving something from individual to team, or from team to org, is a deliberate act. The org-level Mesh only contains what has been intentionally elevated. Everything else stays where it was created until someone decides otherwise.
Organisation level
Visible to: everyone — team, agents, external.
Contains: company story, brand, policies, global agent instructions.
Protected by default — all edits go through review (P11).
Team level
Visible to: team members and their agents.
Contains: team processes, project context, shared research.
Open by default — edits land immediately. Individual pages can be protected if needed.
Individual level
Visible to: the person and their own agents only.
Contains: personal research, drafts, working notes, exploratory artifacts.
Private by default — nothing propagates upward without a deliberate act.
Individual level as a superpower
Each person's agents are grounded in their own working context on top of the shared org and team context. Personal artifacts powered by the Mesh, just for them. They choose what surfaces upward.
The visibility state machine
Content starts
private. Promoting it to team scope is a deliberate one-time act — nothing moves up automatically. Once shared, it is
collaborative by default: edits made by anyone with access are immediately visible to everyone else at that scope, with no ongoing review gate. The only exception is
protected pages (P13), where all edits — regardless of who makes them — go through review before landing. Protection is independent of scope: a team page can be open or protected; org pages are protected by default.
Principle 11
Two surfaces, five usage modes
The Mesh has two delivery surfaces — web and MCP — but those surfaces serve five distinct usage modes. Designing for the surfaces alone misses what each mode actually requires. The architecture must address all five explicitly.
The web surface is the team's read-only browser view of the Mesh — the same content accessible via MCP, surfaced in a browser instead of Claude. It is not open to the internet by default. Internal content is gated by authentication; external sharing happens only through specific, scoped, revocable links generated deliberately for named recipients. Those shared links work for both human reading and agent consumption — the recipient browses it in a browser or points an agent at the same URL. The MCP surface is internal, accessed via Claude, and serves three distinct modes: an agent loading context at session start, Claude answering a human's question, and Claude working alongside a human on a shared project. Same surface, different patterns, all requiring Markdown and section-level precision.
| Surface | Mode | Who | What it needs |
MCP internal |
Context loading |
Claude loading Mesh sections at the start of a session, before the human starts directing |
Token-lean Markdown, section addressing, auth scoped to content level |
| Claude-mediated query |
Human asking Claude a question |
Well-chunked, consistent structure so Claude can return a precise answer |
| Human + agent collaboration |
Human and Claude working together on a project |
Section-level access, surgical edits, unified view (P21) |
Web internal + shared |
Direct human reading |
Team members browsing (authenticated), or external recipients accessing via a shared link |
Brand-quality HTML, dark/light mode; Mesh Auth for team, scoped shared links for external |
| External agent reading |
External AI agent consuming a shared page |
Same URL as human sharing — but returns structured Markdown, not HTML |
The key insight
The MCP surface and web surface are not just for different audiences — they serve fundamentally different interaction models. MCP is conversational and stateful (Claude holds context across a session). Web is stateless and request-based. Both must be first-class, not one primary and one fallback.
Principle 12
External sharing is controlled, targeted, and revocable
Some Mesh content is useful beyond the team — to customers, partners, contractors, or anyone being onboarded. That content should be shareable without requiring a Mesh account on the recipient's side, but the sharing should be deliberate and traceable. A link is generated for a specific purpose and a specific recipient. It can be revoked at any time, or given an expiry date. Nobody should be able to access internal Mesh content through an accidentally long-lived link.
Scope
A single page, a set of pages, or a subtree (page + its children). With or without the parent hierarchy exposed.
Purpose label
Every share link carries a human-readable note: who it was generated for and why. e.g. "Onboarding — Acme Corp, May 2026."
Expiry & revocation
Optional fixed expiry date, plus manual revocation at any time. The link stops working instantly on revoke.
Audit trail
An always-visible list of all active external links: what they point to, when they were created, who created them, and when they were last reviewed. Prevents silent accumulation of stale access.
The risk to prevent
Shared links that aren't revoked accumulate silently. If Mesh content changes and an old share link still points to an outdated or now-internal version, that's an exposure. The audit trail is the safeguard.
Principle 13
Some pages are protected — changes go through review
Not all Mesh content should be editable by anyone at any time. Company policies, brand guidelines, and foundational "who we are" content carry real weight — an accidental or unconsidered edit can propagate to every agent and every person relying on that context. Those pages deserve a review gate.
The model: certain pages are designated as protected. Anyone can propose a change, but proposing means creating a draft version — a fork of the current page — editing it, and submitting it for review. A reviewer with merge rights sees what changed, decides whether to accept it, and either merges the draft or sends it back. The original page is untouched until a merge happens.
This is the pull request workflow — but designed for non-technical people who have never opened GitHub, built natively in the Mesh app.
Protected pages
Designated by admins. Org-level content is protected by default. Team and individual content can be left open or protected as needed.
Draft / fork
Anyone can propose a change. Proposing creates a draft copy of the page. The original is frozen. The proposer edits the draft — with or without Claude's help.
Review with diff
The reviewer sees a human-readable diff between the current version and the proposed version. Not a raw git diff — a clean, visual side-by-side or inline comparison. Claude can summarise what changed and why.
Merge or reject
The reviewer accepts (merges the draft, replacing the current version) or rejects (closes the draft with optional feedback). No partial merges — it's all or nothing at the page level.
The key design constraint
The friction lives in the approval, not the proposal. Suggesting a change to a protected page should feel exactly as easy as editing an open one — say it to Claude, it becomes a draft. What's different is that the draft waits for a reviewer before landing. The author's experience is frictionless. The gate is on the merge, not on the suggestion.
The two-human model for protected pages
Since Claude always works on behalf of a human user (not autonomously), a "Claude update" to a protected page is already a human-directed act. The review gate isn't about catching unsupervised agents — it's about requiring a
second human to approve before the change lands. The person directing Claude is the proposer. A reviewer with merge rights is the approver. High-stakes content gets two sets of human eyes, not one.
Principle 14
The Mesh is internal — access controlled by Mesh Auth, rights managed by admin
The Mesh — both the MCP and the web surface — is not publicly accessible. It is an internal surface, reachable only by authenticated team members and their Claude sessions. A single authentication layer, Mesh Auth, controls access to both surfaces. The user authenticates once; their identity determines what they can see and do across MCP queries, web browsing, and edit operations.
An admin UI defines each user's rights — which scope levels they can access, and within those levels, which content is visible to them. Those rights are enforced identically whether the user is querying via MCP or browsing via the web. A user sees their individual content, their team's content, and org-level content — nothing from other individuals, nothing from teams they don't belong to.
Mesh Auth
A single identity layer shared by the MCP and the web surface. The user authenticates once; their Mesh session carries their identity and access rights for all subsequent operations across both surfaces. No separate Mesh account or API key.
Rights management
An admin UI maps each user to their Mesh access rights: which teams they belong to, whether they have reviewer/merge rights on protected pages, and any elevated permissions. Rights are managed centrally — not embedded in the MCP configuration.
What Mesh Auth exposes per user
Org-level content (always), the user's team content (based on team membership), and the user's individual content (their own only). Reads, writes, searches, and section-level fetches are all scoped to this intersection. The auth layer is the same for every operation.
External agents — different surface
External agents (a client's coding agent, a contractor's Claude session) do not use the MCP. They read from scoped shared web URLs — what was explicitly shared with them. The MCP is internal only.
Principle 15
Web and Claude — the Mesh goes no further
The Mesh has two access points: the web UI for browsing without Claude, and Claude itself for everything else. That is the full footprint, by deliberate choice. No Slack bot, no Figma plugin, no ClickUp integration, no VS Code extension. Each additional integration surface is a maintenance commitment, a new failure mode, and a new context to design for. The Mesh stays small and focused.
For moments when someone isn't in Claude — a meeting, a Slack thread, a quick browse — the web UI is the answer. It requires no separate app, just a browser. For internal content, team members are authenticated via Mesh Auth. For shared external links, recipients access their scoped view without an account. The Mesh on a custom subdomain is the non-Claude surface, and it's designed to be good enough that reaching for something else isn't necessary.
Web UI — the non-Claude surface
Accessible from any browser. Team members authenticate via Mesh Auth; external recipients access their scoped shared link without an account. This is what a person pastes in a Slack message, shares in a meeting, or opens on their phone. The web surface handles every moment when Claude isn't open — and it should be good enough that no other access point is needed.
Claude — the active surface
Claude Desktop, Claude.ai, or any MCP-connected Claude session. This is where content gets written, searched, updated, and consumed in context. No separate interface; no mode-switching. The Mesh is ambient to Claude, not a destination you navigate to.
VS Code / Cursor — already covered
Developers using Claude Code in VS Code or Cursor already have Mesh access via MCP — no separate integration needed. A coding agent can pull brand guidelines, API conventions, or project context from the Mesh mid-session. The MCP surface covers this implicitly; building a dedicated VS Code extension would be redundant.
What's deliberately excluded
Slack bots, ClickUp integrations, Figma plugins, dedicated mobile apps. These are not ruled out forever — but they're not designed for now and shouldn't be anticipated in the architecture. If a genuine need emerges that the web UI and Claude can't meet, that's the time to revisit.
The deliberate constraint
Keeping the surface footprint to two access points is a product discipline decision. Every integration that gets built needs to be maintained, monitored, and kept consistent with the core Mesh. The web UI and Claude are the right investment. Everything else is scope creep until proven otherwise.
Principle 16
Two first-class consumption surfaces
The Mesh has two primary delivery mechanisms, and both must be designed for explicitly — not bolted on after the fact. Neither is a fallback for the other; they serve fundamentally different audiences with different expectations.
The first is a web surface: Mesh content on a custom subdomain, readable in any browser. Internal team members open it in a browser — Mesh Auth handles authentication. External stakeholders access only what has been explicitly shared with them, via a scoped, revocable link. The rendered page is what they experience — a new hire browsing the handbook, a partner reading what was shared with them, a recipient's agent consuming the same URL as Markdown.
The second is an agent surface: Markdown extracted from the canonical HTML, queryable via a Mesh-specific MCP. This is how Claude loads context at the start of a session, how an agent pulls the specific sections it needs, how the Mesh integrates into workflows without a human intermediary. The extracted content is the thing that matters here — readable by machines, lean by design.
Web surface
Who: team members (authenticated) and external recipients of shared links.
Format: HTML, brand-styled.
Access: Mesh Auth for internal content; scoped shared links for external access — revocable, optionally time-limited.
Agent surface
Who: Claude agents — internal and external.
Format: Markdown, structured and section-addressable. Never HTML.
Internal access: custom Mesh MCP, authenticated — same pattern as the time-entries MCP already in production.
External access: the same shared-page URL used for human sharing, returning structured Markdown instead of rendered HTML.
Infrastructure
Delivery runs on Cloudflare Workers for the web surface, Mesh Auth for internal auth gating. The custom MCP pattern is proven: Thibaut already builds MCP servers on Cloudflare Workers infrastructure. No new infrastructure decisions needed for either surface.
One source, two surfaces
Both surfaces draw from the same canonical HTML. The web surface serves it directly. The agent surface receives Markdown extracted from it on demand. There is no separate version of the content for each audience — only different presentations of the same truth.
Principle 17
The agent surface is token-efficient by design
Every token an agent loads from the Mesh is a token it can't spend on the actual task. A poorly structured Mesh that forces an agent to load 20,000 tokens of context to answer a simple question isn't a knowledge base — it's a tax. Token efficiency for agent consumption is a first-class design concern, not an optimisation to revisit later.
Markdown is the right format for agents — not HTML. HTML triples the token count for the same content with no added meaning for a language model. The agent surface stays in Markdown, always.
Internal agents — custom MCP
Authenticated access via a Mesh-specific MCP server. The same pattern as the time-entries MCP already in production: a purpose-built MCP as the optimised delivery layer over the canonical store. Section-addressable, filterable by scope and recency.
External agents — public Markdown URL
Publicly shared pages serve structured Markdown, not HTML. An external agent reads the same URL a human would share, but gets Markdown in return. No extra infrastructure — the sharing mechanism handles both representations.
Section addressing
Agents load only what they need — a single section, a specific page, a defined subtree. The Mesh structure must make selective loading natural, not an afterthought.
Metadata headers
Each page and section carries lightweight front-matter: what it covers, when it was last updated, who owns it, what's in scope. Agents can pre-filter relevance without loading the body.
Prompt caching
Stable, frequently-loaded sections (company story, brand guidelines, global agent instructions) are candidates for prompt caching. Content structure should keep slow-changing and fast-changing content in separate sections to make caching effective.
Diff-only updates
When an agent already has a version of a section in context, it should be able to request only what changed since its loaded version — not re-fetch the whole document. This requires the Mesh to track content versions at a section level.
What not to do
Never expose HTML to agents as context. Never make agents load the full Mesh to find what they need. Never let document structure optimise for human navigation at the expense of machine parsability — both can be served, but machine comes first.
Principle 18
The human reading experience is opinionated and calm
The web surface — what humans actually see — follows the team's brand guidelines. Not as a nice-to-have, but as a reflection that the Mesh is a first-class product surface, not a dumped wiki. Typography, colour, spacing, dark mode, and responsiveness are built in from the start.
The visual philosophy is essentialist: less is more. The Mesh does not try to display everything at once or make the structure visible by default. Content gets space to breathe. Navigation is available when needed, not always in the way. The experience should feel like reading, not like browsing a filing cabinet.
Brand guidelines
As an example, Smplrspace's implementation uses their Serene Blue palette, IBM Plex Mono for labels and code, and RNS Sanz where licensed. Each team applies their own design system — the principle is consistent application across every Mesh surface.
Dark and light mode
Both modes are first-class. The Mesh respects the reader's system preference and provides a manual toggle. Neither mode is an afterthought or an inversion of the other — both are designed explicitly.
Zen mode
An opt-in focused reading mode. No header, no navigation, no sidebar — just the content, centred, with generous line-length control and no distractions. Useful for long-form reading, presentations, or sharing a single piece of content without surrounding chrome.
Essentialist defaults
Structure is present but not visible until needed. TOC appears on scroll or hover, not permanently occupying space. Hierarchy is communicated through typography and spacing, not boxes within boxes. The page breathes.
Principle 19
Search is first-class on both surfaces — and always access-gated
Structure alone isn't enough. The three-level scope model and clear section hierarchy make navigation possible, but they assume you already know where to look. A team member who needs to know what the Mesh says about a topic, or an agent that needs to ground itself in relevant context before starting a task, can't rely on browsing. They need search.
Search is a first-class feature on both surfaces. The web UI has full-text search for humans. The MCP surface has a dedicated search tool for agents. Both are fast, both return content at section granularity, and both are strictly scoped to what the caller is allowed to see. Search doesn't bypass the access model — it enforces it.
Web UI — human search
Full-text search across all Mesh content the user has access to. Results show the matching section with a snippet of context — enough to judge relevance before clicking through. Search can be scoped: search everything, search within the current section, or filter to a specific part of the Mesh (e.g. "search only in brand guidelines"). External readers on a shared link search only within the shared scope.
MCP — agent search tool
A dedicated MCP tool: search_mesh(query, scope?) returns matching sections with their content inline — not just references. The optional scope parameter narrows the search to a specific page, subtree, or section of the Mesh, avoiding noise from unrelated content. Results include section metadata (page, scope level, last updated) so the agent can judge freshness and relevance.
Access gating at index level
The search index is partitioned by access scope — not post-filtered after the fact. A team member's search never accidentally surfaces individual content from a colleague. An external reader's search stays within their shared scope. Auth determines what's indexed for each caller, not what's excluded from results after searching everything.
Read-through results for agents
The most important design choice for the MCP search tool: results include the matching content directly. Agents don't search, get a list of links, and then fetch each one. They search and get usable content back. This halves the number of MCP calls and keeps token usage predictable — you get exactly the sections that matched, nothing more.
The grep analogy
What makes Claude Code effective at finding things in a codebase is that it finds the line and shows the surrounding context — the agent can act on it immediately. Mesh search for agents should work the same way:
search_mesh("brand color palette") returns the relevant section of the brand guidelines, ready to use. Not a URL. Not a document title. The content itself, at the right granularity.
Principle 20
Editing is surgical — not a full rewrite every time
When a piece of content in the Mesh needs a one-word change, the system should not have to rewrite and re-emit the entire document. Surgical editing — updating a sentence, a paragraph, a value in a table — must be a first-class operation, not a workaround that forces fetching the whole page, making a change, and writing it all back.
This matters for efficiency (token cost, latency), for change tracking (a surgical edit produces a meaningful diff; a full rewrite produces noise), and for the review workflow (a reviewer should see exactly what changed, not reconcile two complete documents).
Section-level targeting
Every editable unit — a section, a callout, a table row — has a stable identifier. Updates reference the target directly. "Update the second bullet in the team onboarding section" is a valid, addressable operation.
Minimal surface area
An edit operation sends only the changed content, not the surrounding context. The Mesh layer splices it in. The caller doesn't need to hold the full document in context to make a targeted change.
Meaningful diffs
Surgical edits produce minimal diffs — one line changed is one line in the diff. This makes the review workflow usable: a reviewer can evaluate a sentence change without reading two full documents side by side.
Agent ergonomics
A Claude session focused on a specific piece of research should be able to iterate quickly — refine a paragraph, adjust a callout, update a table cell — without re-loading the whole document or re-emitting content that didn't change.
The token efficiency argument
If a session iterates five times on a section, and the section is 500 tokens in a 5,000-token document, surgical editing saves 4,500 × 5 = 22,500 tokens compared to full rewrites. At scale, this compounds significantly.
Principle 21
Editing happens in a unified view — conversation and document side by side
The natural way to work with the Mesh is not to write in one place and then check the result in another. It's to have the conversation and the document visible simultaneously — Claude on one side, the live content on the other. As Claude makes a change, it appears. The human reviews, redirects, or approves in the same view without switching contexts.
This is the editing experience that makes iterative refinement feel effortless rather than mechanical. It's what makes the difference between "Claude as a writing tool" and "Claude as a genuine co-author of the Mesh."
Split-pane layout
Claude conversation on the left (or top on smaller screens). Rendered Mesh content on the right. Changes from the conversation appear in the preview in real time or near-real-time — no manual refresh.
Change highlighting
When an edit lands, the changed section is briefly highlighted in the document view so the human's eye goes there naturally. Not a full diff — just enough visual cue to confirm what changed and where.
In-document targeting
Clicking a section in the document view brings it into focus for Claude — "edit this." No copy-pasting content into the chat. The document and the conversation are aware of each other.
Works for research and production
The same view works for exploratory research (rough individual-level notes, fast iteration) and for carefully crafted org-level content. The surface is the same; what differs is the content scope and what review is required before it's considered final.
The design inspiration
This is the experience that Claude's preview pane already hints at — a conversation producing a rendered artifact in the same view. The Mesh editing UX makes that pattern first-class, persistent, and connected to the canonical content layer rather than a one-off artifact.
Principle 22
Changes should reach the people who need to know
When something in the Mesh changes, the people affected by that change should find out. Today, this is manual: the person who made the change pings whoever needs to know. That relies entirely on the editor knowing who cares, remembering to tell them, and doing it promptly — three assumptions that degrade as the team and the Mesh grow.
The design direction is a subscription model: each person subscribes to the pages or sections they want to follow, and changes to those items reach them through a channel they already use. This scales better than scope-based broadcast (which becomes noise as the Mesh grows) and better than relying on the editor to notify (which requires them to know who cares). The right audience self-selects. The one exception is protected org-level changes — those always reach the whole team, regardless of subscriptions.
Current baseline
The person who edits a Mesh page is responsible for informing whoever needs to know. Manual ping via Slack, ClickUp, or direct message. No automation, no audit of who was notified. Works for now; doesn't scale.
Subscription model
Users subscribe to specific pages, sections, or subtrees. Scope determines eligibility — you can only subscribe to content you have access to — but subscription is always opt-in. No one is automatically enrolled because they belong to a team. Changes notify subscribers only, except for protected org-level merges which always reach everyone.
Agent subscriptions
Agents can subscribe to sections the same way humans do. The MCP flags on the next query whether content has been updated since it was last fetched — a lightweight freshness signal that doesn't require speculative re-loading. A future extension: push notifications to active agent sessions when subscribed content changes.
Notification channels
The channel follows the subscriber's preference — Slack, ClickUp activity, or in-app. The Mesh doesn't prescribe one channel; it delivers to wherever the person already pays attention.
Sync vs async
Most notifications should be async by default — batched into a digest that arrives at a time that doesn't interrupt work. Immediate (sync) notifications are reserved for high-stakes events: a protected page merge, a change to a section the person is actively working with, or anything explicitly flagged as urgent. The default protects deep work; sync is opt-in or system-reserved for genuinely critical changes.
Open questions
What granularity can users subscribe at — page, section, subtree? What triggers a notification — every save, or only confirmed merges and protected page changes? How does Claude help manage subscriptions — suggesting relevant ones, surfacing stale ones? These are tractable but need a dedicated design round before building.
Principle 23
Mesh pages link to any tool in the workflow — and back
The Mesh is the context layer for the whole team's work — and work happens across multiple tools. A developer tracks progress in ClickUp. A designer works in Figma. Client communication runs through Missive. The Mesh provides the context that informs all of it, but the person doing the work shouldn't have to hold that connection in their head.
Any tool in the workflow can link to a Mesh page, and any Mesh page can surface what's linked to it from across the toolchain. A Missive thread handling a client's onboarding links to the onboarding Mesh page. A Figma file links to the brand guidelines section. A ClickUp engineering task links to the architecture decisions that govern it. From those Mesh pages, the associated work is visible and navigable in return.
This is not data sync. Nothing is duplicated. The link is the only thing that crosses the boundary — a URL on each side, with enough metadata to be useful. Each tool stays independent; the Mesh is the shared anchor.
From any tool
A ClickUp task links to the Mesh pages grounding that work. A Figma file links to brand guidelines or the design system section. A Missive thread on a client account links to that client's context page. The link is manual — added by whoever is working — or suggested by Claude when it detects the relationship.
From the Mesh
Each Mesh page surfaces what's linked to it: active ClickUp tasks using this context, Figma files referencing this design section, Missive threads associated with this client. The Mesh becomes legible as a living document — you can see what work is currently consuming each piece of context.
Claude as the connector
When Claude is helping on a task, it can propose linking to relevant Mesh pages and create those links in both directions. "I've added a link to the brand guidelines section in your ClickUp task and noted this task on the brand page." No manual bookkeeping; Claude handles the cross-referencing across tools.
What this is not
Not a sync of tool data into the Mesh. Not embeds. Not live status widgets. Just navigational links with metadata. The tools stay independent; the links are the only coupling. This keeps every integration lightweight and the maintenance burden near zero regardless of how many tools are in the workflow.
The seamless jump
A designer in Figma opens the brand guidelines Mesh page directly from the file. An account manager in Missive jumps to the client's Mesh context from the thread. A developer in ClickUp navigates to the architecture section relevant to their task. In every case: one click, full context, no tab archaeology.
Principle 24
The team owns keeping the Mesh current
Stale context is worse than no context. An agent or a person grounding themselves in a Mesh section that describes how something used to work will act on outdated information — confidently. A gap in the Mesh is visible and handleable. A wrong answer in the Mesh is invisible and dangerous.
There is no automated freshness system — for now. Keeping the Mesh current is a team responsibility and a cultural expectation. The mental model: updating the Mesh is part of completing a change, not an afterthought that follows it. A process changes → the Mesh page for that process is updated in the same motion. A decision is made → it lands in the relevant Mesh section before the meeting ends. A policy is revised → the old version is gone before anyone has a chance to read it.
The Mesh is only as good as its accuracy. The team is the last line of defence.
The norm
Updating the Mesh is part of the work, not admin that follows the work. If something changed and the Mesh doesn't reflect it, the change isn't done yet.
Who's responsible
The person closest to the change — the one who made the decision, changed the process, or learned that something was wrong. Not a designated "Mesh maintainer." Everyone who uses the Mesh benefits from its accuracy; everyone who changes reality is responsible for updating it.
Claude as the low-friction path
The update doesn't have to be manual. "We just changed the onboarding flow — update the Mesh page for that" is a complete instruction. Claude drafts the update; the human confirms. The friction of keeping the Mesh current should approach zero for anything Claude can draft from context.
Reactive is acceptable — for now
Spotting a stale section and flagging it is a valid contribution. "This page describes the old process — it needs an update" is enough. The person who spots it doesn't have to fix it, but they should surface it. A culture of noticing and flagging is the minimum viable freshness system.
Feature request — automated staleness detection
The team-as-last-line-of-defence model is sustainable early. At scale, it will miss things. A future tooling layer should explore: content age signals from version history (sections that haven't been touched in N months get flagged), agent-assisted freshness reviews (Claude periodically reads sections and surfaces ones that seem inconsistent with current reality), and configurable review reminders per page or section. This is not designed for now — but it belongs on the roadmap before the Mesh is large enough to drift silently.
Principle 25
Migration is deliberate and human-led — the Mesh is its own migration guide
The Mesh starts empty. When it launches, each person responsible for a piece of content migrates it over — there is no automated bulk import. Migration is deliberate: each content owner reviews what they own, decides what belongs in the Mesh, and brings it in with Claude's help. This is not a limitation — it's an opportunity to discard outdated content rather than inherit the entropy of every existing document.
Most source content is already in ClickUp as Markdown. The migration process is: a human opens Claude, loads the relevant Mesh context, and asks Claude to convert and structure the content correctly. Claude does the conversion; the human reviews and confirms.
What makes this work is that the Mesh's own research and principles are the context Claude needs to migrate correctly. The format decision (Markdown source, HTML artifact), the brand guidelines, the section structure, the content matrix — all of it is already in the Mesh by the time migration starts. Claude reads the Mesh to learn how to contribute to the Mesh.
Who migrates what
Each person is responsible for content they own. No central migration team, no bulk import scripts. The person who knows the content best is the one who decides whether it belongs in the Mesh and how it should be structured there.
How migration works
Human opens Claude → loads relevant Mesh sections as context (format research, brand guidelines, structure principles) → points Claude at the ClickUp source → Claude converts and structures → human reviews and confirms → content lands in the Mesh. Claude does the typing; the human owns the decision.
The self-referential loop
The research and principles being defined now are what Claude will load as context during migration. The Mesh teaches Claude how to build the Mesh. This means the quality of the format research and principles directly affects the quality of the migration — good context produces good conversions.
What not to migrate
Not everything in ClickUp belongs in the Mesh. Outdated docs, superseded decisions, content that was only relevant at a point in time — migration is the right moment to leave those behind. The Mesh should start lean and accurate, not comprehensive and stale.
Migration as a quality gate
Because migration requires a human to intentionally bring content over, everything that enters the Mesh at launch has been reviewed at least once. The Mesh starts with curated, intentional content — not a dump of everything that existed before. That's a meaningful quality advantage over automatic import.
Value 01
Less but better — quality over volume
AI makes it trivially easy to generate content. That's part of the value — but without intentionality, a team can accumulate a vast, low-quality Mesh faster than anyone can maintain it. The Mesh should work against this. The goal is not a large Mesh; it's a useful one.
Intentionality shows up at every stage. During migration, it means resisting the urge to bring everything over and asking instead: what does someone actually need to know to do good work here? During creation, it means writing for an audience — being clear about who will read this, what they need, and how the content should serve them. During promotion, it means treating the act of sharing more broadly as a quality checkpoint: is this ready to be ground truth for the people who'll rely on it?
In the age of AI generation, the limiting factor shifts from effort to judgment. The Mesh is only as good as the quality of the decisions behind it.
Migration as curation
When content moves into the Mesh, the right question isn't "how do I convert this?" but "should this be here at all?" Migration is a one-time opportunity to discard outdated docs, superseded decisions, and content that was only relevant at a point in time. The Mesh that launches from a curated migration is better than one seeded by bulk import.
Creating for an audience
Good Mesh content is written with a specific reader in mind — a new hire, a teammate joining a project mid-way, a Claude session that needs to understand design decisions before starting work. Knowing who will read it shapes what to include, what to omit, and how to structure it. Content that wasn't written for anyone in particular usually isn't useful to anyone in particular.
Promotion as quality gate
Elevating content from individual to team scope, or from team to org, is a natural moment to ask whether it's ready. Is it accurate? Is it current? Is it well-structured enough to be useful without explanation? If not, refine it before promoting. The act of sharing more broadly forces a quality review that often doesn't happen otherwise.
Less-but-better as the norm
A Mesh page that hasn't been read in months, a section that duplicates another, a document that was useful once — these are maintenance debt, not assets. The Mesh should make it easy to retire content that has stopped earning its place, and the culture should favour lean, excellent pages over comprehensive coverage.
The AI generation paradox
The same capability that makes the Mesh easy to build — Claude can draft and update content with very little effort — is what makes it easiest to bloat. When generating a new page costs almost nothing, the gate has to be judgment, not effort. Intentionality doesn't resist AI generation; it directs it toward what's worth building.
Value 02
The artifact is the last mile — understanding is the work
Karri Saarinen put it plainly in Output isn't design: AI agents generate plausible outputs quickly, but they do not necessarily help you understand the underlying problem. In practice, they often do the opposite — they generate outputs instead of first trying to shape the problem to the real conditions. The risk is mistaking generated form for solved problems.
The value of working with Claude isn't primarily what it produces. It's the understanding you build along the way. Spend two hours talking through a strategic decision, a product direction, a customer situation — structuring ideas, weighing tradeoffs, doing research, stress-testing assumptions. Then produce something. The artifact is the last mile. The understanding is everything before that.
This is what the Mesh is designed to support and preserve. Not a faster way to generate documents, but a deeper way to think — and a way to make that thinking persistent and shared. The session ends; the understanding shouldn't have to.
Shape the problem first
AI generates plausible responses to whatever you ask. If you haven't shaped the problem carefully first, the output will fit the question you asked — not the problem you actually have. The thinking session is where the problem gets shaped. The artifact follows from that, not before it.
The artifact is the last mile
The document, the brief, the plan — these come at the end. What precedes them is the real work: dialogue, iteration, refined judgment. Rushing to the artifact skips the thinking that makes it meaningful. A well-shaped problem produces a much better artifact than a fast one.
Gradual understanding
Clarity doesn't arrive all at once. It emerges through dialogue — testing an idea, finding it incomplete, refining it, testing again. That process with Claude is where understanding accumulates. The Mesh captures where it landed; the path there is the judgment you can trust going forward.
What this means for the team
This isn't just a personal working style. When everyone uses Claude as a thinking partner first — before reaching for the output — the quality of everything the team produces changes. The Mesh makes that thinking shared: what one person worked through is available to the next person who needs to understand the same problem.
Preparing something for the Mesh
When you want to put something in the Mesh — a process page, a decision record, a project brief — the instinct is to ask Claude for a draft. That works. But the better path starts earlier: bring Claude the problem before you bring it the task. Who will read this? What do they need to be able to do? What belongs and what should stay out? Before writing anything, Claude should probe those questions with real push-back — not gently, but with the intention of shaping the problem well before touching the output. The artifact follows from that. You can skip straight to a draft. But content prepared this way earns its place in the Mesh.
Cognitive debt
Skipping the thinking and going straight to the output introduces a specific failure mode: content that captures
what was decided without capturing
why. Future team members and agents can extract the conclusion, but the reasoning that made it meaningful is gone. This is
cognitive debt. It accumulates silently and compounds. The Mesh fights it by making the reasoning part of what gets written down — not a footnote, not a separate document, but woven into the content itself.