Targ Apps Docs
Chroma-Fs

Templates

CLI app templates — static, dynamic, and standard (Chroma-Fs demo).

The Chroma CLI ships three templates under $CHROMA_HOME/templates/, copied from Chroma/cli/examples/ during chroma install.

Quick comparison

TemplatemodeBundler on buildChroma-FsDevelop desktop
staticstaticMinify files as-isOptional (plugins)No (dev.desktop: false)
dynamicdynamicesbuild bundleOptional (plugins)Yes by default
standarddynamicesbuild bundleBuilt-in demoYes by default
chroma new my-app --template static     # default
chroma new my-app --template dynamic
chroma new my-app --template standard   # recommended for storage apps

standard template

The standard template is the recommended starting point when your app needs persistent storage. It is a dynamic ES-module app with:

  • chroma.jsonplugins: ["chroma-fs"], dev.desktop: true, package.zip: true
  • chroma-fs.json — filesystem backend with ./data base path (IndexedDB fallback in plain browser)
  • plugins/loader.js — loads createStorage from vendored plugins/chroma-fs/
  • src/storage.jsgetFs() singleton via createChromaFs
  • src/components/FileExplorer.js — browse, preview, write, and delete files
  • package.json scripts — fs:init and fs:link for monorepo development
chroma new notes-app --template standard
cd notes-app
npm run fs:link    # optional: link @chroma/fs from workspace
chroma dev         # opens Chroma Desktop in develop mode

In develop mode, files are stored under <app-data>/apps/develop/data/ on disk. In a plain browser (chroma dev --no-desktop), Chroma-Fs falls back to IndexedDB per chroma-fs.json resolution rules.

static and dynamic

See CLI templates for the full build and packaging differences between static and dynamic modes. Both can include plugins: ["chroma-fs"] — the standard template is essentially dynamic + a complete Chroma-Fs integration.

  • Configurationchroma-fs.json schema
  • Plugins — how plugins/loader.js works
  • CLIchroma new, chroma fs init, chroma fs link

On this page