Content collections hold files — images, documents, markdown, code — associated with mesh nodes. The collection prefix syntax lets you embed or link to those files anywhere in the mesh by combining a collection name with a relative path. @@addr/prefix/path reference Prefix resolution reserved? Reserved data / schema / area… not reserved Collection user-registered name @@ embed inline @ navigation link File resolved from collection, then rendered by extension (.svg → image, .md → markdown, …) Collection prefix resolution: the prefix after the address is checked against reserved keywords first; unknown prefixes route to user-registered collections, and the leading @@ / @ controls embed vs. link.

How the Prefix Works

Every mesh URL segment that doesn't match a reserved keyword is treated as a collection name. A double-@@ embeds the file inline; a single @ produces a navigation link.

@@{address}/{collection}/{path}     ← embeds the file
 @{address}/{collection}/{path}     ← hyperlink to the file

Note: The legacy colon syntax (content:file.svg) is still accepted for backward compatibility, but the slash form is preferred for new content.

Reserved Keywords

The following prefix names are reserved and route to mesh subsystems rather than collections:

Prefix Routes to
data/ Data entities
schema/ Type schemas
model/ Data models
area/ Layout areas
content/ Content files (the built-in default collection)
menu/ Menu structure

Any prefix not in this list is resolved as a user-configured collection name.

Collection Names

Because the collection name is part of the path — not a hard-coded keyword — you can use whatever name you've registered:

Reference Resolves from
@@Doc/DataMesh/UnifiedPath/content/logo.svg The content collection at that address
@@MyApp/assets/images/banner.png The assets collection at MyApp
@@MyApp/docs/readme.md The docs collection at MyApp

Configuring Collections

Collections are registered during hub setup. Each registration maps a name to a source — a local directory, a remote blob store, or an aliased path inside another collection:

config.AddFileSystemContentCollection("content", sp => "./content")
      .AddFileSystemContentCollection("assets", sp => "./assets")
      .MapContentCollection("avatars", "storage", "persons/avatars");

Supported File Types

The platform automatically selects a renderer based on file extension:

Type Extensions Rendered as
Images .png .jpg .gif .svg Inline image
Markdown .md Rendered markdown
PDF .pdf Embedded PDF viewer
Code .cs .js .ts .json Syntax-highlighted code block
Text .txt .xml .yaml Preformatted code block

Examples

Syntax:

@@Doc/DataMesh/UnifiedPath/content/logo.svg

Result:

Use single @ to produce a clickable navigation link instead of an inline embed:

Syntax:

@Doc/DataMesh/UnifiedPath/content/sample.md

Result:

@Doc/DataMesh/UnifiedPath/content/sample.md

Custom Collection Name

Once an assets collection is registered, reference it just like the built-in content collection:

@@MyApp/assets/images/banner.png

Live Demo

The cell below shows the collection-name resolution table as it appears at runtime:

MeshWeaver.Layout.Controls.Stack
    .WithView(MeshWeaver.Layout.Controls.Markdown("## Collection Prefix — runtime reference\n\nThe prefix immediately after the address selects the collection."))
    .WithView(MeshWeaver.Layout.Controls.Html(
        "<table style='border-collapse:collapse;width:100%'>" +
        "<thead><tr><th style='border:1px solid #ccc;padding:6px'>Reference form</th><th style='border:1px solid #ccc;padding:6px'>Effect</th></tr></thead>" +
        "<tbody>" +
        "<tr><td style='border:1px solid #ccc;padding:6px'><code>@@addr/content/logo.svg</code></td><td style='border:1px solid #ccc;padding:6px'>Embeds the file inline</td></tr>" +
        "<tr><td style='border:1px solid #ccc;padding:6px'><code>@addr/docs/readme.md</code></td><td style='border:1px solid #ccc;padding:6px'>Renders a hyperlink</td></tr>" +
        "<tr><td style='border:1px solid #ccc;padding:6px'><code>@@addr/assets/banner.png</code></td><td style='border:1px solid #ccc;padding:6px'>Embeds from the <em>assets</em> collection</td></tr>" +
        "</tbody></table>"))
Reconnecting…
The connection to the server was interrupted. Trying to restore it…
Trying again…
The connection could not be restored. Reloading the page…
The server was updated. Reloading the page to pick up the latest version.