opral/lix

Embeddable version control system for files and tables.

Lix – 파일과 SQL 테이블을 위한 버전 관리

이것은 무엇인가

  • 일반 파일 모음(텍스트, 바이너리, CAD, 비디오 등)과 관계형 테이블을 하나의 버전 관리 저장소로 취급할 수 있게 해주는 라이브러리입니다.
  • 전체가 단일 ACID OLTP 데이터베이스 안에 존재하므로, 파일과 행의 이력을 일반 SQL로 조회할 수 있습니다.

왜 중요한가

  • 전통적인 VCS(Git, Mercurial)는 원시 바이트만 버전 관리합니다. 앱이 상태를 데이터베이스에 저장할 때, 그 데이터베이스를 별도로 유지하거나 전체 파일을 Git에 덤프해야 하므로 행 수준 변경의 리뷰, 병합, 롤백이 고통스럽습니다.
  • Lix는 그 간극을 메웁니다. 하나의 브랜치에 코드 변경과 그에 대응하는 행 업데이트를 함께 담을 수 있고, 둘 다 diff/병합할 수 있습니다.

주요 기능

기능 얻을 수 있는 것
모든 파일 텍스트, 바이너리, 대용량 미디어. 플러그인이 Markdown, CSV 등에 구조화된 diff를 제공하며, 다른 형식은 전체 파일 이력으로 대체됩니다.
SQL 테이블 저장소에서 테이블을 정의하고, 행은 파일과 똑같이 버전 관리됩니다.
데이터베이스 기반 모든 데이터가 하나의 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 diff/실행 취소 패널을 만들 수 있습니다.

대표적인 사용 사례

  1. 코드, 문서, 앱 상태를 함께 배치 – 스크립트, 그 설계 문서, 그리고 그것이 조작하는 데이터베이스 행을 하나의 브랜치에 두어 리뷰를 쉽게 합니다.
  2. 고객별 저장소 – SaaS 제품이 각 테넌트에 비공개 Lix 저장소를 제공하여 자동화, 문서, 비즈니스 데이터를 저장하고, 감사 추적과 롤백을 내장합니다.
  3. 버전 관리되는 워크플로 – 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 기반 어시스턴트)가 생성한 파일과 데이터베이스 업데이트를 저장하고 버전 관리하는 데 사용할 수 있는 인프라로 자리매김하고 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트