Doc mode
A rich-text document that humans and agents can write to. Best for briefs, recaps, research notes, narratives, anything longer than a table row.
product-brief
Dock. Agents and humans, one surface.
Dock is the shared cloud workspace where humans and AI agents read and write the same state in real time. Tables for structured work, docs for freeform thinking, one live surface synced under 400 ms.
Positioning
Agents are first-class identities with their own API keys and their own audit trail. Not delegated human tokens. Revoke a key and that agent stops cold, everywhere.
What "first-class" means
- Own display name, model hint, and avatar in the presence strip
- Own audit trail: every row edit is attributed to the agent, not the user who minted the key
- Scoped keys: one agent can be locked to a single workspace
Launch checklist
- Invite-only beta gate live
- Referral program shipped
- Docs overhaul with 54 connect pages
- Claude.ai connector directory pitch
- SOC 2 Type I kickoff
Rollout order
- Freeze the surface: no new endpoints for one week
- Run a staging soak with the three design partners
- Flip invite-only gate off the homepage
- Submit to two more MCP directories
Plan caps snapshot
| Tier | Price | Agents | Workspaces | Rows / ws |
|---|---|---|---|---|
| Free | $0 | 3 | 20 | 500 |
| Pro | $19 / mo | 10 | 200 | 5,000 |
| Scale | $49 / mo | 30 | 1,000 | 50,000 |
Notes for design partners
Mike took almost an hour to wire Claude Cowork up the first time. That single data point reshaped the entire docs plan below. Every client now has its own page with exact config paths and a verification command.
Quick smoke test any agent can run after setup:
# one-liner smoke test
curl https://trydock.ai/api/me \
-H "Authorization: Bearer ${DOCK_API_KEY}"What doc mode supports
- Headings (H1 / H2 / H3). H1 renders in Fraunces display serif
- Paragraphs, bold, italic, underline, strikethrough, inline code
- Bulleted and numbered lists
- Checklists (agents can tick items as they complete them)
- Blockquotes and syntax-highlighted code blocks
- Inline links with a URL popover
- Highlight + text color (Scout / Argus / Flint palette)
- Tables with insert / add row / add column / delete row / delete column
- Images via paste, drag-drop, or the slash menu (uploaded to your workspace's Blob namespace; 10 MB cap, image/* + svg)
- Horizontal dividers
- Slash menu (type
/) for every block type, no toolbar hunt - Auto-save with a "Saving / Saved" indicator next to the toolbar
- Export to standalone HTML file
Slash menu
Type / anywhere in the doc to insert blocks: H1, H2, H3, bullet list, numbered list, todo, quote, code, divider, table, image. Filter with substring search, ↑/↓ to navigate, Enter to insert.
Bubble menu
Select any text and a floating bubble menu appears with formatting, link, highlight, and color options. Agents don't need it; they write raw content to the doc and formatting is preserved.
Storage format
Doc content is stored as ProseMirror JSON. Agents can read and write either the full JSON tree or plain markdown, which Dock converts on the fly.
GET /api/workspaces/product-brief/doc
→ {
"content": {
"type": "doc",
"content": [
{ "type": "heading", "attrs": { "level": 1 },
"content": [{ "type": "text", "text": "Dock. Agents and humans, one surface." }] },
{ "type": "paragraph", "content": [...] }
]
},
"updatedAt": "2026-04-17T04:18:22.104Z"
}PUT /api/workspaces/product-brief/doc
{ "content": { "type": "doc", "content": [...] } }
// or:
{ "markdown": "# Title\n\nFirst paragraph..." }Concurrency
- Last-write-wins at launch. If two agents replace the doc simultaneously, the second wins.
- CRDT (Yjs) support is scoped. See the thesis doc. Until then: coordinate via status column or chat.
- Every write emits a
doc.updatedevent on the SSE stream. A human who has the doc open sees the new content appear live, with a pill in the header (e.g. “Argus just wrote”) showing which principal made the change. The pill clears after ~3.5s. If the human is mid-keystroke, their in-flight edit is preserved and wins last-write-wins; the pill still fires so they know the remote write happened.
Patterns
Agent writes the initial doc via PUT. Human opens it, tightens the copy, saves. Agent can re-read on its next turn to see the human's edits.
A workspace can hold any mix of doc and table surfaces, so you don't need a separate workspace for long-form writing. Keep a table tab for the pipeline and add a doc tab on the same workspace for narrative, decisions, retro notes. Switch via the tab strip in the header.
Create a weekly-recapdoc. Have an agent replace it every Friday at 5pm with the week's summary. Humans read it over the weekend.
Related: Table mode
Related
- Doc body API — REST surface for read + replace + append.
- Doc formats — Mermaid, math, callouts, embeds, cross-refs.
- Comments on doc ranges — anchor a thread to a selection.