The Publisher Console

August 21, 2026 · View on GitHub

What this is: a tour of the Publisher Console, the server's built-in web UI — how the core constructs (environments, packages, models, sources, views, notebooks, data apps) surface in it, and how to navigate them. Zero code required. It's served at http://localhost:4000 whenever the server is running.

The Console is the default, no-code way to explore what a Publisher deployment serves. It's built from the SDK but you don't need to know that — just open it and browse. (The Console is Publisher's own UI. It is not an HTML data app, which is a custom page you author inside a package; see choosing-a-surface.md for how the three in-package surfaces relate.)

The resource hierarchy

Everything in Publisher nests the same way, and the Console mirrors it:

Environment            e.g. "examples"
└── Package            e.g. "storefront"  (a versioned bundle of models + data)
    ├── Model          a .malloy file: sources, views, measures, dimensions
    │   ├── Source     a queryable entity (a table or a join graph)
    │   └── View       a saved, reusable query on a source
    ├── Notebook       a .malloynb file: markdown + live query cells
    ├── Dashboard      a dashboards/*.malloy file: filter controls + a tiled grid
    └── Data Apps      an in-package HTML data app (the package's public/ dir)

The REST and MCP APIs expose this exact hierarchy; the Console is a view onto it.

  • Left sidebarHome, then an Environments list, and a Settings section (Visualization theme). Pick an environment to see its packages; pick a package to see its models, notebooks, dashboards, and data apps.
  • Breadcrumbs across the top track where you are: environment › package › file.
  • Theme toggle (top-right) switches light/dark when the deployment allows it (see theming.md).
  • Footer links jump to the Malloy docs, these Publisher docs, and the live Publisher API explorer (see api-overview.md).

The Publisher Console showing the storefront package under the examples environment

Two URL shapes

You'll see two path styles, and they're not interchangeable:

  • Console routes are short — /{environment}/{package}/{file}, e.g. http://localhost:4000/examples/storefront/storefront.malloynb. Use these to link to something inside the Console (a notebook, a package).
  • Resource paths are fully qualified — /environments/{environment}/packages/{package}/.... This is the canonical form the REST and MCP APIs use, and it's also how an in-package HTML data app is served, e.g. http://localhost:4000/environments/examples/packages/html-data-app/.

When in doubt, the fully-qualified /environments/.../packages/... form always works; the short form is a Console convenience.

What you can do in the Console

  • Browse a package — one section each for Dashboards, Notebooks, Data Apps, Semantic Models, Package Data and Materializations, in that order, plus the package's README.malloynb rendered underneath. Dashboards and Data Apps are hidden when the package has none. Every kind has its own icon and its own color, so a row's type reads before its name does. Notebooks and dashboards are listed by title, with a notebook's path beside it and a dashboard's slug beside it; a notebook's title comes from its opening markdown heading unless a ## title="…" or a #" doc comment overrides it.
  • Explore, no code — open a source in the Explorer, the visual query builder; every action generates valid Malloy, and you can view the Malloy and SQL behind any result.
  • Read a notebook — a .malloynb renders its markdown and runs its query cells inline, including # dashboard views (KPI tiles + nested charts). Try http://localhost:4000/examples/storefront/storefront.malloynb.

The storefront business-overview dashboard rendered inline in a notebook

  • Tune parameters live — when a model declares givens, the notebook shows a Parameters panel above the cells; change a control and every cell re-runs. Try http://localhost:4000/examples/governed-analytics/orders.malloynb.

A notebook's Parameters panel, generated automatically from the model's givens

  • Open a data app — a package's HTML data apps render inside the Console (and can be opened standalone). Try http://localhost:4000/environments/examples/packages/html-data-app/.
  • Edit the theme — operators can iterate colors/fonts live at /settings/theme (see theming.md).

Where to go next