opral/lix
Embeddable version control system for files and tables.
Lix – ファイルと SQL テーブルのバージョン管理
これは何か
- 通常のファイル群(テキスト、バイナリ、CAD、動画など)およびリレーショナルテーブルを、単一のバージョン管理されたリポジトリとして扱えるようにするライブラリです。
- 全体が単一の ACID OLTP データベース内に存在するため、ファイルと行の履歴を通常の SQL でクエリできます。
なぜ重要か
- 従来の VCS(Git、Mercurial)は生のバイト列しかバージョン管理しません。アプリが状態をデータベースに保存する場合、そのデータベースを別に保つか、ファイル全体を Git にダンプするかのどちらかになり、行レベルの変更のレビュー、マージ、ロールバックが苦痛になります。
- Lix はそのギャップを埋めます。1 つのブランチにコード変更と対応する行の更新を含めることができ、両方を差分・マージできます。
主な機能
| 機能 | 得られるもの |
|---|---|
| あらゆるファイル | テキスト、バイナリ、大容量メディア。プラグインにより Markdown、CSV などの構造化差分を提供。その他の形式はファイル全体の履歴にフォールバック。 |
| SQL テーブル | リポジトリ内でテーブルを定義。行はファイルと同じようにバージョン管理されます。 |
| データベースベース | すべてのデータが 1 つの ACID データベース内に存在。数百万行に対して SQL クエリを実行できます。 |
| リアルタイムコラボレーション | 複数のユーザーやエージェントが変更をリアルタイムで確認できます。 |
| 組み込み可能 | ライブラリとしてプロセス内で動作。ストレージバックエンド:インメモリ、ファイルシステム、ブラウザ OPFS、または S3。 |
| 計画中の権限 | ファイル/グループ単位の ACL を他のすべてと一緒に保存・バージョン管理。 |
使い方
- JavaScript SDK(
@lix-js/sdk)とストレージ実装(例:@lix-js/storage-filesystem)をインストールします。 - フォルダ(またはリモートサーバー)を指すリポジトリを開き、SQL 文の発行を開始します。
import { openLix } from "@lix-js/sdk";
import { FilesystemStorage } from "@lix-js/storage-filesystem";
const lix = await openLix({
storage: new FilesystemStorage({ path: "./repo" }),
});
await lix.execute(
"INSERT INTO lix_file (path, content) VALUES ($1, $2)",
["/notes/status.txt", new TextEncoder().encode("ready")]
);
- 変更は自動的にコミットされます。後で
lix_changeテーブルをクエリして、UI の差分/元に戻すパネルを構築できます。
典型的なユースケース
- コード、ドキュメント、アプリ状態を同じ場所に – スクリプト、その設計ドキュメント、それが操作するデータベース行を 1 つのブランチに保ち、レビューを容易にします。
- 顧客ごとのリポジトリ – SaaS 製品は各テナントにプライベートな Lix リポジトリを提供し、自動化、ドキュメント、ビジネスデータを保存。監査証跡とロールバックを内蔵。
- バージョン管理されたワークフロー – Lix を社内ツールに組み込み、自分のテーブルへのすべての書き込みを自動的にバージョン管理。追加のエンジニアリングなしで履歴、blame、ブランチングを実現。
ステータス
- プロジェクトは alpha 段階です。JavaScript/TypeScript と Rust の SDK が存在し、Python と Go は計画中です。
- LixRay というホステッドサービスが、Claude、OpenAI、Gemini などの LLM と統合するクラウドホスト型リポジトリを提供します。
さらに学ぶには
- JavaScript と Rust のクイックスタートガイド。
- 完全なドキュメントは https://lix.dev/docs にあります。
- コミュニティ Discord と GitHub リポジトリで、問題報告やコントリビューションができます。
Lix 自体は AI モデルではありませんが、AI エージェント(例:LLM 駆動のアシスタント)が生成したファイルやデータベース更新を保存・バージョン管理するために使用できるインフラストラクチャとして位置付けられています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト