Five files across four note types so every new Obsidian Base has something to display immediately when the vault is opened: - daily/2026-04-19.md — today's journal entry, covering the PKB setup work. Wikilinks to the permanent note, project brief, and reading note below. - notes/pkb-as-lens-substrate.md — the load-bearing design note capturing the PKB-as-substrate / Council-as-lens inversion that drove this whole extension. - projects/mql/brief.md and log.md — active project tracking the companion Markdown-Query-Language CLI (sibling repo). First log entry records the Go-over-Rust decision and v0.1 scope. - reading/audiopen-integration-research.md — marked done; captures the two-clouds distinction (AudioPen's processing cloud unavoidable; Obsidian Sync optional) and names Tailscale Funnel as the chosen webhook-exposure path. - inbox/2026-04-19-1900_test-ingestion.md — hand-authored fleeting note (source: manual, distinguishable from AudioPen drops) so /triage-inbox has something to exercise on before the real voice pipeline is running. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
41 lines
1.7 KiB
Markdown
41 lines
1.7 KiB
Markdown
---
|
|
type: project
|
|
title: "mql — Markdown Query Language CLI"
|
|
status: active
|
|
started: 2026-04-19
|
|
tags: [tooling, go, pkb]
|
|
---
|
|
|
|
# mql — Markdown Query Language CLI
|
|
|
|
## Why
|
|
|
|
The Council's members currently reach for Grep + Read to find patterns across `daily/`, `notes/`, `projects/`, `reading/`. Grep is stringly-typed; it doesn't understand YAML frontmatter, wikilinks, tags, or Obsidian Bases. As the PKB grows, "find all sessions where winner = X" or "list permanent notes tagged with Y linked to project Z" will be load-bearing queries, and a proper query tool pays off.
|
|
|
|
`mql` is a Go CLI that indexes and queries any repo with Markdown + YAML frontmatter + wikilinks + tags + Obsidian Bases, exposing a Dataview-compatible query language from outside Obsidian.
|
|
|
|
## Outcome definition
|
|
|
|
v0.1 shipped and installed in `~/.local/bin/mql`:
|
|
- Cold-scan builds a SQLite index under `~/.cache/mql/<vault-hash>.sqlite`.
|
|
- `mql 'LIST FROM "sessions" WHERE winner = "vaasa"'` returns JSON.
|
|
- `mql base <name>` executes an Obsidian `.base` file as a query.
|
|
- Researcher and `/ask-*`-invoked members can shell out to `mql` instead of grep-walking directories.
|
|
|
|
## Constraints
|
|
|
|
- Go (single static binary across Linux/macOS/Windows).
|
|
- Pure-Go SQLite (modernc.org/sqlite) — no cgo, no C toolchain at build time.
|
|
- MIT or Apache-2.0 license (open-source candidate).
|
|
- Dataview-compatible subset; `GROUP BY`, `FLATTEN`, `TASK`/`CALENDAR`, inline fields in prose, and `dataviewjs` are explicitly out for v0.1.
|
|
|
|
## Log
|
|
|
|
See [[log]].
|
|
|
|
## Links
|
|
|
|
- Sibling repo: `~/projects/mql/` (separate from this repo).
|
|
- Design: `~/projects/mql/docs/structure/initial-plan.md`.
|
|
- First customer: this vault. `/var/mnt/data/projects/council/` is the v0.1 integration-test fixture.
|