Datanotes
The engine of your second brain: Markdown notes as database tables, for you and your AI agents.
A row is any note whose table property names a table; tables are defined in
Database/database.yaml. Every write is checked against its table, journaled and undoable.
Programs use its HTTP API or the datanotes/client library; agents use the separate MCP server
datanotes-mcp.
Documentation: datanotes.dev
Quick start
Requires Node.js 20 or newer. Start the engine on a vault:
npx -y datanotes serve --vault /path/to/vault
It serves the HTTP API on http://127.0.0.1:27150 (routes under /datanotes/*, plus the
Local-REST-API-style /vault/* and /search/simple/), with the owner's token in
<vault>/.datanotes/service.json. From code:
import { DatanotesClient } from "datanotes/client";
const db = new DatanotesClient({ url: "http://127.0.0.1:27150", token });
const { value } = await db.call("select_rows", { table: "book", where: { pages: { gt: 300 } } });
AI agents connect through datanotes-mcp, the MCP
server of Datanotes, a separate package built on this API.
Learn more
Security
See SECURITY.md: how to report a vulnerability, what each credential may do, and
which data leaves the machine (only what you turn on).
Contributing
See CONTRIBUTING.md.
License
Apache License 2.0: see LICENSE and NOTICE. Copyright 2026 Davide Fornelli.