Note
Lix is in alpha · Follow progress to v1.0 →
Lix is an embeddable version control system that can be imported as a library. Use lix, for example, to enable human-in-the-loop workflows for AI agents like diffs and reviews.
- It's just a library — Lix is a library you import. Get branching, diff, rollback in your existing stack
- Tracks semantic changes — diffs, blame, and history are queryable via SQL
- Approval workflows for agents — agents propose changes in isolated versions, humans review and merge
How does Lix compare to Git? →
JavaScript ·
Python ·
Rust ·
Go
npm install @lix-js/sdkimport { openLix, selectWorkingDiff } from "@lix-js/sdk";
const lix = await openLix({
environment: new InMemorySQLite()
});
await lix.db.insertInto("file").values({ path: "/hello.txt", data: ... }).execute();
const diff = await selectWorkingDiff({ lix }).selectAll().execute();Unlike Git's line-based diffs, Lix understands file structure through plugins. Lix sees price: 10 → 12 or cell B4: pending → shipped, not "line 4 changed" or "binary files differ".
Before:
{"theme":"light","notifications":true,"language":"en"}After:
{"theme":"dark","notifications":true,"language":"en"}Git sees:
-{"theme":"light","notifications":true,"language":"en"}
+{"theme":"dark","notifications":true,"language":"en"}Lix sees:
property theme:
- light
+ darkThe same approach works for binary formats. With an XLSX plugin, Lix shows cell-level changes:
Before:
| order_id | product | status |
| -------- | -------- | -------- |
| 1001 | Widget A | shipped |
| 1002 | Widget B | pending |After:
| order_id | product | status |
| -------- | -------- | -------- |
| 1001 | Widget A | shipped |
| 1002 | Widget B | shipped |Git sees:
-Binary files differLix sees:
order_id 1002 status:
- pending
+ shippedLix uses SQL databases as query engine and persistence layer. Virtual tables like file and file_history are exposed on top:
SELECT * FROM file_history
WHERE path = '/orders.xlsx'
ORDER BY created_at DESC;When a file is written, a plugin parses it and detects entity-level changes. These changes (deltas) are stored in the database, enabling branching, merging, and audit trails.
┌─────────────────────────────────────────────────┐
│ Lix │
│ │
│ ┌────────────┐ ┌──────────┐ ┌─────────┐ ┌─────┐ │
│ │ Filesystem │ │ Branches │ │ History │ │ ... │ │
│ └────────────┘ └──────────┘ └─────────┘ └─────┘ │
└────────────────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ SQL database │
│ (SQLite, Postgres, etc.) │
└─────────────────────────────────────────────────┘
Read more about Lix architecture →
- Getting Started Guide - Build your first app with Lix
- Documentation - Full API reference and guides
- Discord - Get help and join the community
- GitHub - Report issues and contribute