0xSero/omarchy-local-ai
요약
이 가이드는 로컬 AI 환경을 구축하고 코딩 에이전트를 실행하는 방법을 설명합니다. 사용자의 GPU/CPU에서 모델을 구동하며, OpenAI와 호환되는 게이트웨이를 통해 서비스됩니다. Omarchy 플러그인을 사용하여 Local AI를 설정하고 다양한 모델과 코딩 에이전트(Claude Code, Copilot 등)를 쉽게 사용할 수 있습니다.
핵심 포인트
- 로컬 AI는 사용자의 GPU/CPU에서 직접 모델을 구동합니다.
- OpenAI와 호환되는 게이트웨이를 통해 모델 서비스를 제공합니다.
- Omarchy 플러그인을 이용해 Local AI 환경을 설정하고 관리할 수 있습니다.
- 설정 과정에는 Docker 및 권한 관련 보안 절차가 포함됩니다.
사용자의 GPU 또는 CPU에서 로컬 모델을 실행하고 그 위에서 코딩 에이전트를 열 수 있습니다. Local AI는 사용자의 카드(NVIDIA, Intel Arc Pro, AMD) 또는 x86-64 AVX2 CPU에서 테스트된 모델을 선택하고, 고정된 Hugging Face 리비전(revision)에서 가중치(weights)를 다운로드하여 확인한 후, 이 장치의 자체 Docker 네트워크 뒤에 키가 지정되고 OpenAI와 호환되는 게이트웨이를 통해 모델을 서비스합니다. 바(bar)에서 설정을 수정할 필요 없이 pi, Claude Code, Codex, OpenCode, omp, Crush, Grok, Copilot 또는 Hermes를 원하는 폴더에서 열 수 있습니다. 이 패널은 두 개의 탭(home: 활동 내역, 실행 중인 것, 고정된 모델; models: 이 장치에서 실행 가능한 모든 모델을 검색, 다운로드, 시작 및 고정)과 각 카드의 메모리 및 온도를 보여주는 하드웨어 페이지, 각 모델의 Hugging Face 카드와 함께하는 전체 화면 보기, 키보드 탐색 기능, 그리고 실행 중인 모델을 사용자의 tailnet에 공유할 수 있는 기능을 제공합니다.
omarchy plugin add https://github.com/0xSero/omarchy-local-ai --enable
그런 다음 바에서 Local AI를 열고 Set up Local AI를 클릭합니다 (장치당 한 번만; Omarchy가 비밀번호를 요청함). models 탭에서 모델을 선택하거나(또는 이름만 입력) Start를 누르고, 그 위에서 코딩 에이전트를 엽니다. Install은 어떤 설정을 하는지, Requirements는 무엇이 필요한지, 그리고 Remove는 모든 것을 어떻게 되돌릴 수 있는지 설명합니다.
omarchy plugin add https://github.com/0xSero/omarchy-local-ai --enable
바에서 Local AI를 열고 Set up Local AI를 클릭합니다. 터미널이 열리고 Omarchy의 자체 명령 두 개가 실행됩니다. Local AI 자체는 root 권한으로 아무것도 실행하지 않으며, 플러그인을 추가하거나 업데이트해도 설정은 실행되지 않습니다.
omarchy-setup-security-sudoless-docker
, Omarchy의 Sudoless Docker: 이것이 무엇을 의미하는지 설명하고 확인을 요청한 다음,
, 'Password foryouto install NVIDIA container support for Local AI'라고 물어보는데, 이미 설치되어 있다면 아무것도 묻지 않습니다. 패키지는 사용자의 GPU를 /etc/cdi/nvidia.yaml에 Docker로 설명합니다.
Docker는 모델이 시작될 때 이 파일을 읽으므로 Docker의 설정은 건드려지지 않으며 재시작되지도 않습니다.
만약 Local AI 6.0-6.4가 이 장치에 설치된 적이 있다면, 어떤 경우에도 해당 계정의 프로그램들이 비밀번호 없이 root 권한을 얻을 수 있도록 두 개의 polkit 파일을 남겼습니다. Local AI는 이러한 파일이 남아있는 동안 작동하지 않습니다: 패널에는 빨간색 배너가 표시되고, 시작(starting), 공유(sharing), 설정(setup) 기능은 거부됩니다. 오직 root만이 이들을 삭제할 수 있으므로 Local AI도 그렇게 하지 않습니다; docs/legacy-polkit.md에 무엇인지 설명되어 있으며 터미널에서 실행할 명령어가 제공됩니다. 파일이 사라지면 배너는 저절로 지워집니다.
설정은 패널에 표시될 내용을 확인하면서 끝납니다. tailnet에서 모델을 공유하려면 Tailscale의 운영자(operator)가 필요합니다; Omarchy의 Tailscale 설치가 이를 설정하며, 설정 과정에서 그렇지 않은 경우를 알려줍니다. 설정 후에는 시작, 중지, 공유, 새로고침 및 제거 시 비밀번호를 묻지 않습니다. Sudoless Docker는 root에 준하는 권한을 가지며, Omarchy 자체 경고에서도 언급하듯이; 이는 Setup > Security에서 끌 수 있습니다.
- Omarchy와 Quattro 셸 및 그 바(bar). Local AI는 Omarchy의 자체 명령어를 호출합니다:
omarchy-setup-security-sudoless-docker
,omarchy-pkg-add
,omarchy-hw-nvidia
,omarchy-launch-tui
,omarchy-launch-browser
,omarchy-notification-send
그리고omarchy-cmd-present. - Docker,
jq
,curl
,flock
,sha256sum
그리고sha1sum. - 지원되는 GPU(아래), 또는 AVX2와 충분한 RAM을 갖춘 x86-64 CPU 및 해당 레시피. NVIDIA의 경우 드라이버와
nvidia-smi가 필요하며, 설정 과정에서 컨테이너 툴킷이 추가됩니다. Docker 28 이상(Omarchy는 29를 배포합니다). AMD의 경우 ROCm의amd-smi가 필요합니다. - 선택 사항: 모델 공유를 위한 Tailscale; 존재할 경우 다운로드에 사용되는
~/.cache/huggingface/token파일의 Hugging Face 토큰. - 다음 리소스들에 대한 네트워크 접근 권한:
huggingface.co(가중치),ghcr.io/sybil-solutions,
과 역사적인ghcr.io/0xsero핀, 그리고ghcr.io/ggml-org
(the engine and gateway images, pinned by digest), 그리고 api.github.com
그리고 raw.githubusercontent.com
(자동 카탈로그 확인), huggingface.co
전체 화면의 모델 카드에 대해서도 마찬가지이며, usage.sybilsolutions.ai
(설치 횟수, 아래에서 허용할 때만).
Qwen3.8-Flash-Next를 Intel Arc Pro B70 32 GB 하나에 사용하면 라우팅된 전문가와 전체 n-gram 테이블을 호스트 RAM에 유지할 수 있습니다. 이 레시피는 128 GB의 사용 가능한 RAM과 85.14 GB의 디스크가 필요하며, 64K 컨텍스트 창을 가지고 있고 NVMe를 요구하지 않습니다. 이미지를 지원하지만 비디오는 지원하지 않습니다. 메모리 및 프라이빗 공유 메모리 제한은 v3 카탈로그에 포함되어 있으며, 패널은 시작하기 전에 호스트 RAM을 확인합니다.
이 엔진 레포지토리를 번들 카탈로그에서 얻으려면 6.13.4 이상으로 업데이트해야 합니다. 자동 카탈로그 새로고침은 의도적으로 레시피를 추가하거나 실행되는 것을 변경할 수 없으며, 그러한 것은 플러그인 업데이트와 함께 제공됩니다.
카드당 검증된 모델 또는 여러 카드에 걸친 단일 모델.recipes.json
은 로컬-ai-registry에서 지원하는 각 하드웨어 종류별로 해당 정확한 카드 하나 또는 2개/4개의 카드를 가로질러 수락되는 모든 레시피(다운로드, 로드, 정확성 확인 및 여러 컨텍스트 길이에서의 속도)를 보유합니다. SGLang 또는 vLLM의 EXL3 가중치가 가장 먼저 오며 권장됩니다. 모델 탭은 이 장비가 어떤 카드에 배치되든 실행할 수 있는 모든 모델을 검색 가능한 단일 표로 나열하며, 홈 화면에는 고정된 모델(실행 중이거나 다운로드하는 경우 고정됨)이 표시됩니다. 테스트된 모델이 없는 장비는 그렇게 명시하고 지원 목록 링크를 제공합니다.장비가 필요한 것들. 전문가를 시스템 RAM에 유지하거나 서비스 중에 디스크에서 읽어오는 레시피(3090 또는 B70의 Qwen3.8-Flash-Next)는 필요한 사용 가능한 RAM과 디스크, 그리고 모델 폴더가 NVMe에 있어야 하는지 여부를 명시합니다. 이는 해당 장비가 갖추고 있을 때만 제공되며, 나머지는 너무 크다고 목록화하고 부족한 것을 명시합니다.
레시피는 또한 CPU 스레드를 그 엔진 핀이 작동하는 곳으로 명명할 수도 있습니다. **가중치(Weights)**는 고정된 리비전에서 다운로드되며, 모든 파일은 사용되기 전에 Hugging Face에 나열된 해시 값과 확인됩니다. 이는 대용량(LFS) 파일의 SHA-256 또는 소용량 파일(설정 파일, 토크나이저, 채팅 템플릿, 모델 코드)의 Git blob SHA-1입니다. Hugging Face 캐시의 사본은 동일한 검사를 통과할 때만 재사용됩니다. 컨테이너(Containers). 엔진은 호스트가 주소를 알 수 없는 자체 내부 Docker 네트워크에서 실행되며, 게이트웨이와만 공유되고 공개 포트도 없고 no-new-privileges를 사용합니다. 키가 지정된 게이트웨이는 모델 자체의 Docker 네트워크에서 사용자 권한으로 실행되어 OpenAI, Anthropic 및 Responses API와 통신하며 답변당 한 줄씩 로그를 기록합니다. 토큰, 속도, 차트 및 Home의 활동 그리드는 매번 새로 고침되는 것이 아니라 새로운 줄마다 합산된 해당 로그에서 가져옵니다. 에이전트(Agents). pi, Claude Code, Codex, OpenCode, omp, Crush, Grok, Copilot 및 Hermes는 사용자가 선택한 폴더 내 터미널에서 열리며 게이트웨이를 가리킵니다. 그 자체의 설정 중 아무것도 건드리지 않습니다. 모델의 세부 정보에는 에이전트가 한 번 나열되며, 선택된 에이전트가 확인됩니다. 에이전트 페이지에서는 선택된 에이전트가 새 모델의 기본값입니다. **업데이트(Update to)**는 mise 또는 npm에 더 새로운 버전의 에이전트가 있을 때 나타납니다. 폴더 행을 클릭하여 패널 내부의 폴더를 탐색하고 (폴더 안으로 들어가거나, 위로 올라간 후) **이 폴더 사용(Use this folder)**을 선택할 수 있습니다. 최근 폴더도 나열됩니다. **열기(Open)**는 홈 또는 모델 페이지에서 선택된 에이전트를 실행합니다. 실행 중인 모델의 에이전트 선택은 기본값을 변경하지 않으며, 마지막으로 선택한 폴더가 폴더 기본값으로 유지됩니다. 업데이트는 mise가 해당 에이전트를 관리하는 경우, 독립형 omp, Hermes, Claude Code 및 OpenCode를 위한 네이티브 업데이터, 또는 기존 npm 설치의 경우 npm을 사용합니다. 기존 세션은 계속 실행됩니다. 공유(Share) tailscale serve를 사용하여 tailnet에 실행 중인 모델을 공유합니다.
(tailnet 전용이며 여전히 키가 필요합니다). 공유 중지(Stop sharing) 기능을 사용하면 해당 페이지의 공유가 제거됩니다. Tailscale이 실행되고 로그인되어 있어야 합니다. 설정은 다른 계정의 운영자 권한을 유지하므로, 해당 계정에 공유 관리를 요청하십시오. 공유 실패 시도는 기록되지만 모델 중지를 방해하지는 않습니다.
지원되는 하드웨어: x86-64 AVX2 CPU (시스템 RAM에 LFM2.5-2.6B), NVIDIA RTX 30, 40 및 50 시리즈, RTX A6000, RTX Ada 및 RTX Pro Blackwell, Intel Arc Pro B70, 그리고 AMD Instinct MI300X 및 Radeon RX 6800 XT (ROCm의 amd-smi 사용 시).
bin/omarchy-local-ai setup # 일회성 기기 설정
bin/omarchy-local-ai registry # 검증된 카탈로그 새로고침
bin/omarchy-local-ai forget <recipe> # 중지된 관리 가중치 제거
...
CPU 레시피는 시스템 RAM을 사용하며 GPU 장치 없이 시작합니다. GPU 작업을 RAM이나 NVMe로 오프로드하는 레시피는 여전히 하드웨어에 종속적이며 요구 사항을 명시합니다.
실행 중인 각 모델의 게이트웨이는 해당 모델 자체의 Docker 네트워크, http://<address>:12434/v1에서 응답합니다.
: 모델 페이지에서는 이 기기(this machine) 아래에 표시되며, 클릭할 때까지 숨겨져 있고 복사본을 가지고 있습니다. 키는 ~/.local/state/omarchy/local-ai/gateway.key에 있습니다. 이곳에만 보내고 다른 곳에는 보내지 마십시오. 왜냐하면 Local AI 자체와 그것이 여는 에이전트들은 다음을 수행하기 때문입니다: 오직 Docker만이 해당 브릿지에 주소를 할당하며 호스트 인터페이스가 이를 보유하지 않기 때문에, 기기의 다른 어떤 계정도 그곳에서 수신할 수 없습니다. 반면 127.0.0.1:<포트>는 게이트웨이가 중지하는 순간 모든 계정이 바인딩할 수 있도록 비어 있습니다. 127.0.0.1에서의 게이트웨이 포트 (12434번)는 키를 가지고 있지 않습니다: Local AI는 단지 그곳에서 게이트웨이가 작동하고 있으며, 키가 없으면 요청을 거부하는지만 확인합니다.
bin/omarchy-remove-ai-local
이 사용자의 관리 모델들을 중지시키고 컨테이너, 엔진 이미지, 가중치 및 설정을 삭제합니다. 그런 다음 omarchy plugin remove sero.local-ai
.
| 파일 | 역할 |
|---|---|
bin/omarchy-local-ai | 백엔드, 하나의 bash 파일 |
Model.js | 순수 함수: 스냅샷 입력, 뷰 출력 |
Panel.qml | 뷰를 그리며 백엔드의 동작을 실행 |
recipes.json | 내장된 레시피들, 한 카드 종류가 한 줄 (make sync) |
docs/design.md
설계와 test/all이 있습니다.
테스트를 실행합니다.
각 엔진은 자체 내부 Docker 네트워크에 있으며, 호스트로부터 격리됩니다 (com.docker.network.bridge.gateway_mode_ipv4=isolated, Docker 28 이상): 호스트는 해당 주소를 가지고 있지 않으며 경로도 없어, 어떤 계정이라도 기계에서 접근할 수 없습니다. 엔진이 무엇을 듣고 있든 또는 자체 키를 확인하든 상관없습니다. 모델의 게이트웨이만 그 네트워크에 참여하며, 이곳은 유일한 진입로이며 키가 필요합니다. 이전 버전으로 시작된 모델은 업데이트 후 패널이 새로 고침될 때까지 개인 네트워크로 이동하여 실행됩니다.
이미지는 SHA-256으로 고정(pinned)됩니다. 게이트웨이는 Linux 기능 없이, 읽기 전용 루트 파일 시스템, 제한된 임시 디렉터리 및 외부 DNS가 비활성화된 호출 사용자(calling user)로 실행됩니다. Docker 서비스 검색은 여전히 엔진을 해결하며, 사용 기록은 전용 디렉터리에 쓰기가 가능하게 유지됩니다. 기존 컨테이너는 중지되었다가 다시 시작될 때 이러한 제한 사항을 받습니다.
모델 엔진은 여전히 쓰기 가능한 컨테이너 파일 시스템을 가지고 있으며, 내부 네트워크는 외부 네트워크 액세스를 차단합니다. 다이제스트 고정(Digest pins) 및 빌드 증명서(build attestations)는 이미지의 식별자를 확립하지만, 신뢰할 수 없는 코드를 안전하게 만들지는 못합니다. 엔진 제한 사항은 배포 전에 개별 엔진에 대한 하드웨어 검증이 필요합니다. 게이트웨이 DNS를 비활성화하는 것이 외부 IP 연결을 차단하지는 않습니다.
아무것도 아닙니다. 사용자가 허용할 때까지는 그렇습니다. Home은 최소한의 익명 사용 횟수를 공유할지 여부를 한 번 묻습니다(괜찮아요 또는 허용; 어떤 답변이든 유지되며, 설정에서 나중에 변경 가능합니다). 이 질문 전에 설치된 경우, 아직 응답하지 않은 것으로 간주됩니다: 허용할 때까지 꺼짐 상태입니다. 일단 허용되면, 얼마나 많은 기계가 이를 사용하는지 계산하기 위해 Local AI는 새로운 모델에 대해 레지스트리를 확인할 때마다(바가 실행되는 동안 12시간마다) https://usage.sybilsolutions.ai/v1/local-ai/ping로 작은 메시지를 하나 보냅니다.
{"id": "9f2c…", "version": "6.15.0", "hw": ["rtx-3090"], "running": 1, "launched": true,
"actions": {"started": 2, "failed": 0, "opened": 1, "downloaded": 1}}
id는 첫 번째 메시지에서 생성되는 임의의 숫자로 ~/.local/state/omarchy/local-ai/install-id에 저장됩니다. 이는 기계나 사용자로부터 파생된 것이 아니며, Remove가 삭제합니다. hw는 Local AI가 찾은 레시피를 가진 카드 종류 목록이며, running은 실행 중인 모델의 개수, launched는 이 기계에서 모델이 응답한 적이 있는지 여부입니다. actions는 마지막 메시지가 도착한 이후로 시작된 모델 수, 실패한 시작 횟수, 열린 에이전트 수 및 다운로드된 모델 수를 나타냅니다: 총합만 기록하며, 어떤 모델, 에이전트 또는 폴더인지는 기록하지 않습니다. 이 값들은 ~/.local/state/omarchy/local-ai/counts.json에 메시지가 도착할 때까지 대기하므로, 어떤 작업도 손실되거나 두 번 전송되지 않으며, Local AI를 사용할 때 추가적인 데이터는 전송되지 않습니다. 서버는 해당 필드와 날짜만 보관하며, IP 주소나 다른 헤더는 보내지 않습니다. 그 코드는 D1 마이그레이션과 배포 설정이 usage/에 있습니다 (작업자 local-ai-usage 및 usage.sybilsolutions.ai).
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Coding Assistants의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기