AGENTZEROLITE
Dev Harness → GitHub ↗
AGENTZEROLITE

AI 시대를 위한 미니멀 멀티-CLI IDE

A minimalist multi-CLI IDE for the AI era

여러 AI CLI를 한 창에 나란히 띄우고, 명령을 쏘고, 모델끼리 대화시키세요.

Run many AI CLIs side by side, pipe instructions to any of them, and let different models talk to each other.

⬇ Windows 설치판 ⬇ Windows installer 🛍 Microsoft Store 🛍 Microsoft Store ⬇ macOS 테스트 빌드 ⬇ macOS test build ⬇ Ubuntu 테스트 빌드 ⬇ Ubuntu test build ▶ 웹에서 만져보기▶ Try the live demo 🤝 AI ↔ AI 대화 보기🤝 See AI ↔ AI talk 🎙 음성으로 듀얼 멀티태스크🎙 Voice — dual multitask 🎵 Music — 악기 분류🎵 Music — instrument ID 🌐 WebDev + 플러그인🌐 WebDev + Plugins 🔎 Scrap — 윈도우 캡처🔎 Scrap — window capture ⌚ 스마트워치 NEW⌚ Smartwatch NEW 🖥 터미널 · 레이아웃 NEW🖥 Terminal & layout NEW 🛠 설치 옵션🛠 Install options GitHubGitHub
AgentZero Lite — multi-CLI multi-view screenshot
▶ LIVE DEMO

웹에서 직접 만져보는 AgentZero

Try AgentZero in your browser

픽셀아트로 재구성한 실제 셸 — 4가지 모드를 자동 재생하며 실제 동작을 그대로 보여줍니다.

Pixel-art reconstruction of the real shell — auto-plays four modes that mirror the actual UI flow.

← 좌측 아이콘 / 우측 모드 버튼 클릭 ← click activity icons / right-side mode buttons 1–4 모드modes P 자동재생 토글toggle autoplay S 스캔라인 토글toggle scanlines

같은 워크스페이스에서든 다른 워크스페이스에서든, CLI로 돌아가는 AI(Claude, Codex, 종류 무관)에게 명령 한 줄을 바로 꽂아 넣을 수 있습니다. 서로 다른 모델의 AI들을 동시에 띄워두고, 같은 경로로 둘을 대화시킬 수도 있습니다 — 별도 중계 서버나 커스텀 브로커 없이, 모델 간 크로스 대화.

Pipe a single instruction to an AI CLI (Claude, Codex, any model you can run in a shell) living in the same workspace — or in a different one — and have it act. Run two different AI models side by side and let them talk to each other through the same mechanism: cross-model dialogue, no custom broker required.

이 제품이 해주는 일

What it does for you

TERMINAL

진짜 멀티탭 ConPTY

Real multi-tab ConPTY

탭마다 Windows 의 진짜 의사 콘솔(CreatePseudoConsole)이 하나씩 붙습니다 — 흉내가 아닙니다. 화면을 그리는 쪽은 xterm.js 라서, 테마·폰트를 고르고 WPF 오버레이를 그 위에 얹을 수 있습니다.

Every tab gets a real Windows pseudo-console of its own (CreatePseudoConsole) — nothing is pretending. What draws it is xterm.js, which is why themes and fonts are selectable and WPF overlays can sit on top.

WORKSPACES

폴더 = 작업 공간

Folder = workspace

프로젝트마다 탭 세트를 따로 유지합니다. 좌측 사이드바에서 한 번 클릭하면 해당 폴더에서 새 Claude가 바로 시작됩니다.

Each project keeps its own set of tabs. One click in the sidebar = a fresh shell in that directory, ready to launch Claude.

AI ↔ AI

모델 간 티키타카

Cross-model tiki-taka

Claude가 탭 0에서 탭 1의 Codex에게 말을 걸고, Codex가 답하고, 사람은 중간에서 감독만 합니다. 클라우드 중계 없음.

Claude in tab 0 talks to Codex in tab 1, Codex replies, you supervise from the middle. No cloud relay.

🎙 VOICE

손은 키보드, 입은 옆 탭

Hands keyboard, voice the other tab

한 탭은 손가락으로, 다른 탭은 음성으로 동시 진행. Whisper.net 오프라인 STT + Vulkan GPU(AMD/Intel/NVIDIA 공통)로 받아쓴 텍스트가 활성 터미널 AI에 직접 흘러갑니다. 음성 출력(TTS)은 개발 중.

Type into one tab, speak to the other in parallel. Whisper.net offline STT + Vulkan GPU (cross-vendor: AMD/Intel/NVIDIA) feeds the transcribed text straight into the active terminal AI. TTS reply is in development.

CHATBOT

텍스트 / 키 브로커

Text / key broker

도킹 가능한 채팅 패널. 입력한 텍스트를 활성 터미널로 보냅니다. KEY 모드는 Ctrl+C·화살표 같은 제어키도 전송.

A dockable chat pane that forwards text into the active terminal. KEY mode ships raw control keys (Ctrl+C, arrows, Tab) too.

SKILL SYNC

/ 슬래시 매크로

/ slash macros

Claude의 /skills 목록을 자동 파싱해 채팅창의 / 팝업 메뉴로 노출합니다. LLM 호출 없이 매크로로 발사.

Parses Claude's /skills output and exposes it as a / popup menu. Fires as a macro — no LLM round-trip.

NOTE

마크다운 + Mermaid 뷰어

Markdown + Mermaid viewer

워크스페이스 폴더의 .md / Pencil 파일을 바로 렌더링합니다. 다이어그램까지.

Renders .md / Pencil files straight from the workspace folder — including Mermaid diagrams.

CLI

스크립트에서 GUI 구동

Drive the GUI from scripts

AgentZeroLite.exe -cli terminal-send 0 0 "npm test" 한 줄로 원격 제어 가능. WM_COPYDATA + 메모리 맵 기반 IPC.

AgentZeroLite.exe -cli terminal-send 0 0 "npm test" from any script. IPC over WM_COPYDATA + memory-mapped files.

AKKA

액터 감독

Supervised actors

터미널/워크스페이스/봇이 Akka.NET 액터로 감독됩니다. 한 세션이 죽어도 창 전체는 멀쩡.

Terminals, workspaces and the bot live under Akka.NET supervision. One crashing session never takes the window down.

🤝 AI에게 작업시키기 — 자동 핸드셰이크 + 자율 토론

🤝 Tell AIs to work it out — auto-handshake + autonomous discussion

이전 README 의 "1분 레시피"(각 AI 탭에 도구 사용법을 사람이 직접 붙여넣기)는 이제 필요 없습니다. AgentBot 이 첫 접촉 시 핸드셰이크 헤더를 자동으로 prepend 하고, 피어 AI 는 그 헤더만 읽고 bot-chat 프로토콜을 인지해 회신합니다 — 사용자 사전 학습 0회.

The old README "1-minute recipe" (paste a teaching message into each AI tab) is gone. AgentBot now auto-prepends a handshake header on first contact, and the peer AI reads that header and acks via bot-chat on its own — zero user prep.

TRIGGER

한국어 한 줄

One Korean line

"클로드군 코덱스양과 자율토론 5턴이내에 해" · LocalLLM 이 Mode 2 트리거를 인식해 send_to_terminal 자동 발사.

"Claude한테 X해", "토론 시작해", "물어봐줘" — Gemma 4 recognises Mode 2 phrases and emits send_to_terminal with a GBNF-constrained tool call.

HANDSHAKE

첫 메시지에 인라인 첨부

In-band on first message

WorkspaceTerminalToolHost.BuildFirstContactHeader 가 "You are Claude and I am AgentBot..." 헤더를 자동 prepend. bot-chat help + --from 사용법까지 동봉.

WorkspaceTerminalToolHost.BuildFirstContactHeader auto-prepends an "You are Claude and I am AgentBot..." header that documents the bot-chat + --from reverse channel inline. The peer reads, runs -cli help, then acks.

REVERSE

피어 → 봇 콜백

Peer → bot callback

피어가 bot-chat "DONE(...)" --from Claude 실행 → WM_COPYDATA → HandleBotChat → Reactor 가 새 사이클로 wake. 폴링 안 함.

Peer runs bot-chat "DONE(...)" --from Claude → WM_COPYDATA → HandleBotChat → Reactor wakes for a continuation cycle. No read_terminal polling required.

▶ AUTO-DISCUSSION

5-턴 자율토론 라이브 시뮬레이션

Live simulation of a 5-turn autonomous discussion

상단: Claude / Codex 좌우 2분할 · 하단: AgentBot AIMODE — 핸드셰이크 자동 첨부 + 피어 콜백을 그대로 재현.

Top: Claude / Codex split · Bottom: AgentBot AIMODE — faithful recreation of auto-handshake injection + peer callback.

🎙 음성 — 손과 입을 동시에 쓰는 듀얼 멀티태스킹

🎙 Voice — dual multitasking, hands & voice in parallel

음성 입력은 AgentBot 에 직결돼 있습니다. 마이크에 말하면 오디오가 로컬에서 받아쓰여지고(Whisper.net 오프라인 GGML, 클라우드 안 거침), 그 텍스트는 채팅창에 직접 타이핑한 것과 동일한 경로로 활성 AI CLI 탭에 흘러 들어갑니다.

Voice input is wired straight into AgentBot. Speak into the mic, the audio is transcribed locally (Whisper.net offline GGML, no cloud), and the resulting text takes the same path as if you had typed it into the chat box — straight to whichever AI CLI tab is active.

왜 의미 있나 — 듀얼 멀티태스크 플레이. 한 터미널이 키보드로 점령돼 있을 때(코드 작성, Claude diff 검토), 두 번째 터미널은 손을 대지 않고 음성으로 구동할 수 있습니다. AI 대화 두 개가 동시에 돌고 사람 한 명이 둘 다 감독 — AIMODE 의 모델 간 티키타카가 이젠 본인 두 입력 채널(손/입) 간 티키타카로 확장됩니다.

Why it matters — the dual-multitask play. While one terminal is taking your keyboard (writing code, code-reviewing Claude's diff), you can drive a second terminal with your voice without lifting your hands. Two parallel AI conversations supervised by one human — AIMODE's tiki-taka between models extends here into tiki-taka between your own two input channels (hands / voice).

Tab 0 — Claude (keyboard) Tab 1 — Claude (voice) │ │ │ you type: │ you say into the mic: │ "refactor this function ..." │ "오늘 작업한 PR 요약해줘" │ │ │ │ │ ▼ │ ▼ Whisper.net (Vulkan) │ Claude works │ AgentBot transcribes │ │ │ │ │ ▼ │ ▼ CHT mode auto-send │ reply in tab 0 │ session.WriteAndSubmit └───────────────────────────────────────┴─────────────────────────────────────── one supervisor (you), two streams running in parallel
▶ VOICE LIVE

음성 → 터미널 실시간 라이브

Voice → terminal, live

상단: Claude 터미널 · 하단: AgentBot CHT 모드 + 음성 툴바 — 실제 마이크/VAD/Whisper/자동전송 흐름을 그대로 재현.

Top: Claude terminal · Bottom: AgentBot CHT mode + voice toolbar — faithful recreation of mic / VAD / Whisper / auto-send flow.

STT

Whisper.net 오프라인

Whisper.net offline

GGML small(~466 MB) / medium(~1.5 GB) 모델이 첫 사용 시 자동 다운로드. %USERPROFILE%\.ollama\models\agentzero\whisper\ 캐시. 클라우드 안 거침.

GGML small (~466 MB) / medium (~1.5 GB) models, downloaded on first use to %USERPROFILE%\.ollama\models\agentzero\whisper\. Nothing leaves the machine.

GPU

크로스 벤더 Vulkan

Cross-vendor Vulkan

CPU + Vulkan 동시 번들 (~63 MB 추가). AMD · Intel · NVIDIA 가 같은 바이너리로 가속. CUDA 미포함 (cuBLAS ~750 MB 비대화 회피).

CPU + Vulkan runtimes bundled (~63 MB extra). AMD · Intel · NVIDIA all accelerate the same binary. CUDA stays out (its ~750 MB cuBLAS payload is disproportionate).

MULTI-GPU

자동 베스트 + 수동 픽커

Auto-best + manual picker

설정탭의 GPU 디바이스 콤보 — Auto 가 벤더 + VRAM 휴리스틱으로 베스트 어댑터 선정 (NVIDIA dGPU > AMD dGPU > Intel Arc > iGPU). 노트북 dGPU+iGPU 환경도 자동 처리, 잘못 잡혔을 땐 한 클릭 오버라이드.

Voice settings expose a GPU device combo — Auto picks the best adapter via vendor + VRAM heuristic (NVIDIA dGPU > AMD dGPU > Intel Arc > iGPU). Handles laptop dGPU + iGPU correctly; one-click manual override if it picks wrong.

🚧 TTS

음성 출력은 개발 중

TTS reply — in development

Off / Windows SAPI / OpenAI tts-1 설정 자체는 들어와 있지만, 터미널 AI 출력을 받아 스피커로 뱉어주는 응답 스트리밍 파이프라인은 아직 미완. 지금은 음성 입력 전용.

Off / Windows SAPI / OpenAI tts-1 settings are wired up, but the response-streaming pipeline that pipes terminal AI output into the speaker is still under development. Today voice is input-only.

🎵 Music — 악기 분류 + 실시간 스펙트럼 NEW · v0.10

🎵 Music — instrument classification + live spectrum NEW · v0.10

Voice 가 AgentZero 에게 듣고 말하기를 가르쳤다면, Music 은 듣고 이해하기를 더합니다. Settings → 🎵 Music 에서 MIT 의 ast-finetuned-audioset-10-10-0.4593 (Audio Spectrogram Transformer, 86.6M params, AudioSet 527 클래스) 를 ONNX Runtime 으로 슬라이딩 10초 윈도우에 대해 구동. 두 가지 입력 소스: 마이크 (라이브 악기) 또는 시스템 출력 (WASAPI 루프백) — 가상 케이블 없이 Spotify / YouTube / 게임이 스피커로 재생 중인 그 소리를 그대로 분석. 1.5초마다 재추론, Top-K 라벨이 in-place 갱신되고 라벨 위에는 64밴드 로그 주파수 dBFS 스펙트럼이 약 30 Hz 로 다시 그려집니다.

Voice taught AgentZero to listen and speak; Music adds listen and understand. Settings → 🎵 Music runs MIT's ast-finetuned-audioset-10-10-0.4593 (Audio Spectrogram Transformer, 86.6M params, 527 AudioSet classes) via ONNX Runtime on a sliding 10-second window. Two input sources: microphone (live instrument) or system output (WASAPI loopback) — analyse whatever Spotify / YouTube / a game is currently playing through your speakers, no virtual cable. Re-infers every 1.5 s; the top-K labels list updates in place and a 64-band log-frequency dBFS spectrum repaints at ~30 Hz above the labels.

┌─ Settings → 🎵 Music ──────────────────────────────────────────────┐
│ Source  [▼ System Output  — WASAPI loopback, no virtual cable ] │
│ Device  [▼ ★ Default — current Windows playback device       ] │
│ Window  10 s    Top-K  5                                  │
│                                                                    │
│ ▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  (mic / loopback level)  [STOP]│
│ SPECTRUM  (30 Hz – 8 kHz, log-frequency)                       │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │  ▆█▆▃▃ ▆▆ ▃ ▆█▆▃ ▃▃▆ ▆ ▃▃ █▆ ▆▆▆▆▆ ▃▃ ▃                      │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ TOP LABELS  (live · sliding 10 s window)                       │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ tick #14 · window 10.0s · mel 1024×128 · pre 12 ms · inf 244 ms│ │
│ │ ────────────────────────────────────────────────────────────── │ │
│ │ 71.2% ██████████████████████  Electric guitar                │ │
│ │ 18.4% █████                   Guitar                         │ │
│ │ 12.1% ████                    Music                          │ │
│ └────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────┘

AST AudioSet ONNX

AST AudioSet ONNX

86.6M params, AudioSet 527 클래스 (악기 / 장르 / 환경음 / 음성 전부). Microsoft.ML.OnnxRuntime 1.20 CPU 추론 (~200–400 ms/pass on 모던 x64), GPU 의존성 없음. onnx-community 허깅페이스 미러에서 사전 변환본 사용 — Python optimum-cli 우회 불필요.

86.6M params, AudioSet 527 classes (musical instruments, genre cues, environmental sounds, voice). Microsoft.ML.OnnxRuntime 1.20 CPU inference (~200–400 ms/pass on modern x64), no GPU dependency. Ships the pre-converted ONNX bundle from the onnx-community HuggingFace mirror — no Python optimum-cli detour.

듀얼 캡처 소스

Dual capture source

마이크 — NAudio WaveInEvent (Voice 와 동일 파이프라인). 시스템 출력 — WasapiLoopbackCapture + NAudio 샘플 프로바이더 체인 (BufferedWaveProvider → StereoToMono → WdlResampler(16k) → SampleToWaveProvider16) 으로 임의 믹서 포맷을 AST 의 16 kHz 모노 PCM16 으로 정규화.

Microphone — NAudio WaveInEvent (same pipeline Voice uses). System Output — WasapiLoopbackCapture + NAudio sample-provider chain (BufferedWaveProvider → StereoToMono → WdlResampler(16k) → SampleToWaveProvider16) normalizes any mixer format to AST's required 16 kHz mono PCM16.

슬라이딩 윈도우 + 라이브 스펙트럼

Sliding window + live spectrum

롤링 10초 PCM 버퍼 + Interlocked 단일-flight 게이트로 1.5초마다 재추론 — ONNX 워밍업 중에도 백로그 무축적. 별도 2048-pt Hann FFT 가 64 로그 밴드 (30 Hz–8 kHz, dBFS -60/-3 정규화) 를 약 30 Hz 로 WPF Canvas 에 다시 그림.

Rolling 10 s PCM buffer + interlocked single-flight gate re-infers every 1.5 s — no backlogged ticks during ONNX warm-up. Independent 2048-pt Hann FFT computes 64 log-spaced bands (30 Hz–8 kHz, dBFS-normalized -60/-3) and repaints the WPF Canvas at ~30 Hz.

music-curator 전문가

music-curator specialist

하네스 v1.8.0 — 7번째 specialist 가 AST serving contract, mel 전처리 컨벤션, WASAPI 루프백 함정을 소유. 새 음악 모델 (MERT / CLAP / Qwen-Audio) 추가 전 mandatory consult — UI 재설계 없이 IMusicClassifier 시암으로 확장.

Harness v1.8.0 — 7th specialist owns AST serving contract, mel preprocessing conventions, WASAPI loopback pitfalls. Mandatory consult before any new music model (MERT / CLAP / Qwen-Audio) — extends through the IMusicClassifier seam without UI redesign.

🌐 WebDev — 인앱 샌드박스 + 플러그인 시스템 NEW · v0.4

🌐 WebDev — in-app sandbox + plugin system NEW · v0.4

AgentBot 옆 지구본 아이콘을 누르면 풀스크린 WebDev 작업공간이 열립니다. v0.4 부터는 좁은 Settings 탭이 아니라, 좌측 샘플 리스트 + 우측 풀폭 WebView2 캔버스. 핵심: C# 안 건드리고 작은 AI 도구를 만들 수 있다는 것. AgentZero 의 네이티브 능력(LLM · TTS / STT · 음성노트 · 요약)을 window.zero.* JS 브리지로 노출하고, 웹 도구는 그걸 호출하는 평범한 HTML/JS 폴더로 배포됩니다.

Click the globe icon next to AgentBot — full-window WebDev workspace opens. Promoted from a cramped Settings tab in v0.4 to a sample list on the left + full-width WebView2 canvas on the right. The point: build small AI tools without touching C#. AgentZero exposes its native capabilities (LLM, TTS / STT, voice-note pipeline, summary) as a window.zero.* JS bridge; web tools call those through it and ship as plain HTML / JS folders.

┌─ .NET Native ──────────┐ ┌─ WebView2 (Browser) ────────┐ │ │ │ │ │ NAudio → VAD → Whisper ─────→ note.transcript event │ LlmGateway streaming ───────→ chat.token / chat.done │ │ │ ↑ │ │ WebDevHost ←────────────── invoke('chat.send', …) │ WebDevBridge (JSON) │ │ invoke('summarize', …) │ │ │ invoke('note.start', …) └────────────────────────┘ └─────────────────────────────┘ single Whisper / single LLM session — same bridge for built-ins + plugins
BRIDGE

window.zero.* 표면

window.zero.* surface

chat.send/stream, voice.speak/providers, VAD-게이트 note.start/pause/resume/setSensitivity, RMS 미터를 위한 onAmplitude/onSpeaking, 길이 분할 재귀 summarize. 모든 호출은 Promise. STA 위반 없이 백그라운드 이벤트도 UI 디스패처 통과.

chat.send/stream, voice.speak/providers, VAD-gated note.start/pause/resume/setSensitivity, onAmplitude/onSpeaking for RMS meters, length-chunked recursive summarize. All Promise-based. Background events marshal through the UI dispatcher — no STA violations.

.ZIP

로컬 ZIP 설치

Local ZIP install

WebDev → + Install Plugin → From .zip…. 단일 top-folder 자동 언래핑. 엄격한 manifest 검증. 실패는 staging-dir 만 정리, 부분 쓰기 X.

WebDev → + Install Plugin → From .zip…. Auto-unwraps a single top-level folder. Strict manifest validation. Failure cleans the staging dir — never partial-writes.

GIT URL

공개 GitHub URL 설치

Public GitHub URL install

github.com/owner/repo/tree/main/path/to/plugin 같은 폴더 URL 붙여넣기. raw 로 manifest fetch → Trees API 로 폴더 enum → 파일 다운로드. 로컬 git CLI 의존 없음.

Paste a folder URL like github.com/owner/repo/tree/main/path/to/plugin. Raw-fetch the manifest, walk the Trees API for the folder, download every file. No local git CLI required.

UNINSTALL

한 클릭 제거

One-click uninstall

샘플 리스트의 플러그인 행 우측에 × 버튼. 클릭 → 확인 → 마운트 폴더 삭제 + 메뉴 자동 갱신. 빌트인은 보호.

Each plugin row carries a × button on the right. Click → confirm → mounted folder removed + menu refreshes. Built-ins are protected.

🎙 voice-note — 첫 reference 플러그인

🎙 voice-note — first reference plugin

Project/Plugins/voice-note 에 본체. 4 파일 (manifest + html + css + js) 만 있으면 STT 음성 저널이 동작합니다. 컴파일에 포함되지 않는 외부 폴더 — 플러그인 코드가 릴리스 빌드를 망가뜨릴 수 없는 구조. 자기 설치 가능: GitHub URL 그대로 WebDev 에 붙여넣으면 같은 레포가 자기 자신을 설치합니다.

Body lives at Project/Plugins/voice-note. Four files (manifest + html + css + js) and the STT voice journal works. Outside the build — plugin code can't break a release. Self-installable: paste the GitHub folder URL into WebDev and the same repo installs itself back.

CAPTURE

VAD 게이트 STT

VAD-gated STT

전체 녹음 X. 발화 단위로만 Whisper 호출, 단어 사이의 침묵은 자동 폐기. 라이브 VU 미터 + threshold 마커 — 자기 음성이 임계값 위인지 한눈에. Settings/Voice 의 STT 언어/디바이스/뮤트 자동 상속.

No full recording. Whisper fires per utterance only; gaps are dropped. Live VU meter + threshold marker — see at a glance whether your voice clears the bar. Inherits STT language / device / mute switch from Settings/Voice automatically.

SUMMARY

길이 분할 재귀 요약

Length-chunked recursive summary

Max-token 초과를 두려워 말 것. 6000자 이상이면 sentence boundary 에서 절반 분할 → 재귀 요약 → 합쳐서 한 번 더 통합. chat.send 와 별도 일회성 세션이라 채팅 컨텍스트 오염 X.

Don't fear max-token overflows. Past 6000 chars, split on a sentence boundary → summarize halves recursively → merge + one consolidating pass. Uses a one-shot LLM session so the cached chat session isn't polluted.

STORAGE

3-계층 IndexedDB

3-tier IndexedDB

raw 타임라인 (시간대별 발화 텍스트) · summary · meta (모델/토큰/요약시각). debounced 400ms 쓰기 — 빠른 제목 타이핑이 디스크 폭주 X. export/import 는 후속.

Raw timeline (timestamped utterances) · summary · meta (model / token / summarized-at). Debounced 400 ms writes — rapid title typing won't thrash disk. Export / import is a future drop.

voice-note 는 이 표면이 충분하다는 존재 증명 — 다음 플러그인(트랜스크립트 export, 멀티노트 검색, …)은 같은 브리지 위에 빌드합니다. 직접 만들어 보고 싶다면 Project/Plugins/README.md 의 manifest 계약 + 양 채널 설치 가이드를 출발점으로.

voice-note is the existence proof that the surface is enough — the next plugins (transcript export, multi-note search, …) build on the same bridge. To roll your own, start from the manifest contract + dual-channel install guide in Project/Plugins/README.md.

🎬 Agent Stage — 일하는 에이전트를 무대 위에 NEW · 공식 플러그인

🎬 Agent Stage — your agents at work, on stage NEW · official plugin

워크스페이스마다 색이 다른 무대, 그 위에 터미널마다 에이전트 아바타 — Claude ✳, Codex ◆, AgentOne ❖, Netclaw ✦, 셸 ›_. 에이전트가 일하는 동안에는 생각 링이 돌고 코드 기호가 튀어 오르고 타이핑 막대가 출렁입니다. 당신을 기다리면 빨갛게 맥박치고, 일을 마치면 터집니다. 아바타를 클릭하면 그 터미널로 바로 이동합니다. Plugins 페이지 → Install official plugin → Agent Stage. (크로스 플랫폼 판)

A stage per workspace, each in its own colour, and an agent avatar per terminal — Claude ✳, Codex ◆, AgentOne ❖, Netclaw ✦, a shell ›_. While an agent works its thinking ring spins, code glyphs rise and typing bars bounce; when it needs you it pulses red, and it bursts when it finishes. Click an avatar to jump to its terminal. Plugins page → Install official plugin → Agent Stage. (Cross-platform edition)

Agent Stage plugin — workspaces as zones, agents working

⑂ 서브에이전트 크루 NEW

⑂ The sub-agent crew NEW

Claude가 일을 나눠 서브에이전트(Agent / Task 도구)를 띄우면, 그 하나하나가 Claude 아바타 위의 크루로 날아가 자리를 잡습니다. 역할(lyricist, genre-scout, Explore, Plan …)마다 색과 이름이 다르고, 일하는 동안 연결선 위로 작업이 흐르며, 서브에이전트가 띄운 서브에이전트는 그 바깥으로 펼쳐집니다. 끝나면 보고가 혜성처럼 부모에게 돌아가고 천천히 사라집니다. 마우스를 올리면 맡은 일 · 마지막 도구 · 도구 호출 수 · 경과 시간. Claude Code가 남기는 자기 기록을 읽을 뿐, 훅도 설정도 필요 없습니다.

When Claude splits a job into sub-agents (the Agent / Task tool), each one flies out to a seat in a crew above its Claude avatar. Every role (lyricist, genre-scout, Explore, Plan …) gets its own colour and name, work flows along the tether while it runs, and a sub-agent's own sub-agents fan out beyond it. When one finishes, its report flies back to the parent like a comet and it slowly fades. Hover for its task, last tool, tool count and elapsed time. It reads the records Claude Code already keeps — no hook, nothing to set up.

Agent Stage — a Claude session with eight sub-agents as a crew

🔎 Scrap — 윈도우 스파이 + 텍스트 캡처 NEW · v0.9.1

🔎 Scrap — window spy + text capture NEW · v0.9.1

ActivityBar 의 새 Scrap 아이콘을 누르면 풀스크린 캡처 도구가 열립니다. 크로스헤어를 드래그해서 아무 보이는 창에 떨어뜨리거나, HWND 를 직접 입력하면 — 그 창의 읽을 수 있는 텍스트를 자동 스크롤하며 잡아옵니다. 코드 에디터의 긴 파일, 브라우저의 무한 스크롤 페이지, 채팅 로그까지. 각 캡처는 logs/scrap/yyyy-MM-dd-HH-mm-ss-scrap.txt 로 저장되며 프리뷰 패널이 라이브로 채워집니다.

Click the new Scrap icon on the ActivityBar — full-window capture tool opens. Drag the crosshair onto any visible window (or type an HWND) and Scrap pulls the readable text out, auto-scrolling through long content: long source files, infinite-scroll web pages, chat logs. Each capture lands as logs/scrap/yyyy-MM-dd-HH-mm-ss-scrap.txt while the preview pane fills live.

┌─ Scrap toolbar ──────────────────────────────────────┐ │ [⊕ crosshair] [HWND…] [SELECT] │ ├─ WINDOW_INFO ───────────┬─ ELEMENT_TREE (Flutter/CEF) ┤ │ Handle · Class · Title │ Pane "code-editor" │ │ Rect · PID · Framework │ ├─ Edit "main.cs" │ ├─────────────────────────┴─────────────────────────────┤ │ [▶ CAPTURE] CLR CPY DIR READY RANGE [..]~[..] DLY │ ├────────────────────────────────────────────────────────┤ │ captured text streams in here as the scroll advances … └────────────────────────────────────────────────────────┘
PICKER

크로스헤어 드래그 + HWND 입력

Drag crosshair + HWND input

툴바의 크로스헤어 위젯을 마우스로 잡아 드래그해서 다른 창 위에 놓으면 root HWND 가 자동 인식됩니다. 직접 0x... 핸들 입력도 가능. 선택 즉시 클래스/타이틀/프로세스/스타일/프레임워크 (Native · Flutter · Electron) 가 WINDOW_INFO 패널에 채워집니다.

Grab the crosshair widget and drag it onto another window — the root HWND auto-detects. Or type a 0x... handle directly. WINDOW_INFO fills instantly with class / title / process / style / framework (Native · Flutter · Electron).

4 STRATEGIES

4단계 폴백 캡처 체인

4-strategy fallback chain

UIA TextPattern → 포커스 영역 UIA 스크롤 → 클립보드 스크롤 (v0.9.1 신규) → ScrollPattern 트리워크 → WM_VSCROLL 폴백 순서로 첫 성공까지 진행. 한 앱에 막혀도 다음 전략이 받아냅니다.

UIA TextPattern → focused-area UIA scroll → clipboard scroll (new in v0.9.1) → ScrollPattern tree-walk → WM_VSCROLL fallback, in priority order. If one app blocks a strategy, the next one picks up.

CLIPBOARD SCROLL

IntelliJ · Chrome · VSCode 도 캡처

Works on IntelliJ · Chrome · VSCode

Swing/AWT (IntelliJ) 처럼 UIA ScrollPattern 을 노출하지 않는 앱도 잡힙니다. Ctrl+Home → 루프 Ctrl+A → Ctrl+C → 클립보드 읽기 → PageDown, 라운드별로 새 텍스트 diff 만 emit. 캡처 끝나면 원본 클립보드 복원.

Even apps that don't expose UIA ScrollPattern (Swing / AWT like IntelliJ) get captured. Ctrl+Home → loop Ctrl+A → Ctrl+C → read clipboard → PageDown, emitting only the new tail per round. Restores the original clipboard on finish.

LIVE PREVIEW

라이브 미리보기 + 파일 저장

Live preview + file output

캡처 진행 중 미리보기 패널이 새 텍스트만 받아 누적 — 화면 깜빡임 없음. 동시에 logs/scrap/*.txt 에 실시간 append. STOP 누르면 즉시 종료 + 부분 결과 보존.

The preview pane receives only the new tail per round — no flicker. Concurrently appends to logs/scrap/*.txt in real time. STOP cancels instantly and preserves the partial result.

Origin (AgentWin) 의 Scrap 모듈을 Lite 의 오버레이 모델에 맞춰 포팅. 2026-04-27 스냅샷 문서가 "REJECT-3 — 경량 정체성 충돌" 로 거절했던 컴포넌트지만, Lite 가 standalone 풀스펙 으로 재정의되면서 (멀티-디바이스/클러스터는 AgentZero PRO 로 분리) M0019 로 정식 채택. 후속 단계로 AgentZeroLite.exe -cli scrap … verb 그룹과 AIMODE 함수콜 (scrap_capture, scrap_read) 이 예정.

Ported from Origin (AgentWin)'s Scrap module, adapted to Lite's overlay-panel model. The 2026-04-27 snapshot doc had marked it "REJECT-3 — conflicts with the lightweight identity"; after Lite was repositioned as standalone full-spec (multi-device / cluster moves to AgentZero PRO), M0019 brought it in. Next up: an AgentZeroLite.exe -cli scrap … verb group and AIMODE function calls (scrap_capture, scrap_read).

⌚ 스마트워치 — 손목 위의 액터 NEW · v0.24

⌚ Smartwatch — an actor on your wrist NEW · v0.24

ActivityBar 의 Wearable 항목이 AgentZeroWearable.exe 를 띄우면, 하나의 BLE 링크로 시계의 세 앱을 동시에 서비스합니다 — AskBot 은 진짜 Akka 리모팅 피어(PDU 를 BLE 로 터널링), Chat 은 음성을 양방향으로, Claude HUD 는 :8765 로 들어온 Claude Code 훅의 세션 텔레메트리를 띄웁니다. 시계는 터미널이 아니라 피어입니다.

The Wearable entry on the ActivityBar starts AgentZeroWearable.exe, which serves three watch apps at once over a single BLE link — AskBot as a real Akka remoting peer (PDUs tunnelled over BLE), Chat carrying audio both ways, and the Claude HUD showing session telemetry posted by Claude Code hooks to :8765. The watch is a peer, not a terminal.

설치판 전용. 웨어러블 호스트는 Windows 설치판(Setup.exe / ZIP)에만 들어 있습니다. Microsoft Store 판과 macOS 판에는 ⌚ 항목이 나타나지 않습니다 — BLE 와 직접 만든 시계가 필요한, 개인 개발 성격이 강한 기능이라서입니다.

Installer build only. The wearable host ships only in the Windows installer / ZIP. The Microsoft Store and macOS editions do not show the ⌚ entry — it needs BLE and a home-built watch, and is very much a personal-workbench feature.

The watch apps fed by one host over one BLE link: AskBot, Chat, the Claude HUD and the device-wide Settings
NO DOUBLE SETUP

모델은 두 번 설정하지 않습니다

Nothing model-shaped is configured twice

호스트는 AgentZero 가 이미 설치한 번들을 그대로 읽습니다 — 목소리는 Settings → Voice 의 Supertonic, 귀는 같은 화면의 Whisper(Vulkan→CPU 프로브 포함), 두뇌는 Settings → LLM 의 IAgentLoop. 샘플이 들고 있던 466줄짜리 TTS 복사본은 버렸습니다.

The host reads the bundles the app already installed — voice from Settings → Voice (Supertonic), ear from the same screen (Whisper, Vulkan→CPU probe included), brain from Settings → LLM (IAgentLoop). The sample's own 466-line TTS copy was dropped.

SECOND PROCESS

일부러 별도 프로세스

A second process on purpose

BLE 센트럴이 WinRT 라 Windows SDK TFM 이 필요합니다. 메인 exe 를 그 쪽으로 옮기면 문서·스크립트·인스톨러가 인용하는 빌드 출력 경로가 통째로 바뀌므로 호스트만 분리했습니다. 잡 오브젝트가 호스트 수명을 GUI 에 묶어, 강제 종료 뒤 고아 프로세스가 BLE 와 :8765 를 붙든 채 남는 일을 막습니다.

The BLE central is WinRT, which needs a Windows-SDK target framework. Moving the main exe there would move the build output path every doc, script and installer entry quotes — so only the host went. A Job Object ties its lifetime to the GUI, so a force-kill cannot leave an orphan holding the radio and :8765.

RECONNECT

시계를 재부팅해도 살아남습니다

Survives a watch reboot

기기를 리부팅하고 재접속하면 링크가 죽던 문제를 고쳤습니다. 원인은 두 가지 — 세션을 놓기 전에 MaintainConnection 을 지우지 않은 것, 그리고 BLE 알림 경계에서 잘린 UTF-8. 줄 조립을 바이트 단위로 바꿔 한 글자가 두 알림에 걸쳐도 깨지지 않습니다.

Rebooting the device and reconnecting used to kill the link. Two causes — the session was disposed without clearing MaintainConnection, and UTF-8 cut at a BLE notification boundary. Line assembly is byte-level now, so a character split across two notifications survives.

CROSS-REPO

펌웨어 쪽 버그도 함께 고쳤습니다

The firmware bug got fixed too

호스트와 기기 시리얼 로그를 나란히 찍어 AskBot 의 ASSOCIATE 레이스를 찾았습니다 — Connect 가 구독 완료가 아니라 연결만 기다리고 있었고, 바로 위 주석은 줄곧 "connected and subscribed" 라고 적혀 있었습니다. 형제 저장소에 직접 고쳐 넣어 5574ms → 1547ms.

Capturing the host and device serial logs side by side found AskBot's ASSOCIATE race — Connect waited for the link, not for the subscribe, while the comment right above it had always said "connected and subscribed". Fixed in the sibling repo itself: 5574ms → 1547ms.

펌웨어는 별도 저장소 psmon/Arduino 에 있습니다(위 그림도 그쪽에서 실제 LVGL 레이아웃으로 생성됩니다). USB 로 기기를 빌드·플래시·디버깅하는 법, 호스트와 기기 로그를 나란히 읽는 법, 아두이노 계열이 아닌 보드를 들일 때의 체크리스트는 웨어러블 기기 문서에 별도로 정리돼 있습니다.

The firmware lives in its own repo, psmon/Arduino — which is also where the picture above is generated from the real LVGL layouts. Building, flashing and debugging a device over USB, reading the host and device logs side by side, and the checklist for bringing in a non-Arduino board are kept on their own page: Wearable device.

🖥 터미널 · 레이아웃 — 백엔드 하나로 NEW · v0.24

🖥 Terminal & layout — down to one backend NEW · v0.24

터미널 백엔드가 하나로 정리됐습니다 — WebView2 안의 xterm.js, 그리고 그것을 먹이는 ManagedConPtyHost(Windows 10 1809 부터 있는 CreatePseudoConsole 를 kernel32 P/Invoke 로 직접 호출). 그 결과 앱은 네이티브 터미널 DLL 을 전혀 배포하지 않습니다. 이전 백엔드는 업스트림 지원이 끊겼고 WPF 에서 제어하기 어려운 수준이 됐습니다.

The terminal is down to one backend — xterm.js in a WebView2, driven by ManagedConPtyHost, our own pseudo-console over plain kernel32 P/Invoke (CreatePseudoConsole, present since Windows 10 1809). The app therefore ships no native terminal DLLs at all. The backend it replaced had lost upstream support and had become hard to control from WPF.

NO NATIVE DLLS

조용히 깨지던 복사 단계가 사라졌습니다

A copy step that failed silently is gone

conpty.dll · Microsoft.Terminal.Control.dll 과 CI.Microsoft.* 패키지가 전부 빠졌고, 그와 함께 $(NuGetPackageRoot) 경로를 하드코딩한 복사 단계도 없어졌습니다. 패키지 버전을 올리면 그 단계가 조용히 실패해서, 앱은 뜨는데 터미널 탭만 안 열리곤 했습니다.

conpty.dll, Microsoft.Terminal.Control.dll and the CI.Microsoft.* packages are gone, and with them the copy step with hard-coded $(NuGetPackageRoot) paths. Bump a package version and that step failed silently — the app started, the terminal tabs did not.

DEC 2026

커서가 화면을 돌아다니던 문제

The cursor that skittered around

Ink 계열 TUI(Claude Code · Codex)는 화면을 지우고 커서를 홈으로 보낸 뒤 프레임 전체를 다시 그립니다. 그걸 ESC[?2026h…l 로 감싸 "중간을 보여주지 말라"고 말하는데 xterm.js 5.5.0 은 이 모드를 구현하지 않습니다. 그래서 호스트가 프레임을 모았다가 한 번에 넘깁니다 — 렌더러는 한 번만 그립니다.

Ink-style TUIs (Claude Code, Codex) repaint by clearing, homing and redrawing the whole frame, wrapped in ESC[?2026h…l to say "don't show anyone the middle of this". xterm.js 5.5.0 does not implement that mode, so the host holds the frame back and hands it over as one write — the renderer paints once.

THEME · FONT

테마 7종 + JetBrains Mono 동봉

7 themes + JetBrains Mono, shipped

Dark+ · One Dark · Solarized Dark · Gruvbox Dark · Nord · Tokyo Night · Custom. 폰트는 JetBrains Mono 를 동봉하고(OFL 1.1, 라이선스 동행), 크기·행간까지 설정에서 고릅니다. 렌더러가 메시지로 받으므로 살아 있는 탭에 즉시 적용 — 의사 콘솔은 건드리지 않습니다.

Dark+, One Dark, Solarized Dark, Gruvbox Dark, Nord, Tokyo Night, Custom. JetBrains Mono ships with the app (OFL 1.1, licence travels with it), and size and line height are settings too. The renderer takes it as a message, so a change lands on live tabs without disturbing their pseudo-console.

ENVIRONMENT

자식 환경은 상속이 아니라 조립

The child environment is built, not inherited

GUI 를 띄운 쉘의 환경을 그대로 물려주면, IDE 터미널에서 딸려온 NO_COLOR=1 하나가 모든 탭의 색을 꺼버립니다. 이제 필요한 것만 조립합니다 — COLORTERM=truecolor 를 켜고, CLAUDE_CODE_* 같은 표식은 버립니다. 사용자가 연 탭은 중첩된 에이전트 세션이 아니기 때문입니다.

Handing a terminal child whatever launched the GUI is how one NO_COLOR=1 picked up from an IDE terminal switched colour off in every tab. The environment is assembled now — COLORTERM=truecolor on, CLAUDE_CODE_* markers dropped, because a tab the user opened is not a nested agent session.

┌─ layout ─────────────────────────────────────────────┐ │ -cli layout dump → 지금 화면 구조 JSON / shape as JSON │ -cli layout split-right Panel(H:[codex 1] [CMD 2]) │ -cli layout float · dock 떼고 / 되돌리고 detach / rejoin │ -cli layout workspace 6 전환 — 분할까지 그대로 복원 └──────────────────────────────────────────────────────┘
SPLIT · DETACH

편법이 아닌 정식 도킹

Real docking, not a workaround

분할·분리·재도킹이 프레임워크의 공식 경로를 탑니다. 페인 머리의 작은 ▽ 버튼은 탭 목록을 여는(탭 클릭과 중복되던) 기능 대신 떼어내기가 됐고, 이미 떼어낸 창에서는 같은 버튼이 합류가 됩니다. 떼어낸 창은 타이틀바가 없고, 되돌리면 원래 있던 자리로 돌아갑니다.

Splitting, detaching and re-docking go through the framework's own path. The small ▽ in the pane header — which used to open a tab list, duplicating what clicking a tab already does — is now detach, and in a window that is already detached the same button is rejoin. A detached terminal has no title bar, and docking it back returns it where it came from.

MEMORY

워크스페이스가 분할을 기억합니다

A workspace remembers its split

워크스페이스를 옮겼다 돌아오면 배치가 평탄해지던 문제를 고쳤습니다. 이제 나갈 때 배치를 저장하고 재시작 뒤에도 복원합니다. 저장된 배치는 그대로 재생하지 않고 지금 있는 탭과 대조합니다 — 자리를 비운 사이 탭이 닫혔거나 늘었을 수 있으니까요.

Leaving a workspace and coming back used to flatten it. The arrangement is stored on the way out and restored — across a restart too. A stored layout is never replayed as-is: it is reconciled with the tabs that exist now, because a workspace can gain and lose tabs while it is not the one on screen.

SELF-TEST

창을 CLI 로 몹니다

The window is driven from the CLI

탭 추가·분할·분리·재도킹·패널 접기까지 -cli layout … 로 실행하고, dump 로 결과 구조를 받습니다. 마우스 없이 재현·검증할 수 있어서, 탭이 무한히 왔다 갔다 하는 루프도 즉시 잡고 끌 수 있습니다. 같은 명령에 단축키를 매핑할 수 있고 기본값은 꺼짐입니다.

Add a tab, split, detach, re-dock, collapse the panel — all as -cli layout …, with dump returning the resulting shape. Reproducible without a mouse, which is how a runaway tab-switching loop gets caught and killed instead of fought. The same commands can be bound to keyboard shortcuts, off by default.

TUI ANIMATION

입력창 애니메이션 끄기

Turn the prompt animation off

일부 모델은 입력칸 뒤에 애니메이션을 그려서, 끊임없이 다시 칠하는 터미널에서는 방해가 됩니다. CLI 정의의 체크박스 하나로 해당 도구가 실제로 지원하는 스위치만 붙입니다 — 모르는 도구에는 아무것도 붙이지 않습니다. 인식 못 하는 인자는 보통 실행 자체를 실패시키기 때문입니다.

Some models draw an animation behind the prompt, which is distracting on a terminal that repaints continuously. A checkbox on the CLI definition appends the switch that tool actually documents — and nothing at all for a tool without one, because an argument a program does not recognise is usually fatal at launch.

작동 방식 (짧게)

How it works (in short)

IPC

WM_COPYDATA + MMF

WM_COPYDATA + MMF

CLI가 GUI에 명령을 보낼 땐 Windows의 WM_COPYDATA, 응답은 네임드 메모리 맵 파일에서 폴링합니다. 기본 5초 타임아웃, --no-wait로 fire-and-forget.

Commands travel via WM_COPYDATA, responses come back through named memory-mapped files. Default 5s poll; --no-wait skips it entirely.

LOCAL

전부 로컬

Everything local

브로커 서버도, 클라우드 중계도 없습니다. 두 AI가 서로의 텍스트를 교환해도 모든 것은 같은 Windows 사용자 세션 안에서만.

No broker server, no cloud relay. When two AIs exchange text, everything stays inside one Windows user session.

ACTORS

Stage → Workspace → Terminal

Stage → Workspace → Terminal

Akka.NET 액터 트리로 터미널 생명주기·라우팅·장애 격리를 관리합니다. 탭이 죽어도 다른 탭은 살아남습니다.

An Akka.NET actor tree manages lifecycle, routing and fault isolation. A crashing tab never takes the rest down.

ENGINE

관리 코드 ConPTY + xterm.js

Managed ConPTY + xterm.js

터미널은 WebView2 안의 xterm.js 하나뿐이고, 의사 콘솔은 CreatePseudoConsole 을 직접 부르는 우리 코드입니다. 네이티브 터미널 DLL 은 배포하지 않습니다.

One terminal — xterm.js in a WebView2 — over a pseudo-console we drive ourselves with CreatePseudoConsole. No native terminal DLLs ship with the app.

ZERO AI

내장 LLM 없음

No embedded LLM

AgentZero Lite 자체는 AI 추론을 하지 않습니다. 배관(plumbing)만 제공하고, 지능은 당신이 띄운 AI CLI가 맡습니다.

Lite itself runs no LLM. It's plumbing. The intelligence belongs to whatever AI CLIs you launch.

CLI 치트시트

CLI cheat sheet

GUI가 떠 있는 상태에서만 동작합니다. open-win으로 띄우세요.

Requires a running GUI — launch it with open-win.

Command동작What it does
statusGUI 상태 JSONGUI state JSON
open-win · close-win메인 창 표시 / 숨김Show or hide the main window
terminal-list전체 워크스페이스/탭 세션 JSONJSON list of every workspace/tab session
terminal-send <g> <t> "text"탭 <t>로 텍스트 전송Send text to tab <t> in workspace <g>
terminal-key <g> <t> <key>제어키 전송 (Ctrl+C, Enter, 화살표 …)Send a control key (Ctrl+C, Enter, arrows …)
terminal-read <g> <t> --last N스크롤백 마지막 N바이트 읽기Read the last N bytes from a tab
terminal-alias set <g> <t> <name>탭에 이름 부여 → --alias로 지목 (send/key/read)Name a tab → target it via --alias on send/key/read
agent-resume-launch <g> <t>최신 세션을 찾아 --resume를 라이브 터미널에 주입Find the latest session and inject --resume into the live terminal
bot-chat "text" --from XBot 창에 외부 메시지 버블 표시Display an external chat bubble in the bot window
cost기록된 토큰 사용량 기반 USD 추정Estimated USD from recorded token usage
layout dump현재 분할/탭/패널 구조를 JSON 으로The current split / tab / panel shape as JSON
layout add · split-right · split-down탭 추가 · 좌우/상하 분할Add a tab · split right / down
layout float · dock활성 탭을 창으로 떼기 · 원래 자리로 되돌리기Detach the active tab · dock it back where it came from
layout workspace <g>워크스페이스 전환 (분할 배치까지 복원)Switch workspace, split arrangement and all
copy · log · help클립보드 / 액션 히스토리 / 도움말Clipboard / action history / help

설치

Install

공식 배포판은 크로스 플랫폼(Avalonia) 판입니다 — Windows 10/11 x64 용으로 배포 중이며, macOS(Apple Silicon) 판(.pkg)과 Ubuntu/Debian x64 판(.deb)은 테스트 빌드로 받을 수 있습니다. 모두 자가 포함(self-contained) 빌드라 .NET 을 따로 설치할 필요가 없습니다. 이전 WPF 판 설치본 위에 설치하면 그 자리에서 업그레이드되고, 워크스페이스·설정·모델은 그대로 남습니다.

The official build is the cross-platform (Avalonia) edition — released for Windows 10/11 x64, with macOS (Apple Silicon, .pkg) and Ubuntu/Debian x64 (.deb) available as test builds. Every build is self-contained, so there is no .NET to install. Installing over an earlier WPF install upgrades it in place; workspaces, settings and models are kept.

WINDOWS · INSTALLER

Windows 설치판 (추천)

Windows installer (recommended)

더블클릭 → 다음 → 완료. 시작 메뉴/바탕화면 아이콘, 언인스톨러 포함. ⌚ 웨어러블 호스트가 들어 있는 유일한 판입니다.

Double-click → Next → Finish. Start Menu / desktop icons and an uninstaller. The only edition with the ⌚ wearable host.

⬇ Setup.exe 최신 받기 ⬇ Download Setup.exe (latest)

파일명: Filename: AgentZeroLite-v<latest>-Setup.exe

WINDOWS · STORE

Microsoft Store

Microsoft Store

Store 가 설치와 자동 업데이트를 맡습니다. 데이터(DB·설정)는 패키지 안에 따로 보관돼 설치판과 공유하지 않습니다. 웨어러블은 없습니다.

The Store installs it and keeps it updated automatically. Its data (database, settings) stays inside the package, separate from the installer build. No wearable.

🛍 Microsoft Store 에서 받기 🛍 Get it from Microsoft Store

Store ID: 9NRHDFMD38H7

MACOS · TEST BUILD

macOS (Apple Silicon) — 테스트 빌드

macOS (Apple Silicon) — test build

macOS 설치 마법사(.pkg)로 /Applications 에 설치합니다 (macOS 12 이상). Apple Developer ID 서명 + 공증을 마친 설치 파일이라 더블클릭으로 바로 설치됩니다. 아직 테스트 빌드입니다. 로컬 LLM 과 웨어러블은 macOS 판에 들어가지 않으며, AI 모드는 외부(OpenAI 호환) 공급자를 씁니다.

The macOS installer (.pkg) puts it in /Applications (macOS 12 or later). It is signed with an Apple Developer ID and notarized, so a double-click installs it. Still a test build. The macOS edition has no local LLM and no wearable — AI mode uses an external (OpenAI-compatible) provider.

⬇ macOS .pkg 최신 받기 ⬇ Download macOS .pkg (latest)

파일명: Filename: AgentZeroLite-v<latest>-osx-arm64.pkg

LINUX · TEST BUILD

Ubuntu / Debian (x64) — 테스트 빌드

Ubuntu / Debian (x64) — test build

데스크톱 Ubuntu 22.04 이상 · Debian 12 용 .deb 입니다. 아래 한 줄이 최신 버전을 받아 필요한 시스템 라이브러리(WebKitGTK · GTK 3)와 함께 설치하고, 앱 메뉴에 AgentZero Lite 가, 터미널에 agentzerolite 명령이 생깁니다. 같은 줄을 다시 실행하면 업데이트됩니다. 아직 테스트 빌드입니다 — 로컬 LLM · 웨어러블 · 마이크 입력 · SSH 정의는 들어가지 않으며, AI 모드는 외부(OpenAI 호환) 공급자를 씁니다.

A .deb for desktop Ubuntu 22.04+ and Debian 12. The line below fetches the latest version and installs it with the system libraries it needs (WebKitGTK, GTK 3), adds AgentZero Lite to the app menu and an agentzerolite command. Run it again to update. Still a test build — no local LLM, wearable, microphone input or SSH definitions; AI mode uses an external (OpenAI-compatible) provider.

curl -fsSL https://psmon.github.io/AgentZeroLite/Home/install-linux.sh | bash

직접 받은 .deb 를 설치할 때는 /tmp 로 옮겨서 설치하세요 — ~/Downloads 에서 sudo apt install ./…deb 를 하면 apt 가 "couldn't be accessed by user '_apt' … (13: Permission denied)" 안내를 띄웁니다(홈 폴더 권한 때문이며 설치는 진행됩니다): cp AgentZeroLite-*-linux-x64.deb /tmp/ && sudo apt install /tmp/AgentZeroLite-*-linux-x64.deb

Installing a .deb you downloaded yourself: move it to /tmp first — from ~/Downloads, sudo apt install ./…deb prints "couldn't be accessed by user '_apt' … (13: Permission denied)" (home-folder permissions; the install still goes ahead): cp AgentZeroLite-*-linux-x64.deb /tmp/ && sudo apt install /tmp/AgentZeroLite-*-linux-x64.deb

⬇ Ubuntu .deb 최신 받기 ⬇ Download Ubuntu .deb (latest) ⬇ tar.gz 포터블 ⬇ Portable tar.gz

파일명: Filename: AgentZeroLite-v<latest>-linux-x64.deb

WINDOWS · PORTABLE

ZIP 포터블 빌드

Portable ZIP build

압축만 풀면 끝. 레지스트리를 건드리지 않고, USB 에서도 실행됩니다. 웨어러블 호스트 포함.

Unzip and run. Nothing touches the registry — USB-friendly. Includes the wearable host.

⬇ ZIP 최신 받기 ⬇ Download ZIP (latest)

파일명: Filename: AgentZeroLite-v<latest>-win-x64.zip

DEV

소스 빌드

Build from source

기여하거나 수정하고 싶다면 저장소를 클론하세요. 공식 판은 Avalonia 호스트입니다.

Clone the repo to contribute or patch locally. The official edition is the Avalonia host.

git clone https://github.com/psmon/AgentZeroLite.git
cd AgentZeroLite
dotnet build Project/AgentZeroAvalonia/AgentZeroAvalonia.csproj -c Release

요구사항: .NET 10 SDK. 안내서: README-Avalonia-KR.md

Requires the .NET 10 SDK. Guide: README-Avalonia.md

어떤 판을 받을까

Which edition?

Windows 설치판 / ZIPWindows installer / ZIPMicrosoft StoremacOS (테스트 빌드)macOS (test build)Ubuntu (테스트 빌드)Ubuntu (test build)
터미널 · 워크스페이스 · AI 모드 · 플러그인Terminals · workspaces · AI mode · plugins✅✅✅✅
⌚ 웨어러블 (스마트워치)⌚ Wearable (smartwatch)✅———
로컬 LLMLocal LLM✅✅— (외부 공급자)— (external provider)— (외부 공급자)— (external provider)
업데이트Updates새 Setup.exe 를 받아 덮어 설치Download the new Setup.exe and install over it자동Automatic새 .pkg 를 받아 덮어 설치Download the new .pkg and install over it설치 한 줄을 다시 실행Run the install line again
데이터 위치Where data lives%LOCALAPPDATA%\AgentZeroLite패키지 전용 저장소The package's private store~/Library/Application Support/AgentZeroLite~/.local/share/AgentZeroLite

WPF 판은 이제 레퍼런스 빌드입니다 — 새 기능을 Windows 에서 먼저 빠르게 시험하는 실험실로 남고, 검증된 기능이 공식 판으로 옮겨집니다. 직접 빌드하려면 dotnet build Project/AgentZeroWpf/AgentZeroWpf.csproj -c Release. 공식 판과 같은 DB·설정을 쓰지만, 둘을 동시에 띄울 수는 없습니다.

The WPF edition is now the reference build — it stays the Windows-first lab where features are tried quickly, and what earns its keep moves to the official edition. To build it: dotnet build Project/AgentZeroWpf/AgentZeroWpf.csproj -c Release. It reads the same database and settings as the official build, but the two cannot run at the same time.

⚠️ IDE에서 디버깅할 때

⚠️ When debugging in an IDE

IDE가 프로세스 stdio를 가로채면 ConPTY 탭이 뜨지 않습니다. 외부 콘솔(External Terminal) 옵션을 반드시 켜세요.

If the IDE attaches its own terminal to the process, ConPTY tabs won't start. Always run with an external console.

IDE설정Setting
RiderRun/Debug config → Use external console = ONRun/Debug config → Use external console = ON
Visual StudioDebug 속성 → "Redirect standard output" 해제Debug properties → uncheck "Redirect standard output"
VS Codelaunch.json에서 "console":"externalTerminal"launch.json: "console":"externalTerminal"