Skip to main content
Write a dataview code block in a note, as you would in Obsidian, and Maestro renders its result instead of the code. A People note that lists every meeting linking to it shows that list as a table in File Preview, and it stays current as you add meetings. Dataview is an Encore Feature, off by default. Maestro carries the query engine of the Obsidian Dataview plugin (version 0.5.68) itself, so queries mean the same thing they mean in Obsidian. You do not need Obsidian installed.

What renders

Queries support FROM (tags, folders, links, and and / or / - combinations), WHERE, SORT, GROUP BY, FLATTEN, LIMIT, and WITHOUT ID, plus Dataview’s full function library. For example:
The index reads, for every note: frontmatter, inline fields (Key:: value, [key:: value], (key:: value)), tags, wiki links and markdown links in both directions, aliases, tasks and list items, and the implicit file.* fields (file.name, file.cday, file.outlinks, file.inlinks, file.tasks, and the rest). Results behave like the rest of the preview:
  • Links open the note they name, the same as clicking a [[wiki link]].
  • Task checkboxes in a TASK result rewrite that task’s line in the note it came from.
  • Live refresh. Edit, add, or delete a note and every block whose result could change runs again.
  • Errors show inside the block with Dataview’s own message. A broken query never breaks the rest of the preview.
Dataview renders in File Preview (both the rich and the fast renderer) and in the Auto Run document preview. Agent chat messages never run queries: a query an agent shows you stays code.

Turning it on

  1. Open Settings > Plugins, select Dataview, and turn it on (or run maestro-cli encore enable dataview). dataview blocks and inline = spans render from now on.
  2. To run DataviewJS too, turn on Run DataviewJS in the Dataview tile’s settings. It is off by default.
  3. Trust a vault before its scripts run. Open a note with a dataviewjs block: it shows the script and two buttons.
    • Run once runs that block for this app session. Editing the script asks again.
    • Always trust this vault adds the vault to Trusted Vaults, and every DataviewJS block in it runs from then on.
Remove a vault from Trusted Vaults in the same settings, or with maestro-cli dataview untrust. Turning the feature off stops every index and watcher, and Dataview blocks render as plain code again.

How the vault is chosen

A query runs against the vault the note sits in:
  • The vault root is the nearest folder above the note that holds an .obsidian/ folder.
  • With no .obsidian/ folder above it, the root is the working directory of the agent that owns the note.
Maestro indexes every markdown file under the root, except files in dot folders (.git, .obsidian, and the like) and node_modules. Notes larger than 2 MB keep their file.* fields but are not read. The first index of a vault takes a moment; after that Maestro keeps a cache on disk, so reopening a vault shows results at once and catches up in the background. Agents on an SSH remote work too. Their vault is indexed over SSH and checked for changes every 30 seconds instead of being watched. An index nobody has used for 10 minutes closes.

DataviewJS

DataviewJS blocks are JavaScript in your notes, with Dataview’s dv object in scope. Maestro supports the documented dv API: page queries (dv.pages, dv.page, dv.current), rendering (dv.table, dv.list, dv.taskList, dv.header, dv.paragraph, dv.el, and the markdown* variants), DQL from a script (dv.query, dv.execute, dv.evaluate), file reads (dv.io.load, dv.io.csv), dv.view for a view.js (and optional view.css) stored in the vault, and the utilities (dv.date, dv.duration, dv.luxon, dv.array, and so on). A script that takes longer than 5 seconds is stopped, and its block shows a timeout error. The other blocks in the note keep running.

What is not supported

Security model

DQL queries only read your notes, so they run whenever the feature is on. DataviewJS runs code someone wrote into a note, possibly a note you downloaded or cloned. Maestro treats it as untrusted:
  • Off until you say so. The Run DataviewJS switch is off by default, and a vault must be trusted (or the block run once) before any script in it runs.
  • Isolated. Each script runs in a separate sandboxed process with no Node.js, no access to Maestro, no network, and no way to open windows or navigate.
  • Read-only, inside the vault. A script can read files inside its own vault and nothing outside it. It cannot write any file. The only actions it can ask for are opening a link and ticking a task, the same things you can click in the result.
  • Time-limited. A script that runs longer than 5 seconds is killed.
Trust is per vault, so trusting your own vault does not let a cloned repository’s notes run.

CLI

Every result the preview shows is available from maestro-cli, with the app running. See the CLI reference for every flag.
The CLI never runs DataviewJS. dataview query on a dataviewjs block prints “DataviewJS renders in the desktop app only” and exits with code 2.