What is Lix?

Lix gives your product a repository: files, SQL, and version control in one place. You embed it in your product.

Agents and tools read and write normal files. Your product queries and updates SQL rows. Both work on the same repository. Lix versions everything they write, with branches, history, review, rollback, and merge.

Unlike Git, Lix tracks the rows inside files, not lines of text. See How Lix compares to Git.

Lix combines a filesystem, a database, and version control

Use cases

Safe repositories for agents

Give each agent task its own branch. The agent can edit files and SQL rows without changing the main branch. Preview the result, then merge or discard it.

An agent works on its own branch while main stays stable; the branch is merged or discarded

See Lix for AI Agents.

Sync files

Sync the files that coding agents and applications work on, between machines and with a server.

Client A and client B each hold the same project files on their own filesystem and synchronize them with a Lix server
import { openLix } from "@lix-js/sdk";
import { FilesystemStorage } from "@lix-js/storage-filesystem";

// ./project stays a normal directory. Lix syncs it through the server.
const lix = await openLix({
  storage: new FilesystemStorage({ path: "./project" }),
  server: {
    mode: "sync",
    url: "https://lixray.com/lix/01936f4e-7b6c-7c3d-8f9a-123456789abc",
  },
});

See Collaboration and Sync.

File-based apps with SQL and version control

Build editors, knowledge bases, document workflows, and other file-based apps. Existing tools keep using files while your app uses SQL for queries and transactions. Lix versions everything both sides write.

Your app uses SQL and existing tools use files; both work on the same Lix repository

Files become queryable rows

File plugins map parts of a file to rows. A row can represent a Markdown block, CSV record, spreadsheet cell, JSON property, or document clause.

A plugin maps /orders.csv to SQL rows with row, field, and value columns

Apps read and write these rows with SQL. Lix records their history. With FilesystemStorage, it also writes changes back to normal files on disk.

Diffs are row-level: review the clause, cell, or row that changed, not lines of text. See Diffs.

Pluggable storage

Run Lix in memory, on the local filesystem, or against a server backed by S3. See Persistence and Storage.

Lix runs in your app on a storage adapter: in memory, local filesystem, or S3 bucket

Local, remote, and sync

Lix supports local repositories, direct remote clients, and synchronized local replicas with the same API. See Persistence and Storage for setup examples.

Clients can execute directly on a server or use a synchronized local replica. Both modes use the same files, SQL, and branches. Clients on the same server see each other's changes through lix.observe(). See Collaboration and Sync.

Permissions (planned)

Permissions will live inside the repository: per file, per group, and versioned like any other change. A policy change can then be proposed, reviewed, and merged on a branch.

Next