Skip to main content

Experiments

Dogfooding an agent-native workspace

Richard Ng

Draft date: 1 March 2026

Towards agent-native infrastructure

We've argued that the Post-Intelligence Bottleneck stems from gaps in agent-native infrastructure: interface, coordination, provenance and discretion.

History has shown us that GPTs can require new infrastructure and new ways of working. Now, we'll show that these are also inseparable for AI. The new way of working emerges from collapsing the fragmented layers of today's knowledge work stack, and that collapse is itself the infrastructure.

In this section, we'll sketch an outline of what this looks like, and show some early experimental results.

Knowledge work's fragmented stack

Today's knowledge work infrastructure is built around artifacts like documents, spreadsheets and presentations - outputs of work.

Alongside these artifacts sits 'work about work': the alignment, communication and coordination layer. This creates an industry for project management and team communication software - e.g. Atlassian, Notion and Asana.

The problem now is that context is spread across multiple places. To manage this, we have yet another layer, which we might (tongue-in-cheek) call 'work about work about work'. At this level, software helps knowledge workers either search amongst all their fragmented context (e.g. Glean) or create patches to join them together (e.g. Zapier).

Collapsing boundaries with new infrastructure

We discussed earlier four types of infrastructure gaps: interface, coordination, provenance and discretion.

The first three correspond roughly to the three fragmentation layers which we briefly outlined above. The fourth — discretion — corresponds to something that has never been software at all: the unwritten rules of organizational life. Who can see what, who needs to approve what, when to escalate and when to handle it yourself. Today, these live in people's heads, in cultural norms, in the instinct that something is "above my pay grade." There is no layer in the stack for them because humans carried them implicitly. Agents can't.

Agent activityFragmented layer
InterfaceHowWork
CoordinationWhatWork about work
ProvenanceWhyWork about work about work
DiscretionWhoThe unwritten rules

By staying within these separate layers, we limit ourselves to incremental innovation. (It's still valuable - an AI co-pilot for Google Slides could genuinely save me time - but it doesn't tackle the fundamental infrastructure gaps or the Post-Intelligence Bottleneck.)

If we're serious about civilization-scale impact, we should be much more ambitious. The real opportunity here is to build the key infrastructure for agent activity and smash the artificial boundaries in the fragmented knowledge work stack.

Today's fragmented stack basically contains distinct 'types' of record (e.g. documents, goals, decisions) which are artificially walled off from each other.

  • Documents, slides and spreadsheets live in the 'work' (office suite) walled garden.
  • Goals, projects and tasks live in the 'work about work' walled garden.
  • Decisions and constraints are implicit and nebulous. They might be found jotted down in a document ('work'), or they might be found in our project management ('work about work').

By bringing all the record types together and implementing structured relationships between them - in a way that is only possible when they're all part of the same system - we can solve the infrastructure gaps for agent activity and smash the artificial boundaries.

  • Every record type becomes a node on a knowledge graph: one where decisions, tasks and documents are all first-class citizens, regardless of domain. You can link your customer CRM entry to a child note about them, and link that child note to a related product ticket.
  • We get an agent-native interface through a common entry point to everything on our knowledge graph. Agents can easily gain context by tracing through connected nodes, and get the customer context from the related task. There's no latency from depending on external services.
  • We get agent-native coordination through baking in new primitives that incumbents don't have. Documents and tasks can be claimed by ephemeral agents, so other agents are aware - but with timestamps so that agents can identify stale claims.
  • We get agent-native provenance through the relationships between records. Tasks can be implemented_by slides; projects can be superseded_by decisions; documents can be drawn_from spreadsheets.
  • We get agent-native discretion through policies and scoping that live on the graph itself. Because organizational context — relationships, sensitivity levels, delegation chains — is part of the same system, boundaries can be membranes rather than walls: contextual, negotiable, and routed through the shortest path to someone with the authority to judge.

These links are key. If agents can produce documents, code and analyses cheaply and fast, then artifacts are no longer the scarce output. What becomes scarce - and therefore valuable - is the judgment that shaped them: the decisions made, the direction given and the constraints provided.

The human's primary contribution in an agent-native world is directing, deciding, constraining and reviewing.

In a world of legacy GUIs, these get lost in transient agent conversations, unstructured markdown sprawl or opaque memory structures.

In our agent-native infrastructure, we can look at every goal, decision, task and document, and see the full history of agent activity, the authorizing scope of human principals, and the traceable path to an originating task or goal.

Early experiments in Native infrastructure

I've been building and testing in this space.

Native is my first experiment. It's an agent-first workspace for knowledge work.

AI agents can connect to Native via MCP and use it track decisions, manage your calendar, operate a CRM, organize your projects and draft your documents.

I've been dogfooding it - whilst the very early days of Native used a different project management tool, after a few days we switched entirely to building Native using Native.

I'm excited to share some of the early results from it.

To start with, I'm sharing two conversations between me and Claude, where Claude is connected to my Native workspace via MCP.

  • They're entirely unedited. You can see what Claude said, which tool calls it made, and what the results were (albeit it's collapsed tool call results as per Claude Code).
  • There's one bonus interactivity widget that I added. You'll see Claude use short IDs (e.g. 6746446) all over the place. These point to nodes in my Native workspace. You can hover, preview and navigate to these in the essay below.

Sample conversation #1: self-organizing workspace

Here's a conversation I had with Opus 4.5, via Claude Code.

It has a minimal CLAUDE.md - basically just pointing it to use the bootstrap MCP tool from our server to get orientated.

I got Kaitlyn, an ML engineer at Kraken Technology, to test setup; I watched her and took some notes here, record 35a6908
can you help me organize them somewhere better? feel free to err on side over-exploring
th - bootstrap (MCP)
auth_user_id: "a0081065-****-****-****-************" workspaces: … +57 lines (ctrl+o to expand)
th - get_record (MCP)(ids: ["35a6908"], include_full_content: true)
Path: TeamHive HQ [6746446] -> Setup observations Record [35a6908]: Setup observations Type: note … +9 lines (ctrl+o to expand)
Let me explore the workspace structure to find the best home for these observations.
th - get_structure (MCP)(record_id: "0974ae4", depth: 3, max_children: 20)
Richard & Kaitlyn [0974ae4] (workspace) └── Japan Trip, March 2026 [37ba12c] (project) ├── Ideas [563941d] (collection) - 21 notes └── Planning [050a8a3] (collection) - 6 tasks
th - query_record (MCP)(search: "onboarding setup", parent_id: "6746446", scope: "descendants", format: "text", limit: 20)
Found 19 records: Under TeamHive HQ → Workstreams → Product & Engineering → UI & Web Inte … +81 lines (ctrl+o to expand)
th - query_record (MCP)(search: "llm.txt", parent_id: "6746446", scope: "descendants", format: "text", limit: 10)
Found 10 records: Under TeamHive HQ → Workstreams → Brand & Strategy [ec25a73]: … +39 lines (ctrl+o to expand)
th - get_structure (MCP)(record_id: "7f61e81", depth: 3, max_children: 20)
This container has 22 direct children. Consider organizing related items under goals or collections. … +2 lines (ctrl+o to expand)
th - get_record (MCP)(ids: ["8cf3869","2dd556a","768361b"], include_full_content: true)
Found 3 of 3 records: --- … +306 lines (ctrl+o to expand)
th - query_record (MCP)(search: "Kaitlyn", format: "text", limit: 10)
Found 10 records: Under (root): … +30 lines (ctrl+o to expand)
th - query_record (MCP)(parent_id: "7f61e81", format: "text", limit: 25)
Found 22 records under TeamHive HQ → Workstreams → Product & Engineering → Onboarding & Landing [7f61e81]: • [27df9e7] Prioritize stale facts resolution for demo readiness (dec … +39 lines (ctrl+o to expand)
Good context gathered. The note has 4 observations from Kaitlyn's setup test — a mix of bugs and a UX idea. Let me turn these into proper actionable records under the right parents in Onboarding & Landing.
th - query_record (MCP)(search: "early adopter prospects", parent_id: "6746446", type: "collection", format: "text", limit: 5)
Found 1 records under TeamHive HQ → Entities [171c522]: • [c7c08b3] Early Adopter Prospects (collection) [crm]
th - get_record (MCP)(ids: ["3529b80"], include_full_content: true)
Path: TeamHive HQ [6746446] -> Workstreams [b01ed90] -> Product & Engineering [6252391] -> Onboarding & Landing [7f61e81] -> MCP server installation flow for new users … +40 lines (ctrl+o to expand)
th - get_structure (MCP)(record_id: "c7c08b3", depth: 2, max_children: 15)
⚠️ Warning: This container has 108 direct children. Consider organizing related items under goals or collections. … +17 lines (ctrl+o to expand)
Now I have the full picture. Let me create the organized records — a Kaitlyn entity under Early Adopter Prospects, a proper user testing session note, and actionable bug/improvement tasks under Onboarding & Landing.
th - create_record (MCP)(actor: "agent:worker", records: [{"title":"Kraken Technology","type":"organization",...}, {"title":"Kaitlyn setup test observations","type":"note",...}, 3 task records])
Created 5 records: 5374ee5 organization: Kraken Technology 070f387 note: Kaitlyn setup test observations … +4 lines (ctrl+o to expand)
Now let me add Kaitlyn as a person under Kraken Technology and link the observation note to the original raw note.
th - create_record (MCP)(actor: "agent:worker", records: [{"title":"Kaitlyn","type":"person","parent_id":"5374ee5",...}])
Created person cb3ac57: Kaitlyn
th - manage_links (MCP)(record_id: "070f387", operation: "add", actor: "agent:worker", links: [{"target_id":"35a6908","relationship":"relates_to"}])
Added 1 link(s)
Done. Here's what I organized from your raw note: Structured observation note → 070f387 under Onboarding & Landing, linking back to your original note 35a6908 3 actionable tasks (all under Onboarding & Landing): - 0819713 — Fix /llm.txt URL to use www subdomain (tagged bug, complexity:trivial) - 3bf1f61 — Fix Claude Code MCP config: add type: "http" + correct path to ~/.claude.json (tagged bug) - edf8109 — Add copy-paste friendly MCP config to setup flow (tagged ux) Entity records for future CRM tracking: - 5374ee5 — Kraken Technology (under Early Adopter Prospects) - cb3ac57 — Kaitlyn (person, ML engineer)
✻ Brewed for 2m 22s

For me as a user, the main cool thing about this is that my workspace has become self-organizing.

With every note-taking or workspace product that I've used in the past before, there have been two pain points for me:

  1. It's hard to figure out the right organizing structure and hierarchy. There are tonnes of things to figure out: How flat vs deep should I go? Which concerns are conceptually related and should be in the same folder? What are the other big organizing concepts I should use?
  2. It's even harder to maintain the right organizing structure. I might at least enjoy setting up the structure, whilst I labor under the illusion of "This is going to be the system that finally keeps me organized!". But when it comes to using it, it's often painful to both: (a) remember where things should go; and (b) actually manually relocate them there. (It then gets even worse if you're sharing the workspace with other people...)

Now, with Claude + Native, my workspace organizes itself.

  • I took a rough note and stuck it in the workspace root (which is definitely not the right long-term home for it)
  • Claude correctly organized it in the CRM part of my workspace: creating proper records for both the person (Kaitlyn) and the mentioned company (Kraken Tech), and even pulling out the actionable tasks and locating them under the appropriate area, with sensible tags

Sample conversation #2: fuzzy recollection

Here's a second sample conversation from February 5th that I had with Opus 4.5.

Two small points of pre-emptive context to avoid confusion:

  1. At the time of this conversation, I was experimenting with HiveNative as a name; originally, it had been TeamHive. Subsequently, I shortened 'HiveNative' to 'Native'.
  2. /hivenative:scope (MCP) is Claude Code syntax for using an MCP server prompt. scope is an MCP server prompt that I designed to turning 'vague fuzzy notion' into something tangible. It's pretty similar to a local slash command.
/hivenative:scope (MCP) I think we recently worked on suggesting to agents (MCP clients) that they can link things back to users in a clickable way, e.g. `https://teamhive.com/task/[taskId]`.
I think it might be worth us thinking about "what might be a nice shorter URL for me to get"? e.g. `hive.io` (taken)
I see you want to think about acquiring a shorter, memorable URL for the product — since the current approach suggests URLs like https://teamhive.com/task/[taskId] but a shorter domain would be nicer for users. Let me first get oriented and understand the current state.
hivenative - bootstrap (MCP)
auth_user_id: "a0081065-****-****-****-************" workspaces: … +57 lines (ctrl+o to expand)
Now let me check if there's any existing work or decisions around URLs/domains.
hivenative - query_record (MCP)(search: "URL domain short link", parent_id: "6746446", scope: "descendants", format: "text")
[73 of 73 matches | filters: search: "URL domain short link"; parent: 6746446 (descendants)] … +374 lines (ctrl+o to expand)
I found relevant records. Let me get more details on the short redirect domain goal that already exists.
hivenative - get_record (MCP)(ids: ["224f8eb","f3a08c0","5c9cd27"], include_full_content: true)
Found 3 of 3 records: --- … +191 lines (ctrl+o to expand)
Excellent! There's already substantial work here. Now let me also check the recent URL affordance work that was mentioned.
Searched for 1 pattern, read 1 file
(ctrl+o to expand)
Now I have good context. Let me also check on the recent rebrand - I see mentions of both "TeamHive" and "HiveNative".
hivenative - query_record (MCP)(search: "rename rebrand HiveNative domain", parent_id: "6746446", scope: "descendants", limit: 10, format: "text")
[9 of 9 matches | filters: search: "rename rebrand HiveNative domain"; parent: 6746446 (descendants)] … +45 lines (ctrl+o to expand)
Good context. I see the rebrand to HiveNative is recent (Feb 4), and the existing short redirect domain research was done on Feb 2 when it was still "TeamHive". Let me get the rebrand decision to understand the naming situation.
hivenative - get_record (MCP)(ids: ["a9bb4f4"], include_full_content: true)
Path: HiveNative HQ [6746446] -> Workstreams [b01ed90] -> Brand & Strategy [ec25a73] -> Branding & Naming [a068ed0] -> Rebrand to HiveNative Record [a9bb4f4]: Rebrand to HiveNative … +90 lines (ctrl+o to expand)
Now I have the full picture. Let me summarize what I see:
What I See There's already existing work on this: 1. Goal [224f8eb]: "Short redirect domain for TeamHive short IDs" — contains detailed research from Feb 2 2. Goal [f3a08c0]: "Integrate short redirect URLs into TeamHive UI" — depends on the domain being acquired 3. Recent rebrand to HiveNative (Feb 4) — the domain research predates this and uses "TeamHive" naming The existing research identified candidates like thv.sh, thive.to, thive.io, etc. — all based on "TeamHive". With the rebrand to HiveNative, this research needs updating. Concerns Identified Concern A: Domain Selection - What short domain to acquire for HiveNative - The "thive" candidates no longer make sense post-rebrand - Need fresh research with "hive" or "hivenative" as the root - Independence: must be decided before infrastructure work Concern B: Redirect Infrastructure (already decided) - Cloudflare Workers for redirects - 302 temporary redirects - Already scoped in existing goal Concern C: UI Integration (already scoped) - Exists as [f3a08c0], depends on domain acquisition - Blocked until domain is live Assessment This is really one focused piece of work: updating the domain selection decision post-rebrand. The infrastructure and UI concerns are already scoped separately. The existing goal [224f8eb] captured the pre-rebrand research well. We need to either: - Update that goal with new HiveNative-aligned candidates, or - Make a domain selection decision that supersedes the "Decisions Deferred" section --- Does this breakdown match your mental model? Should we focus on researching HiveNative-aligned short domain options?
✻ Cooked for 1m 23s

As a user, here's a couple of things that I thought was cool about this (and therefore worth saving).

  • I feel liberated from having to remember, search or organize things.

    • It's enough for me to give a vague fuzzy pointer to Claude - "I think we recently worked on X" - and it can figure out what I mean from our workspace.
    • Previously, I might have had to dig around in some file tree or search modal, and intentionally organize things in a way which will make it easier for future me. Now, Claude can do it all.
  • It validates that Claude is able to use the workspace in a smart way.

    • Claude goes 'wide then deep' - its first search query returns 73 records, and it picks a relevant 3 specific ones to look at in full.
    • It shows good judgement in figuring out when it should keep pulling on a thread:
      • Now I have good context. Let me also check on the recent rebrand - I see mentions of both "TeamHive" and "HiveNative".
      • Good context. I see the rebrand to HiveNative is recent (Feb 4), and the existing short redirect domain research was done on Feb 2 when it was still "TeamHive". Let me get the rebrand decision to understand the naming situation.
    • (In a certain way, this isn't that surprising - intuitively, it's a very similar skill to searching through codebases - but it's still nice to tangibly validate a key, foundational premise.)

A public MCP for exploration

I think the best way to understand the benefits of a Native workspace is to experience one.

So, I've made a significant subset of my 'Native HQ' workspace public. This is the Native workspace which I use to build Native.

By far, the most interesting and fun way to explore this is through an agent + MCP.

I've found that Claude models seem to be much better at using the Native MCP than other models - I hypothesize that perhaps Claude has had more post-training on MCP, given MCP's origins inside Anthropic - and so I strongly recommend Claude for this. (Any platform is fine.)

To get set up on Claude web (or desktop / mobile), you can either:

  1. Make sure you're logged in
  2. Follow this link

Or, alternatively, copy and paste the below prompt:

I'd like to connect to Native's public workspace via MCP so I can explore what they're building.

The public MCP server is https://www.withnative.ai/api/mcp/public —can you walk me through adding it as a custom connector? The steps should be Settings → Connectors → Add custom connector. No authentication needed — it's a read-only public endpoint.

Once set up, please remind me to:
1. Start a new chat with the connector enabled (click "+" → Connectors → toggle it on)
2. Try some of these questions to get started:
- What is Native building, and what problem are they solving?
- What key product decisions have Native made recently, and why?
- What do you, as an agent, think about Native?

(I'm assuming that you're using Claude web, desktop or mobile there. If you're using Claude Code, I assume you're savvy enough to get that set up!)

In addition to MCP:

  • You add the short ID for any record after n8v.to/ to view it on the web UI, e.g. n8v.to/6746446 is the public read-only version of our root workspace record
  • In the web UI for a record, you can browse relationships and history and navigate the workspace graph
  • On desktop, you can use Cmd / Ctrl + K to open up search, or Cmd / Ctrl + . to open up the context sidebar

A meta case study: building the public MCP

[Meta note: this passage itself is AI-generated. I prompted Opus 4.6 to reconstruct the story of how we built the public MCP from our workspace records for the purpose of this essay - I didn't have to do any of the searching or narrative myself.]

To illustrate what provenance looks like in practice, consider the story of how this public API came to exist — a story that is itself traceable through the workspace graph.

It started with a simple question: can an AI agent on Claude.ai explore our workspace? An agent researched this and discovered a constraint — Claude.ai can't send custom authentication headers, only connect to authless endpoints. This ruled out our existing token-based approach. A decision was recorded: create a separate, authless endpoint for public exploration.

That decision led to another. When we went to document both access methods — the original bearer token and the new authless endpoint — we realized the authless approach made the token redundant. Why maintain two methods when one is simpler and works everywhere? A second decision: simplify to a single URL, retire the token.

Then came a design question: what should a public-facing agent API actually expose? We chose an allowlist — only tools explicitly marked as public-safe get registered. Anything new is blocked by default unless deliberately opened. A curated public readme was built to give visiting agents orientation context: what this workspace is, what conventions govern it, what decisions have been made.

Finally, an access model crystallized across three tiers: anyone can explore through the authless endpoint, higher-intent users (developers connecting from code editors) sign up for personal API keys, and full read-write access requires an invitation.

Five linked decisions across three weeks, each building on the last — from "can Claude.ai connect?" to a considered access architecture. Each decision records the alternatives that were weighed and the rationale for the path taken. Any agent or human arriving later can trace why the API works the way it does, what was considered, and what was deliberately left out.

This is what provenance looks like as infrastructure. Not a changelog or a git blame, but a navigable web of design decisions — each linked to the goals it serves and the work that implements it.

These are early experiments — but they point in a direction. The workspace organizes itself, agents navigate context intelligently, and every decision leaves a traceable trail. The question now is where this direction leads.