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/실행 취소 패널을 만들 수 있습니다.
대표적인 사용 사례
- 코드, 문서, 앱 상태를 함께 배치 – 스크립트, 그 설계 문서, 그리고 그것이 조작하는 데이터베이스 행을 하나의 브랜치에 두어 리뷰를 쉽게 합니다.
- 고객별 저장소 – 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 기반 어시스턴트)가 생성한 파일과 데이터베이스 업데이트를 저장하고 버전 관리하는 데 사용할 수 있는 인프라로 자리매김하고 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트