---
title: "Lix: 바이너리 파일도 의미 단위로 추적하는 버전 관리 시스템"
published: 2026-01-21T23:55:06.000Z
canonical: https://jeff.news/article/1067
---
# Lix: 바이너리 파일도 의미 단위로 추적하는 버전 관리 시스템

라이브러리로 임포트하는 임베더블 버전 관리 시스템. 라인 단위가 아닌 시맨틱 단위 변경 추적, SQL 기반 쿼리, 플러그인으로 바이너리 포맷 지원. NPM 주간 9만 다운로드

## 핵심 컨셉

- Git을 대체하는 게 아니라, 라이브러리로 임포트해서 쓰는 임베더블 버전 관리 시스템임. 브랜칭, diff, 롤백을 기존 스택에 바로 붙일 수 있음
- 라인 단위가 아니라 **의미(semantic) 단위**로 변경을 추적함. 예를 들어 JSON에서 `theme`이 `light`에서 `dark`로 바뀌면 Git은 전체 줄을 diff로 보여주지만, Lix는 `property theme: - light + dark`만 보여줌
- 엑셀 같은 바이너리 파일도 플러그인만 있으면 셀 단위 diff가 가능함. Git의 "Binary files differ"와는 차원이 다름

## 아키텍처

- "변경 우선(change-first)" 설계로, 스냅샷이 아닌 시맨틱 변경 사항을 쿼리 가능한 데이터로 저장함
- 감사 추적, 롤백, blame이 전부 SQL 쿼리로 해결됨: `SELECT * FROM state_history WHERE entity_id = 'settings.theme'`
- SQLite, Postgres 등 기존 SQL DB를 저장소로 쓰기 때문에 ACID, 내구성이 DB 엔진에서 그냥 따라옴. 별도 인프라 불필요

## 플러그인과 현황

- 현재 Stable: JSON, CSV, ProseMirror / Beta: Markdown
- 직접 플러그인을 만들려면 기존 파서를 가져와서 Lix의 entity/change 스키마에 매핑하면 됨
- NPM 주간 다운로드 9만 이상으로, inlang(오픈소스 로컬라이제이션 인프라) 개발 과정에서 탄생함

## 향후 계획

- 다음 버전은 순수 "전처리기(preprocessor)" 기반으로 리팩토링 예정
- SQLite뿐 아니라 Postgres, Turso, MySQL 지원 + Python, Rust, Go SDK 제공 계획 (RFC 001, 002)

> [!NOTE]
> AI 에이전트의 변경 사항을 사람이 리뷰하고 머지하는 "human-in-the-loop" 워크플로우를 명시적으로 지원함. 에이전트가 격리된 버전에서 변경을 제안하고, 사람이 승인하는 구조

## 핵심 포인트

- Git 대체가 아닌 라이브러리로 임포트하는 임베더블 VCS
- 시맨틱 단위 변경 추적으로 JSON property, Excel 셀 단위 diff 가능
- SQL DB(SQLite, Postgres)를 저장소로 사용해 ACID/쿼리 지원
- JSON, CSV, Markdown, ProseMirror 플러그인 제공
- AI 에이전트의 human-in-the-loop 워크플로우 명시적 지원
- NPM 주간 다운로드 9만+, inlang에서 파생

## 인사이트

Git이 못하는 바이너리 시맨틱 diff를 플러그인 구조로 해결하고, SQL 쿼리로 버전 히스토리를 다루는 접근이 신선함
