terminal
DAON
terminal Deploy Agent
system / runtime-docs / README.md
shield_lock Cryptographic Agent Sanctum

DAON Agent System

Electron + Python 기반 멀티 에이전트 IDE — 로컬 백엔드 서버, 웹 UI, 다중 AI 에이전트를 결합한 데스크톱 개발 환경.

notification_important
빌드/배포/설치 위치가 궁금하다면 docs/ARTIFACTS_AND_BUILD.md (server.exe · electron · 포터블 · 설치본 바로가기가 어디에 있고 어떻게 쓰이는지 한 눈에 정리)
stars

주요 기능

account_tree 멀티 에이전트 체인

역할 기반 에이전트들의 대화형 협업 및 자율 오케스트레이션 파이프라인.

schema 다이나믹 하네스

멀티 에이전트 DAG 오케스트레이터 (플래너 통해 체인 내장 및 동적 분기 처리).

database 영구 작업 저장소

SQLite 기반 harnessJobStore로 작업 계보(Lineage) 영구화 및 크래시 자동 복구.

construction 도구 시스템 (15종+)

터미널, 파일, 브라우저, 코드 실행, 이미지/영상 생성, 웹 검색, 메모리, 위임(delegation) 등.

extension 스킬 시스템

skills/ 디렉토리의 카테고리별 마크다운 에이전트 스킬 주입.

token 다중 LLM 프로바이더

OpenAI, Anthropic, OpenRouter, xAI, DeepSeek, Ollama, LM Studio 등 원클릭 전환.

tab 멀티 탭 뷰

TabManager를 통한 다중 웹 콘텐츠 뷰 및 독립적 상태 격리.

integration_instructions MCP 서버 통합

Model Context Protocol 서버 연동 및 툴 레지스트리 자동 바인딩.

TTS 서버 (별도 프로세스) Cron 스케줄러 (예약 작업 실행) 희귀 테스트 스위트 (tests/run_all_tests.py) 서버 수퍼바이저 (하트비트 & 오케스트레이션) Single Instance Lock (중복 실행 방지)
hub

아키텍처

daon-system-topology.ascii
Interactive Topology
┌────────────────────────────────────────────────────────────────────────┐
│                        Electron Main Process                           │
│  (electron/main.js - 진입점)                                          │
└───────┬───────────────────────────────┬────────────────────────────────┘
        │ spawn                         │ loadURL
        ▼                               ▼
┌───────────────────────────┐   ┌────────────────────────────────────────┐
│ server.exe (Port 9090)    │   │ Electron Renderer (UI)                 │
│ Python HTTP Server        │   │                                        │
│                           │   │  ┌──────────────────────────────────┐  │
│  ┌─────────────────────┐  │   │  │ ServerSupervisor / TabManager    │  │
│  │ router.py (29개 라우트)│  │   │  │ WindowManager / TrayManager      │  │
│  └──────────┬──────────┘  │   │  │ IpcHandlers / HeaderNormalizer   │  │
│             │             │   │  │ TempCleaner / Logger            │  │
│  ┌──────────▼──────────┐  │   │  └──────────────────────────────────┘  │
│  │ streaming.py        │  │   │                   │                    │
│  │ streaming_tools.py  │  │   │                   ▼                    │
│  │ streaming_prompts.py│  │   │  ┌──────────────────────────────────┐  │
│  └──────────┬──────────┘  │   │  │ Static Web UI (Monaco / Chat)    │  │
│             ▼             │   │  │ static/index.html                │  │
│  ┌─────────────────────┐  │   │  └──────────────────────────────────┘  │
│  │ dynamic /           │  │   └────────────────────────────────────────┘
│  │ job_store.py(SQLite)│  │
│  └─────────────────────┘  │
└─────────────┬─────────────┘
              │ spawn (optional)
              ▼
┌───────────────────────────┐
│ TTS Server (tts_server.py)│
└───────────────────────────┘

서버 우선 아키텍처 (Server-First)

server.py는 HTTP 서버를 즉시 바인딩하고, 루틴 프로파일러/Whisper 로딩 등 무거운 작업은 백그라운드 스레드에서 수행합니다. 이를 통해 Electron이 웹소켓 및 REST 응답을 즉시 인지하여 UI 지연 없는 쾌속 로딩을 지원합니다.

리팩토링 아키텍처 (2026-09 기준)

계층 구조 및 역할
Electron main.js는 진입점 역할만 하고, 실제 기능은 electron/src/ 모듈 8종으로 분리
라우팅 210줄 라우터 api/routes/ 29개 모듈 + 0개 하위 디스패처 체제
스트리밍 스트리밍 로직 streaming.py에서 StreamEmitter, streaming_tools, streaming_prompts 추출
프론트엔드 static/modules/panels.jsstatic/modules/panels/ 8개 서브패널 모듈
영속성 작업 계보를 SQLite(harnessJobStore)에 저장, 크래시 자동 복구
account_tree

프로젝트 구조

Directory Tree / Cryptographic Sanctum
daon-agent-system/
├── electron/                    # Electron 메인 프로세스
│   ├── main.js                  # 진입점 (단일 인스턴스 락, spawn)
│   ├── preload.js               # 프리로드 스크립트
│   ├── restart_orchestrator.js  # 재시작 오케스트레이터 (패치드/클린)
│   ├── self_update.js           # 자가 업데이트
│   ├── splash.html              # 스플래시 화면
│   └── src/                     # 기능 모듈 8종
│       ├── ServerSupervisor.js  # 서버 고니/복구
│       ├── TabManager.js        # 웹 콘텐츠 관리
│       ├── WindowManager.js     # 창 관리
│       ├── TrayManager.js       # 트레이 관리
│       ├── IpcHandlers.js       # IPC 라우팅
│       ├── HeaderNormalizer.js  # 헤더 정규화
│       ├── TempCleaner.js       # 임시 파일 정리
│       └── Logger.js            # 로깅
├── server.py                    # Python 백엔드 서버 (HTTP, port 9090)
├── tts_server.py                # TTS 전용 서버
├── api/                         # API 모듈 (실제 호출: /api/)
│   └── routes/                  # HTTP 라우트 29개 모듈 (0개 디스패처)
│       ├── chat_routes.py
│       ├── dynamic_routes.py    # 다이나믹 하네스
│       ├── mcp_routes.py
│       └── mobile_routes.py     # 모바일 작업실
├── hermes-agent/                # Hermes 에이전트 프레임워크
├── skills/                      # 에이전트 스킬 (카테고리별 폴더)
├── static/                      # 웹 UI 번들 & Monaco 에디터
├── tests/                       # 회귀 테스트 스위트
├── config.yaml                  # 서버 설정
├── daon-server.spec             # PyInstaller 스펙
└── package.json                 # Electron 빌드 설정
rocket_launch

시작하기

사전 요구 사항
  • Node.js (Electron 실행용 LTS 권장)
  • Python 3.10+ (서버 실행용 가상환경)
  • Windows 10/11 (현재 빌드 대상 아키텍처)
1. 의존성 설치 Node Package Manager
npm install
2. 환경 변수 설정
.env 파일에 LLM API 키 등을 바인딩합니다.
3. 개발 모드로 실행 Dev Script
npm start
warning
VSCode 터미널 주의: VSCode는 ELECTRON_RUN_AS_NODE=1을 주입하므로 터미널에서 직접 Electron 실행 시 먼저 set ELECTRON_RUN_AS_NODE= 로 해제해야 합니다.
4. 서버 단독 실행 (개발용) Python CLI
python server.py --no-browser --port 9090
package_2

빌드 (Packaging)

server.exe 빌드 (PyInstaller)
python -m PyInstaller daon-server.spec --noconfirm

➔ dist/server.exe 생성
Electron 빌드 (Dist/Installer)
# Portable (디렉토리)
npx electron-builder --win --dir

# NSIS 인스톨러
npx electron-builder --win nsis
flaky

회귀 테스트 (Testing Suite)

python tests/run_all_tests.py

Phase 2(라우팅)-3(Electron)-4(프론트엔드)-5(영속성) 회귀 테스트를 한 번에 연속 실행합니다.

settings

설정 (Configuration)

config.yaml CORE PARAMETERS
항목 설명 기본값
server.host 바인딩 호스트 127.0.0.1
server.port 서버 포트 9090
model.default 기본 모델 "" (동적 선택)
limits.max_file_bytes 최대 파일 읽기 크기 200000
limits.max_upload_bytes 최대 업로드 크기 20971520 (20MB)
toolsets.default 기본 도구 세트 browser, file, terminal, code_execution 등
magic_button

스킬 디렉토리 체계

카테고리 용도 및 오케스트레이션 범위
AI AI 모델/API 연동 및 프롬프트 체인
Automation 자동화 워크플로우 및 백그라운드 태스크
Browser 브라우저 제어/크롤링 (Headless Chromium)
Coding 개발 코드 리뷰 및 동적 인터프리터 실행
Design 디자인 시스템 (UI 토큰 검증, Glassmorphism)
System 시스템 운영/자가 성찰 (self-reflection, security 등)
layers

기술 스택

SHELL
Electron 31
데스크톱 앱 프레임워크
ENGINE
Python
백엔드 연산 서버
COMPILER
PyInstaller
server.exe 단일 바이너리
PERSISTENCE
SQLite
작업 계보 영속화
FRAMEWORK
Hermes Agent
에이전트 제어 코어
EDITOR
Monaco Editor
VS Code 코어 에디터
DISPATCHER
HTTP Server
ThreadingHTTPServer
PACKAGER
electron-builder
포터블 및 인스톨러 생성
warning

참고 사항

data/ 디렉토리: 사용자별 설정·토큰을 포함하므로 .gitignore로 배포에서 제외됩니다.

nul 파일: Windows 예약어 이름으로 일반 삭제가 불가하여 특수 예외 처리되어 있습니다.

ELECTRON_RUN_AS_NODE: VSCode 터미널 실행 시 반드시 사전에 환경변수 unbind 필요.

verified 라이선스: MIT License — Institutional-Grade Open Core