public/ directory alongside the models they draw from. No build step, no framework, no separate deployment: publishing the package publishes the app.
Because a data app ships with its package, it inherits everything the package guarantees:
- Governed — the app queries the package’s own semantic models, with all access rules applied to whoever is viewing it. Two viewers with different permissions see different data in the same app
- Versioned — the app is published, promoted, and archived together with the model version it was built against. App and model can never drift apart, so a model change never breaks a running app — the dashboard breakage that plagues traditional BI is eliminated by construction
- Ready everywhere — when a package containing a data app is added to a workspace, the app appears automatically in the workspace’s Data Apps section
Using Data Apps
Open a workspace that includes the package and its data apps are listed, ready to use — there’s nothing to deploy, configure, or sign in to. Credible serves the app to the signed-in user, so authentication is automatic and every query the app runs is governed as that user. Data apps can also hand off to the in-app agent: a well-built app passes the exact view and queries behind a number along with your question, so you can go from a dashboard tile to “why is this below target?” in one click — and the agent starts with the context instead of rediscovering it.How a Data App Works
A package becomes a data app by adding apublic/ directory of plain web files:
public/ is served to the browser. The models, data files, and manifest stay private — the app reaches them exclusively through the query API (Publisher.query(...)), which runs Malloy against the package’s models and applies every filter, access modifier, and authorize rule on the way. The app defines the presentation; the model stays the single source of truth for the numbers.
Building Data Apps
The fastest way is to ask the in-app agent: describe the charts, filters, and layout you want, and the agent generates the app into your draft package. Its open-source skills encode a production recipe — real field names read from the model (never guessed), every tile handling its own loading and error states, defensible numbers (missing data omitted rather than plotted as zero), and assumptions surfaced in the app itself as captions and footnotes rather than buried. With the developer tools, your coding agent builds to the same recipe, and you get a live authoring loop: run a local Malloy Publisher server and edits to yourpublic/ files reload the open page instantly, while model edits recompile the package. When it’s ready, publish the package — the app ships with it.
Data apps are how Credible expects curated dashboards and views to be delivered going forward — build a data app rather than a .malloynb notebook for new work. And like everything in the stack, they’re built on open source: the same app runs unchanged on a self-hosted Malloy Publisher.
See Also
- Analyze Data — Chat with your data in governed workspaces
- Build & Publish — Build models and data apps with the agent
- Publishing — How packages, versions, and serving work