non-convex-labs / laravel-commonplace
A personal markdown knowledge vault for Laravel — wikilinks, version history, semantic search, and MCP for Claude Code.
Package info
github.com/non-convex-labs/laravel-commonplace
pkg:composer/non-convex-labs/laravel-commonplace
Requires
- php: ^8.4
- elgigi/commonmark-emoji: ^2.0
- illuminate/contracts: ^13.0
- laravel/mcp: ^0.7.0
- league/commonmark: ^2.8
- spatie/laravel-package-tools: ^1.16
- symfony/yaml: ^8.0
- tempest/highlight: ^2.17
Requires (Dev)
- aws/aws-sdk-php: ^3.300
- larastan/larastan: ^3.9
- laravel/pint: ^1.18
- orchestra/testbench: ^11.0
- phpunit/phpunit: ^12.0
Suggests
- aws/aws-sdk-php: Required to use the Bedrock embedding driver (Amazon Titan Text Embeddings v2).
- laravel/sanctum: Required by the default `auth:sanctum` middleware on the MCP route group. Install if you keep the default; otherwise override COMMONPLACE_MCP_MIDDLEWARE.
This package is auto-updated.
Last update: 2026-07-05 06:03:58 UTC
README
A database-backed personal knowledge vault for Laravel. You get wikilinks, version history, semantic search, and an MCP server so Claude Code, Cursor, and Zed can read and write your notes. Same database as your app, same auth, same backup.
Quick look
Notes are Eloquent models. The Commonplace facade owns the writes, the wikilink graph, and search:
use NonConvexLabs\Commonplace\Facades\Commonplace; Commonplace::createNote( path: 'meetings/q2-planning', content: 'Discussed [[roadmap-2026]] and [[hiring-plan]].', tags: ['meeting'], visibility: 'private', owner: $user, ); Commonplace::getBacklinks('roadmap-2026', $user); Commonplace::semanticSearch('q2 planning topics', $user);
Set COMMONPLACE_MCP_ENABLED=true and the same vault is reachable to any MCP-compatible AI client, scoped to the authenticated user.
What's in a name?
A commonplace book is a personal notebook for copying down quotes, ideas, observations, and references so you can find them again later. Marcus Aurelius kept one. So did Locke, Jefferson, and a long list of readers and thinkers who needed somewhere to put the bits worth keeping. This package is the same idea, scoped to a single user inside your Laravel app and backed by your database instead of a leather-bound notebook.
For more on the practice itself, see Journal like a Renaissance Philosopher by ParkNotes (Parker Settecase).
Install
composer require non-convex-labs/laravel-commonplace
Full setup lives in docs/. That covers migrations, trait wiring, embedding driver, and MCP transport.
Why a database vault, not a folder of .md files?
Most knowledge-vault tools are standalone apps backed by a folder of files. Sync, plugins, and auth get bolted on after the fact. This package flips that around. Notes are rows in your existing Laravel database. They're queryable by SQL, transactional, joinable, and gated by whichever guard your app already runs. You don't host a second silo, you don't run a file watcher, you don't manage separate API keys, and you don't hit "vault opened in another window" races.
See docs/design.md for the full comparison against Obsidian, Logseq, Foam, and Dendron, plus the tradeoffs that come with it.
Status
Pre-1.0. APIs may shift between minor versions until 1.0 ships.
License
MIT. See LICENSE.