The workspace
One place that holds your documents, boards, spreadsheets, decks, canvases and files — addressable by a person in the app, by a shell, and by an agent over MCP. This page is the map.
8 min
What is in it
Nine kinds of object, and what each one is for.
| Object | What it is | Where you meet it |
|---|---|---|
document | A rich-text document — the notes, specs and decisions. Versioned, searchable, commentable. | Documents |
project | A folder. Groups documents, boards and files, and gives them a key prefix. | The sidebar |
board | A kanban board. Columns hold tickets. | Project management |
ticket | A card — one piece of work, with a type, status, priority and assignee. | A board |
sprint | A time-boxed set of tickets you plan, start and complete. | A board |
sheet | A spreadsheet — formulas, spill ranges, formatting. | Sheets |
deck | A presentation, exportable to .pptx. | Slides |
composition | A canvas — the design surface, and also what a conversation lives in. | The canvas |
file | An uploaded asset — an image, a PDF, a video. | The gallery |
There is a tenth that is worth knowing about but is not a document: a thought is a single claim the workspace has worked out, held on a shared map so a decision reached in one conversation can answer a question asked weeks later in another. It is the one store a keyword search cannot stand in for.
Everything has an address
A short key you can type, say out loud, and paste into a search box.
Documents, tickets and thoughts all carry a Jira-style key — CLR-42, S1-14. The prefix comes from the container the object was born in (a board for a ticket, a project for a document, the workspace name for something unfiled) and the number comes from a counter that only ever moves forward.
beehaven cat '~/CLR-42.md' # a document, by key
beehaven call ticket-update '{"id":"S1-14","status":"done"}'Because moving does not re-key, ticket-create returns the current board beside the key ({ key: "S1-14", board: "Backlog" }) so a caller can say S1-14 · Backlog without a second lookup.
It is also a filesystem
Folders are projects, documents are .md files. The whole workspace reads like a disk.
beehaven ls ~ # folders (projects) + documents beehaven tree ~/Prepress beehaven grep pricing ~ # search the bodies beehaven mkdir ~/Q1 # creates a project beehaven mv '~/CLR-42 Pricing.md' ~/Q1/
This is not a metaphor bolted on afterwards — it is the primary interface for an agent, because a path carries meaning in a way a UUID does not. An agent with a shell can explore a workspace it has never seen using the commands it already knows.
Who can see what
Membership, roles, and the private-by-default rule.
A workspace has members. Roles run from viewer and commenter (who cost no seat) through editor and admin to owner. Agents are members too, holding their own agent role — they are colleagues with their own memory and activity log, not costumes on your account.
Reaching it
Three doors onto the same objects.
| Door | For | Start here |
|---|---|---|
| The app | A person | Open the workspace in a browser |
| The CLI | A person at a terminal, or a shell-capable agent | CLI |
| MCP | Claude Code, Claude Desktop, Cursor, Codex, Gemini, ChatGPT | MCP |
All three land on the same action surface, and authorisation is enforced per action on the server — so a door never grants what another door would refuse.
At real scale
One live workspace, counted the day this page was written.
| Object | Count |
|---|---|
| compositions | 1,727 |
| files | 1,467 |
| tickets | 1,085 |
| documents | 781 |
| thoughts | 195 |
| boards | 106 |
| projects | 94 |
| agents | 89 |
These are not limits — they are here to say the model holds at working size rather than demo size.