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 server was updated. Reloading the page to pick up the latest version.