<img src="https://localgpt.app/logo/localgpt-icon-app.svg" width="50" height="50" alt="LocalGPT" /> LocalGPT
License
Crates.io
Downloads
Docs
CI
Discord
문서, 노래, 시나리오 또는 프롬프트가 .world로 변환되어 그 안을 걸어 다니며 작업할 수 있는 데스크톱 애플리케이션입니다. 옆 터미널에는 사용자의 코딩 에이전트가 함께합니다. 'World'는 히스토리(history)를 가진 패키지입니다: 사람들은 창에서 이를 편집하고, 에이전트들은 외부에서 편집하며, 모든 변경 사항은 기록되고(logged), 출처가 명시되며(attributed), 되돌릴 수 있고(undoable), 브랜치화할 수 있습니다(branchable). LocalGPT는 모델을 구동하지 않으며, 서비스를 호출하거나 키를 보유하지 않습니다. 에이전트들이 자체적으로 필요한 키를 가져오며, 어떤 코딩 에이전트를 사용하든 상관없습니다. 오픈 소스이며, Apache 2.0 라이선스를 따릅니다.
LocalGPT desktop app demo
이 저장소에는 무엇이 있나요
| 위치 | 내용 |
|---|
| LocalGPT, 데스크톱 앱 | crates/app | 하나의 창에서 모든 모드를 지원합니다: 프롬프트(Gen)로부터의 world, Markdown 문서(MD)로부터의 world, 노래(Verse)로부터의 world, 또는 라이브 캔버스로 열린 모든 .world 패키지입니다. |
| ... | | |
설치
brew install --cask localgpt-app/tap/localgpt
npm install -g localgpt
...
Rust stable (edition 2024, 따라서 1.85 이상 필요). Linux 환경에서는 데스크톱 크레이트가 Bevy의 시스템 패키지(libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev libfontconfig1-dev libdbus-1-dev pkg-config)를 필요로 합니다. 전체 옵션, 기능 플래그 및 헤드리스 빌드는 설치 페이지를 참고하세요.
데스크톱 앱: 하나의 창에서 모든 모드
localgpt-app은 Gen의 세계가 Bevy를 통해 네이티브 eframe/egui 패널로 렌더링된 형태로, 그 옆 터미널에는 사용자의 코딩 에이전트들이 자리 잡고 있습니다. 각 탭은 열려 있는 폴더에서 시작되는 일반 로그인 셸입니다. 사용자는 원하는 에이전트를 이 탭에서 실행할 수 있습니다. 이 앱은 언어 모델을 구동하지 않으며, 키를 보유하지 않고, 에이전트의 이름을 알지 못하며, 어떠한 에이전트 설정도 관리하지 않습니다. 창 상단의 **열기…**는 문서, 노래 또는 세계를 가져옵니다. 위의 실행 플래그(launch flags) 역시 동일합니다.
- 문서. 개요(outline), 선택된 섹션의 위치, 그리고 세계 옆에 있는 에디터의 텍스트가 포함됩니다. 파일이 저장되면 타이핑을 멈춘 직후 세계가 제자리에서 재구축되며, 텍스트가 변경된 섹션만 바뀝니다. 커서가 특정 섹션으로 이동하면 카메라가 그곳으로 날아가고, 세계 속 무언가를 클릭하면 해당 섹션이 화면에 표시됩니다. 초안 너머의 풍경은 문서 옆에 있는 MD 사이드카(sidecar)에서 가져오며, 이는 파일 작업을 하는 에이전트에 의해 작성됩니다. 개요는 각 섹션이 어디서 왔는지 그 위치를 레이블링합니다.
- 노래. 장르별 온디바이스 분석—템포, 비트 그리드(beat grid), 섹션, 에너지 곡선, 분위기—가 세계를 선택하고 채워줍니다. 사운드트랙은 공유 믹서에서 재생되며, 세계의 변조(modulations)는 이를 따라가고, 세계 아래에 있는 트랜스포트(transport) 기능이 이를 일시 정지합니다. 모델도 없고, 키도 없고, 업로드도 없습니다.
- 패키지.
.world 폴더가 라이브 캔버스처럼 열립니다: 이 창은 권한을 가지고 폴더의 API를 제공하며, 기록은 사용자가 거닐고 재생할 수 있는 그래프로 그려집니다. 그리고 에이전트들은 외부(다음 섹션)에서—옆에 있는 탭이나 다른 곳 어디에서든—편집합니다.
네이티브 패널은 macOS, Windows 및 Linux에서 실행되지만, 후자는 더 새롭고 덜 검증되었습니다. 창을 가로지르는 타임라인은 세계의 시계(노래, 장면, 투어)를 재생하며, 패키지의 장면들을 자르고 이동시키고, 드래그할 때마다 히스토리에 항목이 기록됩니다. 문서: 데스크톱 앱. localgpt-gen은 MCP 서버, 헤드리스 생성(headless generation), 그리고 --host/--join을 위한 독립적인 바이너리로 유지되며, 하나의 데스크톱 번들인 LocalGPT.app이 apps/app-desktop/에 의해 구축됩니다.
월드는 패키지이며, 에이전트가 외부에서 이를 편집합니다
.world는 폴더입니다: manifest.json은 현재의 세계를 나타내고, ops.jsonl에는 지금까지 발생한 모든 변경 사항이 기록되며, assets/에는 콘텐츠 해시(content hash)별로 메시(meshes), 텍스처 및 사운드가 보관되고, AGENTS.md는 에이전트에게 어떻게 변화를 줄지 알려줍니다. 이 형식은 Open World Format입니다: 모든 개정판에서의 상태는 로그가 기본값 위에 접힌 형태이며, manifest.json은 그 최신 접힌 상태(head)를 기록한 것입니다. 렌더링, 편집, 되돌리기(undo), 브랜치, 리플레이 및 멀티플레이어는 하나의 히스토리를 읽어내는 과정입니다.
하나를 라이브 캔버스로 열어봅니다. 창 안에는 어떤 에이전트도 실행되지 않습니다:
localgpt-gen --live scene-1.world
폴더를 읽을 수 있는 모든 에이전트(Claude Code, Codex, 스크립트, localgpt 자체)가 월드를 변경할 수 있습니다. 이는 일괄적인 작업 목록(batch of ops)을 API의 .live/endpoint.json에 전송하며, 이 일괄 작업은 전체를 커밋하거나 에이전트가 조치할 수 있는 이유별로 거부됩니다:
URL=$(jq -r .url scene-1.world/.live/endpoint.json); TOKEN=$(jq -r .token scene-1.world/.live/endpoint.json)
curl -s -X POST "$URL/ops" -H "Authorization: Bearer $TOKEN" -d '{
"author": "claude", "message": "a lantern by the door",
...
}'
MCP 에이전트를 여기에 배치하는 가장 저렴한 방법은 표준 입출력(stdio)을 통해 오픈 캔버스의 도구를 제공하는 심(shim)입니다:
localgpt world mcp scene-1.world
claude mcp add scene -- localgpt world mcp scene-1.world
- 사람의 편집 기능도 지원합니다. 뷰포트 내 핸들(이동, 회전, 크기 조정, 스냅 포함)을 처리하며, 그룹화, 복제 및 삭제를 위한 키가 제공됩니다. 모든 제스처는 동일한 권한을 거치는 하나의 배치(batch)로, 히스토리의 한 항목으로 기록되며, Cmd+Z로 되돌릴 수 있습니다. Undo는 작성자별로 작동하며 Redo 기능도 지원합니다.
--review 플래그를 사용하면 에이전트의 배치가 커밋되기 전에 캔버스에 표시되어 승인하거나 거부할 수 있습니다.
- 히스토리는 트리 구조입니다. 이전 항목에서
at으로 전송된 배치는 브랜치(branch)를 시작하며, 헤드(head)는 제자리에 머무릅니다. 데스크톱 앱은 로그를 그래프로 그립니다. 각 브랜치마다 레인(lane)이 있으며, 이 트랜스포트(transport)는 스텝(steps), 스크럽(scrubs), 재생(plays) 기능을 제공하여 월드가 만들어지는 과정을 관찰할 수 있습니다. POST /goto는 아무것도 쓰지 않고 캔버스를 임의의 지점으로 이동시킵니다. localgpt-gen --replay를 사용하면 세션을 타임랩스(time-lapse)로 재생합니다.
- Git 기능도 사용할 수 있습니다.
localgpt world init demo.world --git은 누가 전송했든 모든 배치를 커밋으로 만듭니다. 열린 앱에서 체크아웃(checkout)한 내용은 추적되며, verify는 로그를 접어 매니페스트(manifest)가 올바른지 확인합니다.
- 가드 기능입니다.
manifest.json에 직접 쓰기는 차단되고 기록됩니다. 배치는 결정된 리비전(revision)을 포함할 수 있으며, 월드가 변경되었다면 거부됩니다. 이름은 아무것도 거부하지 않으면서 이름을 부여합니다.
윈도우가 없는 동일한 권한인 localgpt world는 스크립트 및 CI를 위해 사용됩니다:
localgpt world init demo.world --git
localgpt world submit demo.world batch.json --author me --message "lift the cube"
localgpt world submit demo.world batch.json --at <entry-id>
...
문서(Docs): Live canvas · localgpt world · 의사 결정 사항: docs/rfcs/authoring/.
전처리(Previs): 시나리오가 보드가 되고, 보드가 캔버스가 됩니다.
첫 번째 사용자는 영화 프리비주얼라이제이션(film previsualization) 분야입니다. 오늘날 수작업이나 측정 기능이 없는 생성기를 사용하여 프리비즈를 하는 사람들이죠. 그곳에서는 Greybox가 일반적이며, 반복 작업(iteration) 자체가 핵심이고, 결과물인 보드나 샷 리스트는 이력을 가진 .world 파일이 만들어낼 수 있는 것입니다.
-
스크립트 → 보드. 스크립트를 localgpt.md에 드롭하세요. PDF, Final Draft의 .fdx, .fountain, 또는 마크다운(Markdown) 스크립트 페이지가 될 수 있습니다. 이 페이지는 탭에 보드를 그리고 board.html, shotlist.csv (장면, 샷, 크기, 렌즈, 센서, 화면 비율, 카메라 높이, 거리, 시작점 및 끝점)를 제공하며, 장면별로 하나의 .world 파일을 담은 zip 파일도 제공합니다: 세트(set), 대사 캐릭터당 스탠드인(stand-in), 모두를 위한 마스터 샷과 단일 샷 등 실제 렌즈와 측정된 카메라 위치가 포함됩니다. 아무것도 설치할 필요가 없고, 아무것도 업로드할 필요가 없습니다. 동일한 초안은 장면 수에 제한 없이 명령줄에서 실행됩니다:
localgpt previs script.fdx --out previs/
이는 결정론적(deterministic)이며 모델에 의존하지 않습니다 (model-free). 네 가지 파일 종류 중 어느 것을 사용하든, 동일한 페이지는 페이지와 명령줄 모두에서 바이트 단위로 동일한 보드를 제공합니다.
-
보드 → 캔버스. 장면을 실시간으로 열고 아무 샷이나 확인하세요 (카드 클릭 또는 1–9번 키 누름); 카드를 드래그하여 순서를 재배열하고, 샷 스트립에서 보드를 여세요.
localgpt-gen --live previs/scene-1.world
-
질문을 통해 수정하기. 폴더에 에이전트를 배치하고 (localgpt world mcp previs/scene-1.world) 다음과 같이 질문합니다: "1B를 35로 만들어줘", "그녀에게 머물러 있어", "문간에서". 수정(revision)은 카메라 엔티티의 ext-cinematography 블록에 대한 일반적인 패치입니다. 이전 항목에서 전송된 일괄 처리(batch)는 트릿먼트(treatment)이며, 두 개의 트릿먼트 보드는 변경된 샷이 표시되면서 나란히 배치됩니다 (GET /board?tip=<a>&vs=<b>).
포징(Posing), 애니매틱스(animatics) 및 생성된 룩(generated look)은 오늘날 프리비즈(previs)를 하는 사람들이 자신의 페이지에서 이 두 단계를 사용하기를 기다립니다. 문서: Previs · 왜 프리비즈가 먼저인가: docs/world-strategy.md · 관찰 시트(observation sheet): docs/previs-user-test.md.
<img src="https://localgpt.app/logo/localgpt-icon.svg" width="32" height="32" alt="LocalGPT" /> LocalGPT Gen 바이너리
localgpt-gen은 Bevy 엔진을 사용한 월드 빌더입니다. 이 안에는 창(window)과 그 안에서 구축하는 88개의 도구들이 있으며, 이를 프롬프트 하는 것은 없습니다. 이것은 모델을 실행하지 않으며 키를 보유하지 않습니다. 창 밖에 있는 에이전트가 MCP를 통해 또는 라이브 패키지의 API를 통해 이것을 구동합니다.
localgpt-gen --mcp-relay
localgpt-gen mcp-server --connect
localgpt-gen mcp-server
...
-
구축 가능한 요소. 파라메트릭 도형(상자, 구체, 원통, 원뿔, 캡슐, 평면, 토러스, 피라미드, 웨지 등), PBR 재질, 포인트/스팟/방향 조명, 하늘 및 안개 효과, glTF 메시, 데이터 기반 행동(궤도 이동(orbit), 회전(spin), 상하 움직임(bob), 바라보기(look-at), 맥동(pulse), 흔들림(swing), 경로 추적(path-follow), 바운스(bounce)), 절차적 오디오(주변 바람, 비, 숲, 바다, 동굴, 시냇물; 공간 에미터), 대화가 가능한 NPC, 트리거 및 수집품, 지형 및 물, 선택적 물리 엔진, 그리고 내비메시(navmesh)와 스크린샷 평가 루프를 갖춘 블록아웃 우선 월드 생성(WorldGen) 파이프라인.
-
도구. 88개의 gen_* 도구 세트는 모든 전송 방식에서 동일하게 사용됩니다: stdio MCP, 스트리밍 가능한 HTTP 전송(--mcp-http), 그리고 릴레이. 이들 중 어느 것도 모델이나 서비스를 호출하지 않습니다.
-
두 가지 구동 방식. 터미널 내의 코딩 에이전트(Claude Code, Codex, Gemini CLI, 모든 MCP 클라이언트)를 통해 작동하며, 이 에이전트의 도구 호출은 릴레이를 통해 사용자가 보고 있는 창으로 전달됩니다 — 옆 창에서 localgpt-gen --mcp-relay를 사용하거나, 에이전트 자체 로그인 정보를 사용하여 localgpt-gen mcp-server --connect로 에이전트의 MCP 서버를 구축합니다. 또는, 자신의 프로세스로서 localgpt-gen mcp-server를 실행하고 해당 창을 얻는 앱으로 작동할 수 있습니다.
{ "mcpServers": { "localgpt-gen": { "command": "localgpt-gen", "args": ["mcp-server"] } } }
-
함께 사용하기. 하나의 기기가 월드를 호스팅하고 소유하며, 다른 기기들은 자체 Gen 창이나 브라우저에서 접속하여 같은 세계를 실시간으로 돌아다니고 채팅할 수 있으며, 호스트의 에이전트가 요청하는 곳에 구축합니다. --web-edit을 사용하면 브라우저 게스트들이 사물을 직접 이동시킬 수 있고; --relay는 localgpt-relay라는 작은 바이너리를 통해 LAN 외부의 게스트에게 도달하며 프레임을 전달할 뿐 월드 상태를 저장하지 않습니다. 모든 세션은 패키지입니다 — 기본 월드와 하나의 로그로 구성되며, 사용자별 되돌리기(per-user undo), --resume, 그리고 --replay 기능을 제공합니다.
-
내보내기. .world 패키지와 world.ron 스킬, Blender, Unity 및 Unreal용 glTF/GLB, 동일한 three.js 뷰어가 포함된 자체 포함 HTML 페이지 localgpt.world가 서비스되며, 스크린샷도 제공됩니다.