Document
A markdown document on the canvas
Document
Node type: utility:document
Category: Helpers
Description
A canvas-native markdown page. Use it for the writing that belongs WITH a board and not in another tab — a film brief with its logline and character sheets, a template's usage notes, the shot list a group of nodes implements.
Like the Sticky Note it is an annotation: no ports, no run button, never executes, never costs credits. Unlike the sticky it renders GitHub-flavored markdown (headings, lists, tables, code, links) and embeds images, so a brief can show the assets it describes.
Dark and light
Documents are dark by default — a white page is a floodlight on a dark canvas. The sun/moon button in the sheet header (and in the fullscreen header) flips that document between dark and light paper, and the choice is saved with the workflow, per document. Two briefs on one board can differ.
Documents created before this existed have no saved choice, and those render dark like everything else.
Shared boards and embeds render whatever the author saved. There is no toggle there — nothing to save it to.
If you embed a board with /embed/flow/<id>?theme=light (or ?theme=dark),
that choice also applies to the documents on it, so a brief does not sit as a
dark slab in the middle of a light embed. It only changes what the embed
displays — the author's saved choice is never overwritten. With no ?theme on
the URL, documents show exactly what the author saved.
Editing
- Double-click the body to edit the raw markdown.
- Click outside, or press Escape, to go back to the rendered view. (Escape only leaves edit mode; a second Escape does whatever Escape does on the canvas.)
- Drag the corners to resize. New documents start at 640 x 760.
Full screen
Click the expand icon in the sheet header (or open a document's link, see below) to read it as a page: a ~960px reading column with larger type, the same markdown and the same live references as the sheet on the canvas.
- Edit from the pencil icon, or double-click the page.
- Escape unwinds one level: editing → reading → back to the canvas.
- Edits made full screen and edits made on the canvas are the same edit, saved the same way. There is no "apply".
Sharing a document
The link icon copies /'flow/<workflow>?activeNode=<node>' to your
clipboard — the same link shape the ... menu on any node writes. Paste it into
a chat and the recipient lands on your board with the camera on that node, and,
because it is a document, with the reader already open.
Two details worth knowing:
- Closing the reader drops
?activeNodefrom the address bar, so a refresh does not re-open it. Closed means closed. - The multi-node form of the link (
?activeNode=id1,id2, which fits the camera around several nodes) selects them but never opens a reader — with more than one target there is no single document the link is "about".
Referencing nodes with @
A document can point at another node on the board and render that node's current output inline:
@[Hero still](node:cm3x8k2p0001)
An image node renders its image, a video or audio node its player, a text node its text. The reference is live: re-roll the node, or promote a different result from its carousel, and every brief that mentions it updates. This is the reason to use a mention instead of pasting a CDN url — a pasted url keeps showing the old asset and gives you no way to notice.
To get the token, open a node's ... menu and choose Copy mention (for a
document), then paste it into the document body. (Typing @ in the document
does not yet open a picker — that is a follow-up.)
The part in brackets is just a label for readability; the node: id is the
address, so renaming a node never breaks a reference. A mention that cannot
resolve — the node was deleted, or it has not produced anything yet — renders as
an amber chip that says so, rather than quietly leaving a hole in the brief.
Images
Embed with normal markdown image syntax and any URL the browser can load — including a CDN url copied from a generated result:

Images are constrained to the width of the page, so a 4K still will not blow out the sheet.
Security note
Raw HTML in the source is escaped, not rendered — a <script> tag shows up
as literal text. Documents travel with the workflow when a board is shared,
forked from a blueprint, or published as a template, so HTML pass-through is
deliberately off and must stay off.
The same applies to what a mention pulls in: a referenced node's text output is
rendered as text, never re-parsed as markdown, so a node cannot inject headings,
links or HTML into someone else's brief. Referenced media is only rendered from
http(s) or same-site urls.
Canvas ports
No input ports.
Sidebar config
No sidebar config fields.
Outputs
No outputs.