> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# Nora Local

> 데스크톱 앱, Docker Compose, Kubernetes, 에어갭 tarball — 네 가지 형태로 Nora 전체를 사용자의 머신이나 인프라에서 직접 운영합니다.

**Nora Local** 은 Nora 의 자가 호스팅 계열입니다. SaaS 와 동일한 서버 바이너리, 동일한 SPA, 동일한 MCP 표면을 그대로 사용하고, 팀이 이미 운영하는 인프라 형태에 맞춰 네 가지 방식으로 포장해 두었습니다.

<Note>
  **상태 (2026-09)** — 데스크톱 앱은 `0.1.0` 버전입니다. Docker Compose, Helm, 에어갭 tarball 은 모두 같은 릴리스 파이프라인이 산출하는 프로덕션 경로입니다. 현재 빌드는 서명이 없어 macOS Gatekeeper 와 Windows SmartScreen 이 첫 실행에 한 번 물어봅니다. 코드 서명은 진행 중입니다.
</Note>

## 어떤 형태를 고를까

네 가지 모두 같은 스택을 부팅합니다. 어느 것을 고를지는 Nora 가 살아야 할 위치에 달렸습니다.

<CardGroup cols={2}>
  <Card title="데스크톱 앱" icon="laptop" href="/ko/local-app/desktop/install">
    단일 노트북용. 네이티브 창과 트레이 아이콘으로 뜨고, Docker 스택을 앱이 대신 관리합니다.
  </Card>

  <Card title="Docker Compose" icon="docker" href="/ko/local-app/deploy/compose">
    서버 · VM 한 대용. 공통 compose 파일로 `docker compose up -d` 한 번.
  </Card>

  <Card title="Kubernetes (Helm)" icon="dharmachakra" href="/ko/local-app/deploy/kubernetes">
    인그레스와 TLS, 프라이빗 레지스트리를 갖춘 기존 클러스터용. 같은 5 개 서비스를 Helm 차트로 배포합니다.
  </Card>

  <Card title="에어갭 tarball" icon="box-archive" href="/ko/local-app/deploy/airgap">
    인터넷이 전혀 닿지 않는 호스트용 — 오프라인 병원, 국방, 규제 네트워크. 모든 이미지가 하나의 아카이브에 담겨 있습니다.
  </Card>
</CardGroup>

## 내부에서 도는 스택

어떤 형태를 골라도 같은 5 개 서비스가 내부 Docker 네트워크에 뜹니다.

* **`nora-server`** 는 API 를 서빙하고 SPA 를 함께 반환하는 Rust 바이너리입니다.
* **`nora-llm-bridge`** 는 Claude Agent SDK, Ollama, OpenAI 호환 어댑터를 담는 Node 서브프로세스입니다.
* **`postgres`** (`pgvector/pgvector:pg16`) 는 애플리케이션 상태와, 기본 설정에서는 벡터 임베딩까지 함께 저장합니다.
* **`redis`** (`redis:7-alpine`) 는 작업 메모리 캐시입니다. Redis 가 없으면 Postgres 로 폴백합니다.
* **`qdrant`** (`qdrant/qdrant:v1.12.4`) 는 선택형 벡터 저장소입니다. `NORA_VECTOR_STORE=qdrant` 로 스위치할 수 있습니다.

HTTP 포트 기본값은 `8090` (`NORA_HOST_PORT`) 입니다.

## 모든 설치가 공유하는 동작

* **부팅 시 자동 마이그레이션.** 기본값이 `NORA_RUN_MIGRATIONS=1` 입니다. 첫 `up` 이 모든 SQL 마이그레이션을 실행하고, 이후 부팅은 변화가 없으면 no-op 입니다.
* **온프렘 flavor 게이트.** `NORA_DEPLOY_FLAVOR=onprem` 이 UI 에서 SDK · Local 실행 모드를 열고 free tier 게이팅을 활성화합니다.
* **기본 free tier.** 라이선스 키가 없으면 워크스페이스 1개, 플로우 3개, 하루 100회 실행. 유료 활성화는 데스크톱 앱의 **Settings** 에서 라이선스 키를 붙여넣거나, compose · Helm · 에어갭 경로에서는 `NORA_LICENSE_KEY` · `NORA_LICENSE_FILE` 을 지정합니다.
* **선택형 에어갭 부팅 프로브.** `NORA_AIRGAP=1` 을 지정하면 서버가 부팅 시점에 공용 인터넷에 여전히 도달 가능하면 exit code 78 로 거절합니다. Nora 가 트래픽을 받기 전에 격리 상태를 검증합니다.

## Nora Local 이 하지 않는 일

* **셀프서브 결제 표면** — 플랜, 포털, 구독, 취소는 온프렘에 존재하지 않습니다. 결제는 라이선스 계약에 따릅니다.
* **SaaS 개선 루프** — Verify & Improve 예산은 워크스페이스별 과금이 아니라 엔터프라이즈 라이선스에 포함됩니다.

## 다음

<CardGroup cols={2}>
  <Card title="데스크톱 앱 설치" icon="download" href="/ko/local-app/desktop/install">
    macOS · Windows · Linux 다운로드와 첫 실행 프롬프트.
  </Card>

  <Card title="Docker Compose" icon="docker" href="/ko/local-app/deploy/compose">
    같은 compose 파일을 서버에서 직접 실행합니다.
  </Card>

  <Card title="Kubernetes (Helm)" icon="dharmachakra" href="/ko/local-app/deploy/kubernetes">
    인그레스, TLS, 프라이빗 레지스트리, 라이선스 오버라이드.
  </Card>

  <Card title="에어갭 tarball" icon="box-archive" href="/ko/local-app/deploy/airgap">
    인터넷 없는 머신에 설치.
  </Card>

  <Card title="Nora Local 의 MCP" icon="plug" href="/ko/local-app/mcp">
    Claude Code · Codex · Cursor 를 로컬 MCP 엔드포인트에 연결합니다.
  </Card>
</CardGroup>
