Publisher documentation

August 7, 2026 · View on GitHub

Start at the project README for the 60-second quick start. This folder holds the deeper reference. If you're an AI agent, read AGENTS.md first — it's the canonical guide to running Publisher and connecting over MCP.

Examples

Three runnable packages ship in the default examples environment, plus one standalone React app — every doc below points back to one of them, and each example's README points back to the docs.

ExampleWhat it shows
storefrontA complete ecommerce model — joins, measures, # dashboard views, and a no-build HTML app. The flagship first-open package.
governed-analyticsGivens, #(authorize), row-level access, and discovery curation in one small package.
html-data-appA no-build SaaS-subscriptions dashboard served from a package's public/ directory.
data-appAdvanced/internal: a standalone React app built on the SDK, reading from storefront. Not a served package — run it with Vite.

Concepts

DocRead it when you want to…
architecture.mdUnderstand how Malloy, Render, Publisher, and the SDK fit together.
api-overview.mdUnderstand the REST + MCP surfaces and the resource hierarchy.
packages.mdUnderstand the package format: publisher.json, models, data files, and how a package gets served.

Use it

DocRead it when you want to…
publisher-app.mdNavigate the built-in web app and see how the constructs surface.
explorer.mdBuild queries with the no-code visual query builder.
ai-agents.mdConnect an AI agent, over MCP or (unattended) over REST, and ground it in your models.
html-data-apps.mdShip a no-build HTML dashboard inside a package, hosted by Publisher.
embedded-data-apps.mdAdvanced/internal: the React SDK the App is built from.

Model & govern

Runtime parameters and access control all build on one mechanism — givens. Start there for the primitive, then follow the application you need.

DocRead it when you want to…
givens.mdLearn the base mechanism — declare runtime parameters, drive filter widgets, and reach access control.
row-level-access.mdRestrict which rows a caller sees (given-scoped where: + #(authorize)).
authorize.mdGate who can query a whole source with #(authorize).
discovery-and-access.mdControl what is discoverable and queryable (explores / queryableSources) — the visibility axis.
security-posture.mdUnderstand what Publisher does and does not defend against, before deploying it or adding a feature.

Deploy & operate

DocRead it when you want to…
deployment.mdRun a built server via npx, Docker, or Docker Compose.
connections.mdConnect BigQuery, Snowflake, Postgres, DuckDB, and more.
materialization.mdPersist Malloy sources into tables — the publish-gate rules, on-demand + scheduled builds, the malloy-pub CLI, and standalone-vs-hosted behavior.
query-metadata.mdTag the statements Publisher sends so the backend's own reporting can attribute them — layers, the contract, and correlating an API call with a backend query. Off unless PUBLISHER_QUERY_METADATA=on.
ducklake.mdAttach a DuckLake catalog (read-only), understand catalog-format compatibility, and run offline / air-gapped.
persist-storage-tutorial.mdMaterialize a #@ persist source into a DuckLake storage destination and serve queries from it (the storage= tier + the PERSIST_STORAGE_MODE switch).
theming.mdCustomize colors, fonts, and light/dark mode.
configuration.mdLook up an env var / CLI flag, or tune the OOM guards.

Develop & contribute

DocRead it when you want to…
development.mdBuild and hack on Publisher from a clone.
agent-skills/Author or contribute the bundled agent skills.
../SECURITY.mdReport a security vulnerability, or check what's in scope.
malloyyo-dashboards-design.mdDesign doc: the grammar and architecture behind native dashboards/*.malloy support.

Full public docs

The complete user guide lives at docs.malloydata.dev/documentation/user_guides/publishing.