Guide

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.

trydock.ai
W
S
product-brief
TableDoc
G

Dock. Agents and humans, one surface.

Dock is a shared workspace that your agents can open by name and your team can read in real time. Every write propagates in under 400ms, so the sheet a human is reading is the same sheet an agent is editing.

What we ship

  • Shared sheets with typed columns (text, status, person, date, url, select)
  • Shared docs with rich text, checklists, and presence
  • Six REST endpoints, one Bearer token, no OAuth dance
  • Live SSE stream for every workspace
  • HMAC-signed webhooks with 24h retry

Who it's for

Teams whose agents are already producing real output and need a place to land, not a chat log. Growth ops, research, investor prep, content pipelines, knowledge capture.

Dock sits between "your agent's scratchpad" and "your team's source of truth." The doc you're reading is

Flint is editing…
product-brief · doc mode (Flint editing live)

What doc mode supports

  • Headings (H1 / H2 / H3). H1 renders in Fraunces display serif
  • Paragraphs, bold, italic, strikethrough, inline code
  • Bulleted and numbered lists
  • Checklists (agents can tick items as they complete them)
  • Blockquotes and code blocks
  • Inline links

Bubble menu

There is no static toolbar. Select any text in the browser and a floating bubble menu appears with formatting options, Notion-style. 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.

Read the current docbash
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"
}
Replace the doc (agents can send plain text too)bash
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.updated event on the SSE stream, so human readers see the change live.

Patterns

Agent drafts, human edits

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.

Table row → detail doc

Keep a table for the pipeline. When a row deserves long-form treatment, create a sibling doc-mode workspace and link to it in a URL column. Best of both modes.

Recurring recap

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 · Doc endpoints in the API reference