Skip to content
GitHub

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 typeResolved URL
localPath/assets/files/brandLogo
remoteURLThe URL as-is
inlineBase64data: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:

PropertyKind
spec.messageImageLayoutPage — the message row logo
spec.titleImageLayoutCard — the card title logo
spec.sourceImage component

Each takes the metadata.name of an asset — with or without the asset: prefix — or an absolute URL:

spec:
  messageImage: companyLogo # or: asset:companyLogo

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.

AttributeTypeRequiredDefaultDescription
apiVersionstringyesMust be bino.bi/v1alpha1.
kindstringyesMust be Asset.
metadata.namestringyesUnique asset identifier. Used to reference this asset from layouts.
metadata.labelsobjectnoKey-value pairs for categorization and constraint matching.
metadata.annotationsobjectnoArbitrary key-value metadata, not used by the system.
metadata.descriptionstringnoFree-form description of this asset.
metadata.constraintsarraynoConditional inclusion rules. See Constraints.
AttributeTypeRequiredDefaultDescriptionSample
spec.typestringyesAsset type. Values: image, file, font.type: image
spec.mediaTypestringyesMIME type of the asset.mediaType: image/png
spec.sourceobjectyesAsset source. Exactly one of inlineBase64, localPath, or remoteURL.see below
spec.source.inlineBase64stringconditionalBase64-encoded content embedded in the manifest.inlineBase64: iVBORw0KGgo...
spec.source.localPathstringconditionalRelative or absolute file path to the asset.localPath: ./assets/logo.png
spec.source.remoteURLstringconditionalHTTP/HTTPS URL pointing to a remote asset.remoteURL: https://example.com/logo.png