sfw/loom
요약
Loom은 복잡한 작업을 위한 데스크톱 및 터미널 LLM 실행 하네스입니다. 목표를 분해하고, 검증된 단계를 통해 실행을 구동하며, 구조화된 상태로 작업 과정을 추적합니다. 이 하네스는 도구 호출, 구조화된 계획, 독립적인 검증 등 안정적인 에이전트 워크플로우를 제공하여 특정 모델에 묶이지 않고 로컬/클라우드 환경에서 복잡한 다단계 작업을 처리할 수 있게 합니다.
핵심 포인트
- 복잡한 작업 처리를 위한 LLM 실행 하네스(execution harness)입니다.
- 도구 호출, 구조화된 계획, 독립적 검증 등 안정적인 에이전트 워크플로우를 제공합니다.
- 로컬/클라우드 모델에 구애받지 않는 크로스 플랫폼 아키텍처가 강점입니다.
- MCP 서버를 노출하여 다른 오케스트레이터나 IDE에서 쉽게 통합할 수 있습니다.
Loom

복잡한 작업을 위한 데스크톱 및 터미널 LLM 실행 하네스(execution harness).
Loom은 목표를 분해하고, 검증된 단계를 통해 실행을 구동하며, 사고 모델과 행동 모델 사이의 라우팅을 담당하고, 채팅 기록 대신 구조화된 상태로 작업을 추적합니다. macOS 데스크톱 앱, TUI, CLI, API 또는 로컬/클라우드 또는 혼합 로컬/클라우드 모델을 사용하는 MCP를 통해 사용할 수 있습니다.
Kimi, Minimax, GLM, Claude 또는 모든 OpenAI 호환 모델을 가져오면 Loom이 하네스를 제공합니다: 도구 호출(tool calling), 구조화된 계획(structured planning), 병렬 실행(parallel execution), 독립적인 검증(independent verification) 및 영속적 메모리(persistent memory).
코딩, 리서치, 문서 분석(PDF, Word 문서, PowerPoint 슬라이드), 보고서 생성 및 다단계 비즈니스 워크플로우를 처리합니다.

Claude급 협업 UX, 로컬 환경 지원. Claude Code와 같은 도구는 강력한 에이전트적 경험(agentic experiences)을 제공하며, Claude Code는 설정에 따라 로컬 모델 스택과 결합될 수 있습니다. Loom의 초점은 다릅니다: 구조화된 계획, 도구 안전성(tool safety), 독립적인 검증, 영속적 메모리를 통해 로컬 및 혼합 로컬/클라우드 실행을 안정적으로 유지하도록 설계된 모델에 구애받지 않는 하네스입니다. 또한 Loom은 크로스 플랫폼이며, Claude cowork는 현재 macOS + Claude 모델 지향입니다. 그 결과는 하나의 제공업체(provider)에 묶이지 않고 자체 하드웨어에서 견고하게 유지되는 에이전트 워크플로우입니다.
Loom은 또한 REST API와 에이전트 시스템을 위해 구축된 MCP 서버를 노출합니다. OpenClaw와 같은 오케스트레이터는 Loom의 REST 엔드포인트를 호출하거나 모델 컨텍스트 프로토콜(Model Context Protocol)을 통해 연결하여 복잡한 다단계 작업을 오프로드할 수 있습니다: 분해, 도구 호출, 검증 및 메모리. 단일 LLM 호출이 15단계 워크플로우를 처리하기를 기대하는 대신, Loom에 맡기고 하네스가 구동하도록 합니다. MCP 통합은 또한 모든 MCP 호환 에이전트나 IDE가 별도의 설정 없이 Loom을 도구 제공자(tool provider)로 사용할 수 있음을 의미합니다.

Loom이 존재하는 이유
LLM은 짧은 순간에는 엄청난 성능을 발휘하지만, 더 큰 문제를 처리할 수 있는 프레임워크가 부족합니다. LLM은 기술 세계의 초파리 같습니다. IQ는 180이지만 기억력은 고작 20초에 불과하죠. 번뜩이는 천재성을 보여주는 순간이 있다가도, 곧바로 노쇠함에 빠집니다.
컨텍스트 창(Context windows)은 빠르게 채워집니다. 모델은 공간을 확보하기 위해 세부 정보를 압축하다가 결국 무엇을 하던 중이었는지 잊어버립니다. 시간이 지나면 너무 혼란스러워져서, 100단계 문제의 첫 번째 단계만 완료해도 "완료!"라고 기꺼이 선언합니다. 그 이유는 나머지 99단계가 이미 두 사이클 전에 압축되어 사라졌기 때문입니다.
Loom은 이러한 번뜩이는 순간들을 하나로 직조해냅니다. 이는 LLM의 가장 큰 문제점을 해결하기 위한 공학적 개선책으로, 전용 실행(execution), 검증(verification), 재계획(replanning) 시스템을 사용하여 실제로 작업을 끝까지 완수하도록 돕습니다.
Loom은 복잡한 작업을 작고 해결 가능한 단위로 분해하고, 이를 순차적으로 실행하며, 다음 단계로 넘어가기 전에 각 결과를 검증합니다. 이를 통해 모델의 지능이 가장 강력한 곳에서 사용될 수 있도록 하면서도, 환각(hallucinations), 누적 오류(compounding errors), 막다른 생각 과정(dead-end reasoning)을 줄일 수 있습니다.
Loom은 로컬 환경에 적합하며 로컬 모델을 네이티브로 지원하므로 프라이버시, 제어권, 낮은 운영 비용을 확보할 수 있습니다. 클라우드 모델 사용에도 제한되지 않으며, 코딩뿐만 아니라 연구, 분석, 운영 워크플로우 등 훨씬 더 많은 영역에 Loom을 적용할 수 있습니다.
작업 방식
데스크톱 앱 (macOS, 워크스페이스 중심) -- 로컬 워크스페이스를 열고 loomd 기반의 네이티브 셸을 통해 Loom을 관리합니다. 이 데스크톱 앱은 워크스페이스 개요, 스레드, 실행 기록, MCP 서버 및 계정을 위한 통합 작업 공간, 승인 받은 편지함(approval inbox), 파일 탐색/편집, 검색 기능, 그리고 런타임/설정 패널을 한 곳에 제공합니다.
대화형 TUI (uv run loom) -- 풍부한 터미널 UI에서 모델과 함께 작업할 수 있습니다. 사용자가 대화를 나누면 모델이 응답하고 도구를 사용하며, 사용자는 실시간으로 그 과정을 확인할 수 있습니다. 스트리밍 텍스트, 인라인 차이점(inline diffs), 도구 호출별 승인 절차, 세션 지속성, 대화 기억 기능, 그리고 제어를 위한 슬래시 명령어 기능을 제공합니다.
자율 실행 (Autonomous runs) (uv run loom run) -- Loom에 목표를 제시하고 자리를 비우세요. Loom은 작업을 의존성 그래프를 가진 하위 작업들로 분해하고, 독립적인 하위 작업들을 병렬로 실행하며, 각 결과를 독립적인 모델로 검증하고, 문제가 생기면 재계획합니다.
프로그래밍 방식 통합 (Programmatic integration) (uv run loom serve, uv run loom mcp-serve) -- 동일한 엔진을 스크립트, 대시보드, 외부 에이전트 및 IDE에 REST, SSE 또는 MCP를 통해 노출합니다.
+----------------------------+
Goal -> Planner -> | [하위 작업 A] [하위 작업 B] |
| | | |
... (만약 독립적이라면) 병렬 배치
차별점 (What Makes It Different)
로컬 모델의 약점을 위해 구축됨. 클라우드 모델은 문자열을 정확하게 복제합니다. 로컬 모델은 그렇지 않습니다. 공백에 따라 표류하고, 탭을 공백으로 바꾸며, 끝에 붙는 개행 문자를 누락시킵니다. Loom의 편집 도구는 퍼지 매칭(fuzzy matching)으로 이를 처리합니다. 정확한 문자열 일치에 실패하면, 공백을 정규화하고 유사성 임계값 이상인 가장 가까운 후보를 찾습니다. 또한 모호한 일치(두 개의 유사한 영역)도 거부하여 잘못된 곳을 조용히 편집하지 않습니다. 이것이 MiniMax와 함께 작동하는 도구와 30%의 확률로 실패하는 도구 사이의 차이입니다.
손실 없는 메모리, 손실성 요약 아님. 대부분의 에이전트는 컨텍스트가 가득 찰 때 이전 대화 턴을 요약으로 압축합니다. 이는 정보를 파괴합니다. Loom은 다른 접근 방식을 취합니다: 모든 협업(cowork) 턴은 SQLite에 원문 그대로 영구 저장됩니다. 컨텍스트가 가득 차면, 오래된 턴은 모델의 창에서 사라지지만 완전히 검색 가능하게 유지됩니다. 모델은 필요한 모든 것—특정 턴, 도구 호출 기록, 전체 텍스트 검색—을 검색하는 conversation_recall 도구를 가지고 있습니다. --resume으로 이전에 중단했던 세션을 정확히 재개할 수 있습니다. 이러한 아카이빙 보장은 협업 기록에 대한 것이며; /run 및 uv run loom run은 컨텍스트 예산 내에 머무르기 위해 모델에 노출되는 페이로드(payload)를 의미적으로 압축할 수 있지만, 소스 아티팩트/로그는 보존합니다.
하네스(harness)가 모델을 구동하는 것이 아니라, 모델이 하네스를 구동합니다. 모델은 범위가 지정된 프롬프트로 반복 호출되는 추론 엔진입니다. 오케스트레이터(orchestrator)는 다음에 무엇이 일어날지 결정합니다: 어떤 서브태스크를 실행할지, 언제 검증할지, 언제 재계획할지, 언제 에스컬레이션할지 등을 말입니다. 이는 약한 모델이라도 강력한 하네스 안에서 작동하는 것이, 약한 하네스 안의 더 강력한 모델보다 성능이 우수하다는 것을 의미합니다.
별도의 검증(Verification) 과정. 모델은 스스로 자신의 작업을 확인하지 않습니다. 독립적인 검증기(verifier)(이는 다를 수 있고 비용이 저렴한 다른 모델일 수 있음)가 세 가지 단계에서 결과를 검증합니다: 결정론적 체크(출력이 존재하는지? 구조적 요구사항을 충족하는지?), 독립적인 LLM 리뷰, 그리고 높은 중요도를 가진 변경 사항에 대한 다수 투표 합의입니다.
완전한 되돌리기(Full undo). 모든 파일 쓰기 작업은 스냅샷으로 선행됩니다. 개별 변경 사항 전체를 되돌리거나, 서브태스크의 모든 변경 사항을 되돌리거나, 심지어 전체 태스크를 되돌릴 수 있습니다. 체인지로그는 생성, 수정, 삭제 및 이름 변경을 추적하며 이전 상태 스냅샷을 포함합니다.
수십 개의 내장 도구. Loom은 파일 작업(읽기/쓰기/편집/삭제/이동 시 퍼지 매칭), 셸 + git 안전성, ripgrep + glob 검색, 웹 가져오기/검색, 코드 분석(설치된 경우 tree-sitter; 대체로 regex 사용), 계산기 + 스프레드시트 작업, 문서 생성, 태스크 추적, 대화 기억 기능을 포함합니다. 선택적인 소프트웨어 개발 통합은 외부 코딩 에이전트 도구(openai_codex, claude_code, opencode)와 WordPress 워크플로우 도구(wp_cli, wp_env, 블록 스캐폴딩, 품질 게이트)를 실행 기능 플래그 뒤에 추가합니다.
또한 학술 검색, 아카이브, 인용, 사실 확인, OCR, 타임라인/인플레이션 분석, 서신/사회 매핑 등 연구 보조 도구와 시장 데이터, SEC 기초 정보, 거시 체제 점수화(macro regime scoring), 팩터 노출도, 가치 평가, 순위 지정, 포트폴리오 분석/추천을 위한 키 없는 투자 스위트를 제공합니다. 도구들은 __init_subclass__를 통해 자동으로 발견됩니다.
인라인 diff (Inline diffs). 모든 파일 편집은 도구 결과에 통합된 diff를 생성합니다. 이 diff는 TUI에서 Rich 마크업 구문 하이라이팅으로 렌더링됩니다 -- 녹색 추가, 빨간 삭제. 변경된 내용을 항상 정확히 볼 수 있습니다.
프로세스 정의 (Process definitions). YAML 기반의 도메인 특화 기능을 통해 페르소나, 단계 청사진(phase blueprints), 검증/개선 정책(verification/remediation policy), 증거 계약(evidence contracts), 프롬프트 제약 조건 등을 모든 워크플로우에 대해 정의할 수 있습니다 (schema_version: 2). 프로세스는 컨설팅 방법론, 투자 분석 프레임워크, 연구 프로토콜 또는 코딩 표준을 나타낼 수 있으며 -- 엔진은 신경 쓰지 않습니다. Loom은 6개의 내장 프로세스를 제공하며 GitHub에서 더 많은 것을 설치하는 것을 지원합니다.
빠른 시작 (Quick Start)
새로운 사용자라면 다음부터 시작하세요:
- Python 런타임을 설치하기 위해
uv sync를 실행합니다. - 인터페이스를 선택합니다:
- TUI:
uv run loom -w /path/to/workspace - API/런타임 전용:
uv run loom serve또는uv run loomd - 데스크톱 앱 개발 쉘 (macOS):
pnpm install후pnpm desktop:tauri:dev
- TUI:
- 첫 번째 작업을 실행합니다:
- TUI:
/run <목표> - CLI:
uv run loom run "<목표>" -w /path/to/workspace - 데스크톱: 워크스페이스를 추가한 다음, 스레드를 시작하거나 앱 쉘에서 실행합니다.
- TUI:
# 설치
uv sync # 또는: pip install -e .
...
참고 자료:
데스크톱 앱 및 사이드카 (Desktop App and Sidecar)
Loom Desktop은 Tauri와 React를 사용하여 기존 Python 엔진 위에 구축된 워크스페이스 우선의 macOS 쉘입니다. 이는 Loom의 두 번째 구현체가 아니며; TUI 및 API 인터페이스와 동일한 런타임, 모델, 도구, 메모리 및 실행 오케스트레이션을 사용합니다.
오늘날 데스크톱 UI는 다음 기능에 중점을 두고 있습니다:
- 워크스페이스 등록 및 개요
- 스레드 생성, 스트리밍, 승인, 그리고 재생(replay)
- 자율 실행 시작, 모니터링, 일시 중지/재개, 재시작, 운영자 메시징
- 파일 탐색, 미리 보기, 편집, 가져오기, 및 아티팩트 컨텍스트
- 승인 받은 편지함, 알림, 명령어 팔레트, 그리고 런타임/설정 검사
워크스페이스 중심의 데스크톱 방향은 기본적으로 Docker가 아닌 로컬 loomd 사이드카를 사용합니다. loomd는 기존 Python 엔진을 재사용하고 안정적인 데스크톱 부트스트랩 계약(contract)을 노출합니다:
현재 데스크톱 셸은 macOS 전용입니다. TUI, CLI, API, 및 MCP 표면은 여전히 크로스 플랫폼이지만, 데스크톱 런타임 소유권과 패키징은 이 단계에서 macOS에 대해서만 강화되었습니다.
GET /runtimeGET /workspacesGET /workspaces/{id}/overviewGET /workspaces/{id}/conversationsGET /workspaces/{id}/runsGET/PATCH /settings
loomd는 호스트, 포트, 데이터베이스 경로, 스크래치 디렉터리(scratch dir), 및 기본 워크스페이스 루트에 대한 런타임 오버라이드를 허용합니다:
uv run loomd \
--host 127.0.0.1 \
--port 9000 \
...
Tauri 데스크톱 셸은 자체적으로 loomd를 시작합니다. 이는 사이드카에게 앱 데이터 디렉터리 아래에 데스크톱 범위의 SQLite DB, 스크래치 디렉터리, 및 로그 파일을 제공하며, 127.0.0.1:9000부터 시작하는 사용 가능한 루프백 포트를 선택합니다. 이 사이드카는 기본 로컬 저장소로 SQLite를 유지하며, WAL 모드, 명시적 바쁜 시간 초과/동기식 정책(busy timeout/synchronous policy), 관리되는 읽기/쓰기 연결 모델, 그리고 이벤트당 하나의 연결+커밋 대신 배치된 컴플라이언스-이벤트 플러시(batched compliance-event flushes)에 최적화되어 있습니다.
macOS 데스크톱 빌드에는 이제 사설 Python 런타임과 잠긴 Loom 환경이 앱 번들에 포함됩니다. 빌드 시 어셈블리는 pnpm --dir apps/desktop tauri:build를 통해 레포 상태에서 실행되며, 런타임 상태는 서명된 번들 대신 데스크톱 앱 데이터 디렉터리 내 외부 공간에 유지됩니다. 현재의 빌드 입력값, 포함된 추가 기능(bundled extras), 스모크 체크(smoke checks), 인수 목록(acceptance checklist), 그리고 서명 관련 노트는 docs/DESKTOP-MACOS-PACKAGING.md를 참조하세요.
설정 (Configuration)
Loom의 내장 설정 마법사(setup wizard)는 첫 실행 시 TUI 내부에서 프로바이더 선택, 모델 구성, 역할 할당 과정을 안내합니다. 이 마법사는 사용자를 위해 ~/.loom/loom.toml 파일을 작성해 줍니다. 언제든지 TUI 내부에서 /setup을 실행하여 재구성하거나, CLI에서는 uv run loom setup을 실행할 수 있습니다.
데스크톱 앱은 동일한 Loom 설정과 모델 레지스트리를 읽지만, 기본 CLI/TUI 상태 경로와 충돌하지 않도록 자체 런타임 소유의 SQLite DB, 스크래치 디렉터리(scratch dir), 그리고 로그를 데스크톱 앱 데이터 디렉터리 아래에서 관리합니다.
또한 설정을 수동으로 생성할 수도 있습니다. Loom은 현재 디렉터리 또는 ~/.loom/loom.toml에서 loom.toml을 읽습니다:
[models.primary]
provider = "ollama" # 또는 "openai_compatible" 또는 "anthropic"
base_url = "http://localhost:11434"
...
TUI 시작 동작에 대해서는:
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기