Local-first knowledge base with bidirectional Markdown sync — edit in any coding editor, query via CLI and MCP, share with AI agents.
Features • Getting Started • How it works • Working with Binder • Roadmap
Warning
This project is currently in early development.
Internal data structures, configuration formats, and APIs are subject to breaking changes.
Data loss is possible. Do not use for critical data without independent backups.
- Templated notes: tasks, decisions, contacts, meeting notes. Any collection where every file follows the same shape benefits from schema validation, autocomplete, and queryability.
- Embedded views: write an entity once and have it appear in multiple documents. Views pull entity data into milestone pages, project overviews, and weekly summaries automatically.
- Human-agent collaboration: Markdown keeps things readable for people. CLI & MCP give agents a structured interface to the same structured data. Agents can write unexpected or incorrect data. Binder records every agent action with its source: audit what was written, undo any mistake, replay any past state.
- Scripting and automation: query structured data via CLI or API without parsing Markdown. Changes write back to files automatically. Binder is the storage layer your tooling has been missing.
- Persistent agent memory: agents forget between sessions. Binder gives them typed, queryable memory that persists. Preferences, decisions, and indexed context stay structured, not buried in a chat log.
1. Install Binder
npm install -g @binder.do/cliInstall with Bun
bun install -g @binder.do/cli2. Set up a workspace
binder initThe setup wizard will prompt you to pick a blueprint: a starter schema for common use cases like project management or personal notes.
3. Editor extension
Adds autocomplete for field names and valid values, inline validation, and syncs file edits back to the database on save.
- VS Code: install the Binder extension. Activates automatically in any Binder workspace.
WebStorm / IntelliJ
Install the LSP4IJ plugin, then add a new language server under Settings → Languages & Frameworks → Language Servers:
- Command:
binder lsp - File patterns:
*.md,*.yaml
Neovim
require('lspconfig').configs.binder = {
default_config = {
cmd = { 'binder', 'lsp' },
filetypes = { 'markdown', 'yaml' },
root_dir = require('lspconfig.util').root_pattern('.binder'),
},
}
require('lspconfig').binder.setup({})Binder stores your data as a graph of entities: each one a flexible collection of field-value pairs classified by a type like Task, Decision, or Contact. Fields are defined once and reused across types. References link entities directly, forming the graph. Types and fields are defined in .binder/types.yaml:
items:
- key: Task
fields:
- title: { required: true }
- status: { only: [pending, active, complete] }
- priority
- partOf: { only: [Milestone] }
- requires: { only: [Task] }Editors, scripts, and agents all write to the same data. When something goes wrong, you need to know what changed and undo it. Binder records every change as an immutable transaction, attributed to its source. Full history, undo and redo, replay to any past state.
Markdown files are a view over this graph. Navigation rules define where each entity lives on disk. Change a field value and Binder moves the file automatically:
items:
- where: { type: Task, status: { op: in, value: [pending, active] } }
path: tasks/{priority} {key}
- where: { type: Task, status: complete }
path: archive/tasks/{key}The same knowledge graph is accessible through three interfaces. Use whichever fits the task.
Open any Markdown file in your coding editor to read, adjust, and review. Binder's LSP provides validation, autocomplete, and navigation across all entity files.
Install the VS Code extension to get started — or see Getting Started for WebStorm/IntelliJ and Neovim setup.
For autonomous work: querying context, capturing decisions, writing new entities. Agents can use the CLI directly or connect via MCP for a typed read/write API.
Add to .mcp.json to enable MCP:
{
"mcpServers": {
"binder": {
"type": "stdio",
"command": "binder",
"args": ["mcp"]
}
}
}Skills load Binder's CLI and data model into an agent's context, so it can query, create, and update records without extra instructions in every prompt.
npx skills add mpazik/binderFor pipelines, batch operations, and reports. Query, create, and update records without parsing Markdown. Changes write back to files automatically.
$ binder search type=Task status=active -f "title,status,priority,partOf(title,status)"items:
- title: Add dark mode support
status: active
priority: p2
partOf:
title: MVP Release
status: activePipe to any tool:
$ binder search type=Task status=active -q | jq '.items[] | .key + ": " + .title'
"setup-auth: Set up authentication"
"fix-layout-bug: Fix layout orientation bug"Create and update without opening a file:
$ binder create Task dark-mode title="Add dark mode support" status=active priority=p2 partOf=mvp-release
$ binder update dark-mode status=complete- More blueprints and examples
- HTTP API
- TypeScript library
- Hooks
- Full-text and semantic search
- Transaction log compaction
- Cross-device synchronisation
- E2E encrypted backup
- Encrypted fields
- Web / Mobile UI
Binder is early-stage and actively shaped by feedback. Found a bug or have an idea? Open an issue. All input welcome.





