Skip to content

Asset

Asset manifests declare binary resources such as logos, pictograms, and fonts. Layouts refer to assets by metadata.name so that paths and URLs are centralized. Image assets also serve as the icon sources for installable web apps - see spec.pwa.icons on LiveReportArtefact.

The smallest well-formed Asset sets the required fields spec.type, spec.mediaType and one spec.source variant.

apiVersion: bino.bi/v1alpha1
kind: Asset
metadata:
  name: brandLogo
spec:
  type: image
  mediaType: image/png
  source:
    localPath: ./assets/brand-logo.png

All attributes are listed in the Attribute Reference below.

Exactly one spec.source variant must be set: localPath as shown above, remoteURL for a hosted file (see Examples) or inlineBase64 for a self-contained bundle.

Important fields:

  • spec.type - one of image, file, font.
  • spec.mediaType - MIME type, for example image/png, image/svg+xml, font/woff2.
  • metadata.description - optional free-form description of this asset.
  • spec.source.inlineBase64 - base64-encoded content embedded in the manifest.
  • spec.source.localPath - relative or absolute path to a file in your project.
  • spec.source.remoteURL - HTTP/HTTPS URL pointing to a remote asset.
---
apiVersion: bino.bi/v1alpha1
kind: Asset
metadata:
  name: brandLogo
  description: Main brand logo
spec:
  type: image
  mediaType: image/png
  source:
    localPath: ./assets/brand-logo.png
---
apiVersion: bino.bi/v1alpha1
kind: Asset
metadata:
  name: sampleReportPreview
  description: Sample report preview screenshot
spec:
  type: image
  mediaType: image/png
  source:
    remoteURL: https://via.placeholder.com/1200x800?text=Report+Preview
---
apiVersion: bino.bi/v1alpha1
kind: Asset
metadata:
  name: corporateHeadingFont
  description: Heading font for corporate reports
spec:
  type: font
  mediaType: font/woff2
  source:
    localPath: ./assets/fonts/corporate-heading.woff2

You can reference any non-font asset from Markdown content using the asset: URL scheme:

![Company Logo](asset:brandLogo)

At build time bino resolves asset:brandLogo to the actual URL based on the asset’s source type:

Source type Resolved URL
localPath /assets/files/brandLogo
remoteURL The URL as-is
inlineBase64 data:image/png;base64,…

If the name does not match any asset the image renders as a broken link (#asset-not-found:name). The asset-reference-undefined lint rule reports this before you build.

This works in two contexts:

  1. DocumentArtefact - inside .md source files rendered via spec.sources.
  2. Text components - in the spec.value Markdown of Text, LayoutPage inline text children, and Grid text cells.

Given this asset:

---
apiVersion: bino.bi/v1alpha1
kind: Asset
metadata:
  name: companyLogo
spec:
  type: image
  mediaType: image/png
  source:
    localPath: ./assets/logo.png

Reference it from a DocumentArtefact markdown file:

# Annual Report

![Company Logo](asset:companyLogo)

Welcome to the 2025 annual report.

Or from a Text component:

---
apiVersion: bino.bi/v1alpha1
kind: Text
metadata:
  name: headerWithLogo
spec:
  value: "![Logo](asset:companyLogo) **ACME Corp**"

Three properties take an image directly, rather than through Markdown:

Property Kind
spec.messageImage LayoutPage - the message row logo
spec.titleImage LayoutCard - the card title logo
spec.source Image component

Each takes the metadata.name of an asset or an absolute URL:

spec:
  messageImage: companyLogo

The older form messageImage: asset:companyLogo still works with template engine 1.x, but is deprecated. bino lint reports it with asset-prefix-deprecated. In Markdown image references the prefix stays as it is.

A bare file path is not a valid value. Assets are served only under /assets/files/<name>; bino does not serve your project directory, so messageImage: images/logo.png cannot load even when that file exists next to the manifest. Declare an Asset with a localPath source instead, and reference it by name.

Unresolvable references are reported by the asset-reference-undefined lint rule, and an asset whose localPath file is missing by asset-source-missing.

Attribute Type Required Default Description
apiVersion string yes - Must be bino.bi/v1alpha1.
kind string yes - Must be Asset.
metadata.name string yes - Unique asset identifier. Used to reference this asset from layouts.
metadata.labels object no - Key-value pairs for categorization and constraint matching.
metadata.annotations object no - Arbitrary key-value metadata, not used by the system.
metadata.description string no - Free-form description of this asset.
metadata.constraints array no - Conditional inclusion rules. See Constraints.
Attribute Type Required Default Description Sample
spec.type string yes - Asset type. Values: image, file, font. type: image
spec.mediaType string yes - MIME type of the asset. mediaType: image/png
spec.source object yes - Asset source. Exactly one of inlineBase64, localPath, or remoteURL. see below
spec.source.inlineBase64 string conditional - Base64-encoded content embedded in the manifest. inlineBase64: iVBORw0KGgo...
spec.source.localPath string conditional - Relative or absolute file path to the asset. localPath: ./assets/logo.png
spec.source.remoteURL string conditional - HTTP/HTTPS URL pointing to a remote asset. remoteURL: https://example.com/logo.png