Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lain

Lain

Latest release Windows only MIT License

⬇️ 설치 파일 다운로드

개발자를 위한 오케스트레이터입니다 — 많은 프로젝트를 관리하기 위해 만들었습니다. Windows 데스크톱 앱(Electron + Claude Agent SDK)입니다.

A local orchestrator where a manager agent ("Lain") directs Claude Code workers ("Navi") across many projects — each Navi runs in its own isolated git worktree, and Lain plans, dispatches, reviews, and merges their work from one screen. Lain also learns its user over time: lessons, a user profile, and a customizable persona.

🇰🇷 한국어 전용 — Lain의 대화·UI·문서는 한국어 기준으로 만들어졌습니다. (Korean-only for now. Read this in English)

Lain이 하는 일

  • 대화 — 토큰 스트리밍과 빠른 대화 레인으로 사람과 말하듯 응답합니다. 앱을 껐다 켜도 종료 전 맥락을 기억하고 브리핑합니다
  • 코딩 작업 지휘 — 채팅으로 지시하면 프로젝트별 워커(Navi, Claude Code)가 격리된 git worktree에서 작업 → 검증 → 결재(merge/폐기)까지 진행합니다. 여러 프로젝트를 동시에 운용할 수 있습니다
  • 학습(길들이기) — 대화·작업에서 학습을 자동 추출해 다음 판단에 반영하고, 사용자에 대한 사실(선호·습관·수준)을 프로필로 축적합니다. 쓸수록 내 방식에 맞춰집니다
  • 유저 감시 — (opt-in) 터미널·에디터·개발 브라우저 탭 등 개발 화면일 때만 지켜보고, 에러·빌드 실패처럼 진짜 도움이 될 때만 우하단에 잠깐 떠서 조언합니다. 그 외 화면은 캡처하지 않고, 대부분은 침묵합니다
  • 음성 — TTS 3종(Edge/Supertonic/GPT-SoVITS)과 디스코드 음성통화를 지원합니다
  • 모바일 — 텔레그램으로 어디서든 대화·작업 지시·승인·현황 확인이 가능합니다
  • 안전장치 — 위험 명령 승인 큐, 시크릿 파일 접근 차단, autonomous 모드 spec-gaming 방어에 더해, 자율로 통과된 결정도 전부 기록되어 승인함 '사후 검토' 탭에서 확인할 수 있습니다. 작업별 토큰 예산으로 폭주도 막습니다

빠른 시작

전제조건

  1. Windows (현재 Windows 전용 — macOS/Linux 미지원)
  2. Claude Code 로그인 — Lain의 두뇌는 Claude입니다. 터미널에서 claude를 실행해 로그인되어 있어야 합니다(Claude 구독 또는 API 키). 로그인이 안 되어 있으면 Lain이 응답 대신 🔑 인증 안내를 띄웁니다.

설치

방법 A — 설치 파일(권장): Releases에서 Lain Setup x.y.z.exe 다운로드 후 실행. 이후 새 버전은 앱이 알아서 받아 갱신을 제안합니다(electron-updater).

방법 B — 소스 빌드: Node.js 20+ (LTS 20/22 권장), Git 2.x+ 필요

git clone https://github.com/bestcow/Lain.git
cd Lain
npm install
npm run dev        # 개발 실행
npm run dist       # 설치본 생성 (dist\Lain Setup *.exe)

디스코드 음성용 네이티브 opus는 선택 사항이라, 빌드 도구가 없어도 npm install은 정상 완료됩니다(순수 JS opusscript로 자동 대체).

첫 5분

  1. 실행하면 시작 안내(1회)와 함께 Lain이 인사합니다 — 그냥 대화부터 해보세요.
  2. 등록된 프로젝트가 없으면 Lain이 먼저 프로젝트 폴더 위치를 물어봅니다 — 채팅으로 경로만 알려주면 그 자리에서 등록·스캔됩니다. 수동으로 하려면 프로젝츠 창에서 폴더를 추가하세요. (환경변수 자동 스캔 루트는 아래 설정 참고)
  3. 등록된 프로젝트에 채팅으로 작업을 시켜보세요 — "○○ 프로젝트에 ~~ 기능 추가해줘".
  4. 환경설정(⚙)에서 호칭·모델·텔레그램 등을 취향대로 바꾸세요.

길들이기 (개인화)

Lain은 쓰는 사람에 맞춰 자라는 것을 전제로 설계되었습니다. 개인화 데이터는 전부 로컬(%APPDATA%\lain)에 저장되며 어디로도 전송되지 않습니다.

방법 하는 법
호칭 채팅에서 "나를 ○○라고 불러" 한마디면 됩니다 (또는 환경설정 → 내 호칭)
학습 학습 자동입니다. 대화·작업에서 배운 규칙이 쌓여 다음 판단에 반영됩니다. 좌측 학습 메뉴에서 열람·비활성화할 수 있고, 틀린 행동은 그 자리에서 정정하면 반영됩니다
사용자 프로필 자동입니다. Lain이 대화 중 알게 된 나에 대한 사실을 스스로 정리해 기억합니다
정체성 커스텀 %APPDATA%\lain\soul.md 파일을 만들면 Lain의 성격·말투 자체를 바꿀 수 있습니다 (자유 서식 마크다운)
외부 표시명 환경설정 → 외부 표시명에 내 디스코드 닉네임 등을 등록하면, 유저 감시가 화면 속 채팅에서 나를 남으로 오인하지 않습니다
절차 스킬 자주 하는 절차를 Lain이 스킬로 저장해 재사용합니다 (/learn으로 직접 가르칠 수도 있습니다)

설정

폴더를 하나씩 추가하는 대신, 본인 작업 폴더를 자동 스캔 루트로 지정하면 그 아래 프로젝트들을 자동 등록합니다(선택 사항 — UI 수동 추가만으로도 충분합니다). 스캔 루트·하위 폴더는 환경설정 → 일반에서 지정하거나, 아래 환경변수로 덮어쓸 수 있습니다(환경변수가 우선). 지정하지 않으면 기본값 경로를 살펴보고, 해당 폴더가 없으면 조용히 무시합니다.

환경변수 기본값 의미
LAIN_WORKSPACE C:\workspace 프로젝트 자동 스캔 루트 — 본인 작업 폴더로 지정 (예: D:\dev)
LAIN_SCAN_DIRS apps;games;tools 루트 아래에서 스캔할 하위 폴더 이름(; 구분) — 본인 폴더 구조에 맞게 변경
LAIN_EXTRA_DIRS (없음) 루트 밖 프로젝트 경로 직접 등록(; 구분)
LAIN_SELF_DIR (자동 탐지) Lain 자기 소스 클론 경로 — 지정하면 Lain이 스스로 자기 코드를 수정·배포(deploy_lain)할 수 있습니다. 미지정·미탐지면 자기-업데이트는 안전하게 비활성화됩니다

텔레그램·디스코드·TTS·모델 티어 등 나머지는 전부 앱 내 환경설정(⚙)에서 지정합니다. 데이터(설정·대화·학습)는 %APPDATA%\lain에 저장되며 재설치해도 보존됩니다.

백업 · PC 이사

Lain에 쌓인 개인화 데이터(설정·대화·학습)는 전부 %APPDATA%\lain\lain.sqlite 한 파일에 담깁니다. 환경설정 → 일반 → 데이터에서 백업 내보내기를 누르면 이 파일을 원하는 위치로 저장합니다(WAL을 합친 완전한 스냅샷).

복원하거나 다른 PC로 옮기려면 Lain을 완전히 종료한 뒤:

  1. 대상 PC의 %APPDATA%\lain 폴더에서 lain.sqlite, lain.sqlite-wal, lain.sqlite-shm 파일을 (있으면) 모두 삭제합니다. ⚠️ -wal/-shm을 지우지 않고 덮어쓰면 이전 설치가 남긴 저널이 새 데이터에 잘못 병합돼 조용히 손상될 수 있습니다.
  2. 내보낸 백업 파일을 그 자리에 lain.sqlite로 복사합니다.
  3. Lain을 다시 실행합니다.

데이터 폴더 열기 버튼으로 이 폴더를 바로 열 수 있습니다.

로컬 모델 (실험적)

Claude 대신 로컬 llama.cpp llama-server(Anthropic Messages API 네이티브)로 라우팅하는 local 티어(기본 매핑: Qwen3.6-35B-A3B)가 있습니다. Python·Ollama·프록시가 필요 없습니다. 다만 v1.1.3부터 모델 선택 목록에서는 숨겨져 있습니다 — 서버 없이 고르면 응답이 실패하던 함정을 없애기 위해서로, 라우팅 배관은 그대로 남아 있고 트랙만 보류(재개 예정)한 상태입니다.

powershell -File scripts\setup-qwen.ps1   # llama.cpp + GGUF(~22GB) 다운로드 (1회)
powershell -File scripts\start-llama.ps1  # 서버 기동 (기본 :8080 — 환경설정 '로컬 모델 서버'와 일치)

정직한 기대치 (메인테이너 실측, RTX 3060 Ti 8GB 기준):

경로 실측
Anthropic API 직접 호출(판정형) 10~17초 — 한국어·툴콜 정상
Claude Code 하네스 경유(Lain/Navi/판정의 실제 경로) 턴당 수 분~수십 분 — 거대 시스템 프롬프트 prefill이 CPU 오프로드 속도에 지배됨

8GB급 VRAM에서는 배관은 동작하지만 실용적이지 않습니다. 대용량 VRAM(24GB+, 모델 전체 GPU 상주)에서는 실용권으로 예상되나 메인테이너 환경에서는 검증할 수 없었습니다 — 이 기능은 community-supported이며, 해당 하드웨어에서의 이슈 리포트는 환영하지만 재현 지원이 제한적입니다. 이것이 선택 목록에서 숨긴 이유이기도 합니다 — 지금 쓰이는 모델은 전부 Claude 티어입니다.

개발

명령 설명
npm run dev 개발 실행
npm run typecheck 타입체크
npm test 단위 테스트 (vitest)
npm run build 빌드 (out/만 갱신)
npm run dist NSIS 설치본 생성 (dist\Lain Setup *.exe)
npm run deploy 빌드 → 패키징 → 설치본(%LOCALAPPDATA%\Programs\Lain) 동기화 → 재시작

⚠️ 코드(src/**)를 바꿨으면 npm run deploy로 끝내야 합니다. 바탕화면/시작 바로가기는 전부 설치본을 가리키고 그 코드는 app.asar에 냉동되어 있어, npm run build만으로는 아이콘을 눌러도 옛 버전이 뜹니다.

구조

  • src/main/ — L0 결정론 코어(store·ipc·registry·collectors·worktree·scheduler) + 판단 레이어(manager·worker·navichat·orchestrator, 짧은 판정은 judge 러너). store는 node:sqlite(네이티브 모듈 아님)
  • src/preload/contextBridgewindow.lain API 노출
  • src/renderer/ — React UI (도트 캐릭터 작업실, 네온 테마)
  • src/shared/ — main/renderer 공용 타입 (types.ts = IPC 계약 단일 출처)

원칙: 결정론 배관은 코드가, 판단은 Claude가 담당합니다. LLM 호출은 세션 본체(manager·worker·navichat)와 judge 러너에만 허용되고 결정론 배관 모듈엔 넣지 않습니다. 릴리스 이력은 CHANGELOG.md를 참고하세요.

라이선스

MIT입니다. 번들된 폰트·에셋 등 제3자 구성요소의 라이선스는 THIRD-PARTY-NOTICES.md를 참고하세요.

자기개선·저널링 구조는 Hermes 에이전트(MIT)에서 영감을 받아 독립적으로 재구현했습니다(코드 복사 없음).

About

AI orchestrator — electron, claude, ai-agent, orchestrator, korean, Windows

Resources

Stars

19 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages