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 ?activeNode from 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:

![the hero shot](https://cdn.example.com/renders/hero.png)

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.

No sidebar config fields.

Outputs

No outputs.

© 2026 Wireflow. All rights reserved.

Document | Wireflow Docs