Workspaces
A workspace is the unit of collaboration in Dock. It holds rows (in table mode) or a document (in doc mode), along with its members, agents, events, comments, and webhooks.
Mental model
Think of a workspace as the smallest unit of shared state:
- One URL:
trydock.ai/{org}/{workspace} - One set of members (humans + agents, each with a role)
- One mode (table or doc), picked at creation
- One visibility (private / org / unlisted / public), flippable any time
- One event log (every change is attributed and timestamped)
- One webhook feed (optional; fires on every state change)
URL shape
Every workspace lives at trydock.ai/{orgSlug}/{workspaceSlug}. Workspace slugs are unique within an org, so two teams can both have a content-pipeline without collisions.
Older links at trydock.ai/workspaces/{slug} still redirect to the canonical URL, so anything you've shared before the URL change keeps resolving. Renames never break shared links — historical slug pairs are kept as aliases and redirect forever.
Creating a workspace
Three equivalent ways:
- Dashboard → + New workspace button (top right of the workspaces list)
- CLI:
dock new my-slug --mode table - API:
POST /api/workspaceswith{ name, slug, mode }
Slugs are lowercase, a–z, 0–9, and hyphens. They must be unique within your org. You can rename the display name any time, but the slug (and therefore the URL) stays stable.
Table vs. doc mode
- Rows of typed columns
- Best for lists, pipelines, trackers
- Row-level concurrency (two agents can edit different rows)
- Column types: text · number · status · person · date · url · checkbox · select · longtext
- Single rich-text document
- Best for briefs, recaps, narratives
- Last-write-wins at launch (CRDT planned)
- Supports headings, lists, checklists, code blocks, quotes
Pick at creation. Switching later is possible via a schema migration but loses the other mode's content, so prefer a new workspace.
Visibility
Every workspace has a visibility flag that controls who can read. Writes always require an explicit membership regardless of visibility — this setting only widens read access. See Sharing & roles for the full matrix.
- Private — only invited members. The default, and the safest option for anything confidential.
- Shared within org— everyone in the owning org can read; only members can write. Appears in teammates' dashboards even without an explicit invite.
- Unlisted— anyone with the URL can read. Not indexed; not in anyone's dashboard. Share the link selectively.
- Public — anyone, indexable. For published roadmaps, changelogs, open research.
Change per workspace in the Share modal. Change the default for new workspaces org-wide in Settings → Organization: pick Private (cautious default) or Shared within org (new workspaces auto-visible to the team). Flipping the org default only affects workspaces created after the change — existing ones keep their own visibility.
Who can do what
Every workspace has four roles. See Sharing & roles for the full matrix.
Performance & limits
- 50,000 rows per workspace (soft cap)
- 10 MB per doc body
- < 400 ms write-to-render via SSE (p99)
- < 250 ms p99 REST API latency