Price terms as published
Each line is the vendor’s own wording, split from the price capture checked on 2026-09-29. Nothing here is rounded, converted or re-worded — the full sentences stay in the review below. Lines that carry only a price continue the plan named on the line above, in the vendor’s own order.
| # | Plan / term | Checked |
|---|---|---|
| 1 | Free (open source, MIT) | 2026-09-29 |
One-liner: Knap is a template language that turns JSON/CSV data into Markdown using variables, filters, and logic — with no eval and no arbitrary JavaScript execution.
Verified facts (checked 2026-09-29)
| Attribute | Value | Source |
|---|---|---|
| GitHub stars | 613 | obsidianmd/knap via GitHub API |
| License | MIT | GitHub API |
| Created | 2026-08-21 | GitHub API |
| Last push | 2026-09-15 | GitHub API |
| Maintainer | obsidianmd — the official Obsidian organization |
GitHub repo |
| Runtime | Node.js 20 or later (CLI); TypeScript library | README |
| Install | npm install knap |
README |
| Docs | knap.md (with online playground) | README |
Where it comes from
Knap is not a random side project. Per the repository README, it is the template language already powering two shipped Obsidian products — Obsidian Web Clipper and the Obsidian Importer plugin. The standalone package extracts that internal template system into a public CLI and library.
That matters because the engine is already exercised against real-world import and clipping workloads, rather than being a freshly published DSL looking for users.
How it works
Knap parses templates into an AST and interprets them. From the README: it renders “without eval or arbitrary JavaScript execution. Applications control the data and integrations available to templates.”
CLI example from the README:
npx knap render template.md --data data.json --output note.md
The CLI also supports inline templates, validation, batch rendering, CSV input, and offline language help. The library exposes createEngine and standardFilters, and supports custom filters, asynchronous variables, HTML filters, and execution limits.
Why it fits AI agent workflows
- Structured data → Markdown is a recurring agent task. Search results, scraped records, and API responses commonly arrive as JSON and need to become notes, briefs, or knowledge-base entries.
- No arbitrary code execution. Compared with handing templates to a full JavaScript runtime, a sandboxed AST interpreter reduces the blast radius when the data or template is untrusted.
- Syntax highlighting exists for
.knapand.knap.mdin VS Code/Cursor (VSIX from releases) and Sublime Text 4.
The caveats
- New and small. 613 stars and created in late August 2026 — the ecosystem, tutorials, and third-party examples are thin, and the API may still move.
- Narrow scope by design. It renders data into Markdown; it is not a general automation framework or a web scraper.
- Node 20+ required for the CLI, which may matter on older managed environments.
Who should use it
Obsidian users who want the same templating behavior outside the apps, and developers building pipelines that need a constrained data-to-Markdown renderer. Teams that specifically need untrusted-template safety should evaluate its execution-limit and filter controls rather than assuming the no-eval design alone covers every threat model.
Repository stats and feature claims verified against primary sources on 2026-09-29. This is a draft pending human editorial review.