A coding agent reshapes your data model as fast as it changes the UI — no migrations — while the site you ship keeps calling the same unchanging endpoints. Here's the whole idea in one demo:
Add a field, split a type, link two things — every change normally means rewriting a database schema and migrating every existing row. So the design churn that makes building fun becomes the thing that slows you down.
MorphDB makes a schema edit free and instant, and keeps the HTTP API frozen while the shape underneath changes. The agent stops fighting the database and just builds.
Three nested ideas. That's the whole data model.
MorphDB cleanly separates who changes the shape from who moves the data — and that separation is why the API can stay frozen.
Call tools to add a field, declare a relation, retype something. Instant, O(1), no rows rewritten.
Plain fetch against generic object endpoints. These URLs never change when the schema morphs.
How can the shape change under live data without breaking it? Every object is stored as raw JSON and projected through the current schema on every read.
Add a field → old rows simply read it as empty (or its default). Drop a field → it vanishes from the view, the bytes stay put. Retype a field → a value that no longer fits reads as unset until rewritten. A schema edit is one tiny metadata write — zero row rewrites, whether you have ten objects or ten million.
A relation is declared on one side; the inverse appears automatically on the other. Under the hood each link is a single row in an indexed edge table — so you can traverse both ways in one read, and filter a list by it like an ORM foreign key.
Claude Code talks to MorphDB's tools through a tiny server, morphdb mcp. It's a stdio server: Claude launches it as a child process and exchanges newline-delimited JSON-RPC over its stdin/stdout — no network, no port. You never run or stop it; Claude owns its whole lifecycle.
MorphDB is deliberately tiny and dependency-free, so a coding agent can install and reason about all of it.
⊘ 0 dependencies — just Python's http.server + sqlite3