config-driven dashboards for Obsidian
Your whole vault,
on one board.
A domain-agnostic dashboard framework for Obsidian: tables, kanban boards, heatmaps and
forms over the notes you already have, all from a single profile.json. Live,
trust-gated, and written so an LLM can build your dashboard for you.
# In Obsidian
Settings → Community plugins → Browse → "Pinax"
# or jump straight to the listing
obsidian://show-plugin?id=pinax why pinax
A framework, not an app
One JSON file is the dashboard
profile.json declares the layout (grid or tabs) and every pane. Edits
hot-reload without a rebuild, and the file is schema-validated, so a broken config tells
you what is wrong instead of rendering nothing.
Notes as records
11 built-in widgets: table, board, heatmap,
stat, form and friends read a folder or a tag set through
frontmatter, filtered by where clauses, with rolling-date tokens like
{{today-7d}}.
Live by default
Editing, creating, renaming or deleting a displayed note re-renders the affected panes,
debounced, without stealing your scroll position or focus. Panes fed by external data
can auto-refresh on their own refreshSec.
Trust gates, all OFF
Web embeds, command buttons and note writing are per-profile toggles that start disabled. An imported profile never inherits trust you granted another one, and every write shows an Undo notice. Command buttons copy, never execute.
LLM-buildable
The schema, the authoring guide and the bundled build-your-pinax command
exist so you can describe the dashboard you want to a model and paste back a working
profile. The bundled SRE, Helm and reading profiles are proof it generalises.
Typed companion API
Custom widgets come from companion plugins via window.pinax (apiVersion 1),
typed by a copyable pinax-api.d.ts that CI keeps in sync. Released versions
never execute code from inside the vault.
quick start
Pick a board, then make it yours
Install and pick a profile
# 1. install + enable, then run
Pinax: Open dashboard
# 2. first run offers the bundled profiles
sre · helm · reading
# 3. duplicate one in Settings to start your own
Profiles are materialized under the plugin folder as plain
profiles/<id>/profile.json and hot-reload on edit. The duplicate
starts with zero trust, like every profile.
Describe it, let a model build it
# hand your LLM the contract
profile.schema.json + AUTHORING.md
# or run the bundled command
/build-your-pinax The authoring guide is written for models as much as for people: paste it with a description of your vault and get back a validated profile, ready to drop in.
Nothing is trusted by default. A dashboard renders read-only until you flip the profile's trust toggles; web embeds, command buttons and note writing each ask separately, and imported profiles always start from zero.
profiles
A complete dashboard, in one screen of JSON
This is not an excerpt. It is a valid, complete profile: a kanban board over
tasks/, a writing-streak heatmap over journal/, and a capture
form that appends to today's note.
{
"name": "My board",
"schemaVersion": 1,
"layout": "grid",
"panes": [
{ "type": "board", "title": "Tasks", "source": { "folder": "tasks" }, "groupBy": "status" },
{ "type": "heatmap", "title": "Writing streak", "source": { "folder": "journal" } },
{ "type": "form", "title": "Quick capture", "target": { "note": "journal/{{today}}.md" },
"fields": [{ "name": "entry" }] }
]
} Profiles travel. Export any profile as a JSON bundle, import one from a paste or an https URL, or start from the community collection at pinax-profiles. Imported profiles always arrive with zero trust.
open source
Built a good board?
Pinax is MIT and built in the open. Profiles are the highest-value contribution: share the bundle that runs your day in pinax-profiles. And if pinax earns a pane in your vault, a star helps others find it.