Jido framework 기반의 풀스택 AI 에이전트 플랫폼 JidoClaw
요약
JidoClaw는 Elixir/OTP 기반의 풀스택 AI 에이전트 오케스트레이션 플랫폼입니다. CLI, LiveView 웹 대시보드, 샌드박스 코드 실행(Forge) 등 다양한 인터페이스를 하나의 애플리케이션에 통합했습니다. 이 플랫폼은 영구적인 워크플로우 엔진과 다중 에이전트 파이프라인을 통해 복잡한 AI 작업을 관리하고 자동화합니다.
핵심 포인트
- Elixir/OTP 기반의 풀스택 아키텍처로 개발 용이성 및 안정성을 확보했습니다.
- Forge를 통한 샌드박스 코드 실행과 영구 워크플로우 오케스트레이션 기능을 제공합니다.
- Anthropic, OpenAI 등 다양한 LLM 공급업체와 모델을 지원하는 Multi-provider 구조입니다.
- GitHub 이슈 관리부터 GTD 작업까지 AI 에이전트의 전방위적 자동화를 구현했습니다.
Elixir/OTP를 위한 Jido 프레임워크 기반의 풀스택 AI 에이전트 오케스트레이션 플랫폼입니다. CLI REPL, LiveView 웹 대시보드, 샌드박스 코드 실행(Forge), 승인 게이트가 있는 영구적인 워크플로우 오케스트레이션, 계층적 GitHub 이슈 봇, GTD 작업 관리, 암호화된 비밀 저장소, 데스크톱 앱 패키징을 하나의 Elixir 애플리케이션에 결합했습니다. 폐쇄형 플랫폼이 호스팅 인프라에 가두는 곳에서, JidoClaw는 Elixir가 실행되는 모든 곳에서 작동합니다: 사용자의 노트북, 단일 VPS, 또는 분산된 BEAM 클러스터.
| 레이어 | 기능 | |
|---|---|
| CLI REPL | 30개의 도구를 갖춘 대화형 터미널 에이전트와 스웜 오케스트레이션, 실시간 디스플레이 |
| 웹 대시보드 | LiveView UI — 대시보드, forge 터미널, 워크플로우, 에이전트, 프로젝트, 설정, GTD |
| Forge | 4가지 러너 유형(shell, claude_code, workflow, custom)을 갖춘 샌드박스 코드 실행 엔진 |
| 오케스트레이션 | 상태 머신, 승인 게이트, 재시도 계보를 갖춘 영구적인 워크플로우 엔진 |
| GitHub Bot | 계층적 다중 에이전트 파이프라인 — 분류(triage) → 병렬 연구 → PR 생성 |
| Folio GTD | Getting Things Done 작업 관리 — 받은 편지함 캡처, 컨텍스트/에너지 추적 |
| 보안 | 저장 시 AES-256-GCM 암호화, 다중 계층 비밀 마스킹(로그, 프롬프트, UI, PubSub) |
| 데스크톱 앱 | Tauri + Burrito 패키징 — 임베디드 Phoenix 서버가 있는 네이티브 바이너리 |
| 데이터 레이어 | Ash Framework 3.0 + PostgreSQL — 리소스, 인증, 관리자 패널
BEAM-native: 경량 프로세스, 장애 허용성(fault tolerance), 핫 코드 리로드(hot code reload) 지원 — 다중 에이전트 워크로드를 위해 Kubernetes가 필요하지 않습니다.Full-stack: CLI, REST API, WebSocket, LiveView 대시보드, 데스크톱 앱 — 하나의 코드베이스로 모든 인터페이스를 구현합니다.Multi-interface: CLI REPL, REST API (OpenAI 호환), WebSocket RPC, Discord, Telegram을 지원합니다.Multi-provider: Ollama (로컬 + 클라우드), Anthropic, OpenAI, Google, Groq, xAI, OpenRouter 등 8개 제공업체와 35개 이상의 모델을 지원합니다.Multi-tenant: 테넌트별 감독 트리(supervision trees)를 통해 리소스를 격리하고 팀 간의 연쇄적인 장애 발생을 방지합니다.Sandboxed execution: Forge는 세션 생명 주기, 동시성 제한 및 스트리밍 출력을 갖춘 격리된 sprite 컨테이너에서 코드를 실행합니다.Workflow orchestration: 승인 게이트(approval gates)가 있는 영구 상태 머신(persistent state machine)을 통해 중요 작업에 대한 인간 개입 루프(human-in-the-loop)를 구현합니다.GitHub automation: 계층적 에이전트 파이프라인이 이슈를 처음부터 끝까지 처리합니다 — 분류(triage), 리서치, 패치, PR 생성 등의 작업을 수행합니다.Security-first: 저장된 비밀 정보 암호화(Encrypted secrets at rest), 모든 출력 채널에 대한 마스킹 필터(redaction filters), API 키 인증을 적용합니다.Swarm orchestration: LLM이 언제 자식 에이전트를 생성할지 결정하며, spawn_agent, list_agents, send_to_agent, kill_agent는 일급 도구(first-class tools)로 작동합니다.30개 내장 도구: 파일 작업(File ops), git, 쉘(shell), 코드 검색, 메모리, 솔루션 캐싱, 네트워크 공유, 스웜 관리, AI 추론, cron 예약 등의 기능을 제공합니다.8가지 추론 전략: ReAct, Chain-of-Thought, Chain-of-Draft, Tree-of-Thought, Graph-of-Thought, Atom-of-Thought, TRM, Adaptive 등 8가지 전략을 지원하며 /strategy를 통해 세션별로 전환할 수 있습니다.가상 파일 시스템:github://, s3://, git:// URI 스킴을 사용하여 로컬 경로와 함께 투명한 원격 파일 액세스를 제공합니다.영구 쉘 세션: jido_shell 기반의 세션은 작업 공간(workspace)별로 작업 디렉터리와 환경 변수(env vars)를 보존합니다.DAG 스킬 실행: depends_on 어노테이션이 있는 스킬은 Task.async_stream을 통해 병렬 단계로 실행되며, 독립적인 단계들이 동시에 작동합니다.Cron 예약: 에이전트 도구나 CLI를 통해 반복 작업을 예약할 수 있으며, 이는 .jido/cron.yaml에 영구 저장됩니다.
, 재시작 후에도 생존하며, 실패 시 자동 비활성화됩니다.Heartbeat 모니터링: .jido/heartbeat.md에서 에이전트 상태, 가동 시간, 통계 및 시스템 상태가 60초마다 업데이트됩니다.실시간 스웜 디스플레이: 각 에이전트의 통계, 도구 추적, 토큰 수 및 애니메이션 스피너를 포함하는 실시간 에이전트 트리가 제공됩니다.관찰 가능(Observable): 20가지 이상의 원격 측정 이벤트, Phoenix LiveDashboard, 구조화된 로깅을 지원합니다.확장성(Extensible): 사용자 지정 에이전트, 기술(skills), 채널 어댑터, 도구 승인 워크플로우 — 모두 YAML로 정의할 수 있습니다.
JidoClaw는 에이전트가 작동하는 동안 완전히 실시간 터미널 UI를 렌더링합니다. 외부 TUI 라이브러리 없이 순수한 ANSI 이스케이프 코드로, 모든 최신 터미널에서 작동합니다.
지속적인 상단 라인은 모델, 제공업체, 토큰 사용량, 진행률 표시줄, 비용, 경과 시간 및 활성 에이전트 수를 지속적으로 업데이트합니다. 화면 폭이 좁아지면 세그먼트는 자동으로 축소됩니다.
⚕ qwen3-coder:32b │ ollama │ 24.1K/128K │ [██████░░░░] 19% │ $0.00 │ 3m │ 3 agents
에이전트가 LLM 응답을 기다리는 동안, 애니메이션 카오모지(kaomoji)가 감정을 순환합니다:
(◕‿◕) thinking...
(◕ᴗ◕) thinking...
(◔‿◔) thinking...
도구 호출은 발생하는 즉시 인라인으로 렌더링됩니다 — 호출 시에는 인수(arguments)가, 완료 시에는 결과 요약이 표시됩니다:
⟳ edit_file path="lib/foo.ex"
✓ edit_file
foo.ex
...
일반적인 도구의 경우 풍부한 미리보기가 제공됩니다: 파일 편집은 인라인 diff를 표시하고, 읽기는 파일 경로와 라인 수를 보여주며, 셸 명령어는 종료 코드와 tail 출력을 보여줍니다.
자식 에이전트가 활성화되면, 에이전트 목록 위에 실시간 요약 상자가 나타납니다:
┌─ SWARM ─────────────────────────────────────────────────┐
│ 3 agents │ 2 running 1 done │ 8.2K tokens $0.00 │
└────────────────────────────────────────────────────────┘
...
각 행은 에이전트 이름, 템플릿 유형, 상태, 소비된 토큰, 비용, 도구 호출 횟수 및 지금까지 호출된 도구 이름을 추적합니다.
디스플레이는 단일 에이전트 모드(spinner와 인라인 도구 호출)로 시작됩니다. spawn_agent가 실행될 때...
호출되면, 자동으로 스웜 모드(swarm mode)로 전환하여 에이전트 트리를 렌더링합니다. 모든 자식 에이전트가 완료되면 단일 에이전트 모드(single-agent mode)로 되돌아갑니다.
- 메인 감독 트리(main supervision tree) 내의 두 OTP GenServers(
AgentTracker와Display)를 기반으로 구축됨 - 이벤트 주도형: 디스플레이는 SignalBus를 통해 흐르는jido_claw.tool.*및jido_claw.agent.*신호에 반응합니다. - 에이전트별 상태 추적 (AgentTracker): 토큰, 비용(cost), 도구 호출 횟수(tool call count), 도구 이름, 상태, 경과 시간 -/status및/agents명령은 라이브 디스플레이와 동일한 데이터를 표시합니다.
curl -fsSL https://raw.githubusercontent.com/robertohluna/jido_claw/main/install.sh | bash
그런 다음 jido를 실행합니다.
— 첫 번째 실행 시 설정 마법사(setup wizard)로 안내됩니다. LLM 제공업체를 선택하고, API 키를 구성하며, 모델을 선택하면 REPL 환경에 진입할 수 있습니다.
git clone https://github.com/robertohluna/jido_claw.git
cd jido_claw
mix deps.get && mix compile
...
웹 대시보드는 http://localhost:4000에서 사용할 수 있습니다. 첫 실행 시, 설정 마법사가 필수 조건을 확인하고 제공업체/모델 구성을 안내합니다.
██╗██╗██████╗ ██████╗ ██████╗██╗ █████╗ ██╗ ██╗
...
자 동 · autonomous
...
JidoClaw는 Ash Framework 3.0을 리소스 계층(resource layer)으로 사용하며, 백엔드는 AshPostgres를 통해 PostgreSQL에 연결됩니다.
| 도메인 | 리소스 | 목적 |
|---|---|---|
| Accounts | User, Token, ApiKey | 인증 (비밀번호 + 매직 링크), API 키 관리 |
| Projects | Project | GitHub 레포지토리 연결을 포함한 프로젝트 등록부 |
| Security | SecretRef | 암호화된 비밀 저장소 (Cloak을 통한 AES-256-GCM) |
| Forge | Session, ExecSession, Checkpoint, Event | 샌드박스 세션 감사 추적 |
| Orchestration | WorkflowRun, WorkflowStep, ApprovalGate | 영구 워크플로우 상태 머신 |
| GitHub | IssueAnalysis | 이슈 분류 및 분석 기록 |
| Folio | InboxItem, Action, Project | GTD 작업 관리 |
AshAuthentication을 기반으로 두 가지 전략(strategy)을 사용합니다:
비밀번호(Password): 해시된 자격 증명과 함께 이메일/비밀번호 방식, 토큰 기반 로그인매직 링크(Magic Link): 비밀번호가 필요 없는 이메일 인증
API 엔드포인트는 Bearer 토큰 또는 x-api-key 헤더를 통해 보호되며, ApiKey 리소스를 통해 검증됩니다.
AshAdmin은 /admin 경로에 마운트되어 모든 리소스를 웹 인터페이스를 통해 탐색하고 관리할 수 있습니다.
Forge는 격리된 Sprite 컨테이너에서 코드를 실행하는 범용 병렬 샌드박스 실행 엔진입니다.
| 러너(Runner) | 목적 (Purpose) | 동시성 한계 (Concurrency Limit) |
|---|---|---|
shell | 셸 명령어 실행 | 20 |
claude_code | --output-format stream-json, --dangerously-skip-permissions가 적용된 Claude CLI | 10 |
workflow | {{var}} 보간을 사용하는 데이터 기반 단계 엔진 (:exec, :prompt, :condition, :call, :noop) | 10 |
custom | 사용자 정의 함수 러너 | 10 |
총 용량: 50개의 동시 세션
starting → bootstrapping → initializing → ready → running → stopping
↓
needs_input
세션은 OTP Registry를 통해 추적되며, 충돌 여부를 모니터링하고 감사(audit) 목적으로 PostgreSQL에 영속화됩니다.
# 셸 세션 시작
{:ok, handle} = JidoClaw.Forge.start_session(
, 그리고 전체 계보(full lineage)를 유지합니다.
| Handler | 목적 (Purpose) |
|---|---|
`CommitAndPR` | Git 커밋 및 풀 리퀘스트 생성 |
`ForgeExec` | 샌드박스 환경에서 실행을 위해 Forge에 위임 |
`AgentTask` | Jido 에이전트 런타임에 위임 |
GenServer는 50개 항목의 완료링 버퍼(completion ring buffer)로 워크플로우 상태를 집계하고, 각 전환 시 PubSub을 통해 업데이트를 브로드캐스팅합니다.
GitHub 이슈를 엔드투엔드로 처리하는 계층적 다중 에이전트 파이프라인입니다.
Webhook (issues.opened / issues.edited / issue_comment.created)
→ HMAC-SHA256 검증
→ Coordinator Agent
...
GitHub 앱을 구성하여 `issues` 및 `issue_comment` 이벤트를 `/webhooks/github`로 전송하도록 설정하세요. 페이로드(Payloads)는 `Plug.Crypto.secure_compare/2`를 사용하여 HMAC-SHA256으로 검증됩니다.
export GITHUB_WEBHOOK_SECRET=your-webhook-secret
export GITHUB_APP_PRIVATE_KEY=...
인박스 캡처, 명확화(clarification), 그리고 상황 인식 액션 추적을 포함하는 Getting Things Done 워크플로우입니다.
Capture → Inbox → Clarify → 실행 가능한가?(Actionable?)
├── 예(Yes) → 액션 (다음(next), 대기 중(waiting), 언젠가(someday))
└── 아니요(No) → 폐기/참조(Discard / Reference)
액션은 상황(`@phone`, `@computer`, `@office`), 에너지 수준(`low`, `normal`, `high`), 시간 추정치, 마감일 및 대기 중인 항목 추적을 지원합니다.
이 기능은 `/folio`의 LiveView UI를 통해 그리고 자연어 작업 관리를 위한 AI 에이전트 도구로 이용 가능합니다.
비밀 정보는 Cloak Vault를 통해 AES-256-GCM으로 저장 시 암호화됩니다:
암호화된 비밀 정보 저장하기
Ash.create!(JidoClaw.Security.SecretRef, %{
name:
)", 일반 비밀(generic secrets), 개인 키(private keys), 및 연결 문자열(connection strings).
LiveView 기반의 다크 테마 웹 인터페이스는 http://localhost:4000에서 이용 가능합니다.
| 경로 (Route) | 페이지 (Page) | 목적 (Purpose) |
|---|---|---|
/ | 대시보드 (Dashboard) | 에이전트 상태, 최근 실행 기록, 플랫폼 통계 |
/forge | 포지 터미널 (Forge Terminal) | 인터랙티브 샌드박스 터미널 (xterm.js) |
/workflows | 워크플로우 (Workflows) | 워크플로우 실행 기록, 단계 상태, 승인 UI |
/agents | 에이전트 (Agents) | 에이전트 구성, 템플릿, 이슈 봇 토글 |
/projects | 프로젝트 (Projects) | 프로젝트 목록, GitHub 리포지토리 연결 |
/settings | 설정 (Settings) | 사용자 설정, API 키 관리 |
/folio | 포리오 (Folio) | GTD 받은 편지함, 작업(actions), 프로젝트 |
/setup | 설정 마법사 (Setup Wizard) | 필수 조건 확인, 자격 증명 검증 |
/sign-in | 로그인 (Sign In) | 인증 (Authentication) |
/admin | 관리자 패널 (Admin Panel) | AshAdmin 리소스 브라우저 |
/live-dashboard | 라이브 대시보드 (LiveDashboard) | Phoenix 원격 측정 지표(telemetry metrics) |
on_mount 기반 세션 인증(Session-based auth):
훅(hooks):
:live_user_required — 인증되지 않은 사용자를 로그인 페이지로 리디렉션합니다.
:live_user_optional — 익명 접근을 허용합니다.
:live_no_user
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기