{"id":47359236,"url":"https://github.com/Ramsbaby/jarvis","last_synced_at":"2026-04-01T17:01:15.751Z","repository":{"id":341726358,"uuid":"1171240626","full_name":"Ramsbaby/jarvis","owner":"Ramsbaby","description":"claude -p as a 24/7 AI ops system: self-healing, local RAG memory, cron automation — $0 extra on your Claude Max subscription","archived":false,"fork":false,"pushed_at":"2026-03-25T07:30:04.000Z","size":3695,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-26T09:33:02.189Z","etag":null,"topics":["agentic-ai","ai-agent","ai-assistant","ai-ops","automation","claude","claude-code","claude-max","claude-pro","discord","discord-bot","llm-ops","mcp","no-api-key","nodejs","personal-ai","rag","self-healing","self-hosted","zero-cost"],"latest_commit_sha":null,"homepage":"https://github.com/Ramsbaby/jarvis/blob/main/docs/INDEX.md","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ramsbaby.png","metadata":{"files":{"readme":"README.ko.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-03T02:35:19.000Z","updated_at":"2026-03-25T07:30:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Ramsbaby/jarvis","commit_stats":null,"previous_names":["ramsbaby/claude-discord-bridge"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Ramsbaby/jarvis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramsbaby%2Fjarvis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramsbaby%2Fjarvis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramsbaby%2Fjarvis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramsbaby%2Fjarvis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ramsbaby","download_url":"https://codeload.github.com/Ramsbaby/jarvis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramsbaby%2Fjarvis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-ai","ai-agent","ai-assistant","ai-ops","automation","claude","claude-code","claude-max","claude-pro","discord","discord-bot","llm-ops","mcp","no-api-key","nodejs","personal-ai","rag","self-healing","self-hosted","zero-cost"],"created_at":"2026-03-18T12:00:34.520Z","updated_at":"2026-04-01T17:01:15.735Z","avatar_url":"https://github.com/Ramsbaby.png","language":"Shell","funding_links":[],"categories":["Plugins","Community Projects"],"sub_categories":["All Plugins","Deployment \u0026 Infrastructure"],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003c!-- Row 1: health \u0026 meta --\u003e\n\u003ca href=\"https://github.com/Ramsbaby/jarvis/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/Ramsbaby/jarvis/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/Ramsbaby/jarvis/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/Ramsbaby/jarvis?style=flat-square\u0026color=yellow\" alt=\"Stars\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/Ramsbaby/jarvis/network/members\"\u003e\u003cimg src=\"https://img.shields.io/github/forks/Ramsbaby/jarvis?style=flat-square\" alt=\"Forks\"\u003e\u003c/a\u003e\n\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue?style=flat-square\" alt=\"License\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/node-22+-green?style=flat-square\u0026logo=node.js\u0026logoColor=white\" alt=\"Node 22+\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/platform-macOS%20%7C%20Linux-lightgray?style=flat-square\" alt=\"Platform\"\u003e\n\n\u003c!-- Row 2: key differentiators --\u003e\n\u003cbr\u003e\n\u003cimg src=\"https://img.shields.io/badge/추가비용-월_$0-brightgreen?style=flat-square\" alt=\"$0/month\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/컨텍스트_압축-98%25-blueviolet?style=flat-square\" alt=\"98% 압축\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/세션_지속-3시간+-blue?style=flat-square\" alt=\"3+ hours\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/AI_팀-12개-orange?style=flat-square\" alt=\"12 AI 팀\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/크론_태스크-76개-orange?style=flat-square\" alt=\"76 크론\"\u003e\n\n\u003ch1\u003eJarvis\u003c/h1\u003e\n\n\u003cimg src=\"docs/assets/hero.ko.svg\" alt=\"Jarvis — 24/7 AI Ops\" width=\"800\"\u003e\n\n\u003ch3\u003e놀고 있는 Claude Max 구독을 24/7 AI 운영 시스템으로\u003c/h3\u003e\n\n\u003cp\u003e\n  \u003cstrong\u003e\n    Claude Max에 매달 $20–$100을 내고 있습니다. 하루 23시간 쉬고 있죠.\u003cbr\u003e\n    Jarvis는 그것을 Discord, 크론 작업, 로컬 메모리 엔진에 연결합니다 —\u003cbr\u003e\n    Claude가 자는 동안에도 일하고, 모니터링하고, 학습하게 됩니다. 추가 비용 $0.\u003cbr\u003e\n    \u003csub\u003e12 AI 팀 · 76 크론 태스크 · 자가복구 · 로컬 RAG 메모리\u003c/sub\u003e\n  \u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e ·\n  \u003ca href=\"discord/SETUP.md\"\u003e설치 가이드\u003c/a\u003e ·\n  \u003ca href=\"docs/INDEX.md\"\u003e문서\u003c/a\u003e ·\n  \u003ca href=\"ROADMAP.md\"\u003e로드맵\u003c/a\u003e ·\n  \u003ca href=\"CHANGELOG.md\"\u003e변경 이력\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cimg src=\"docs/demo.gif\" alt=\"Jarvis 데모 — 봇 시작, 크론 실행, Discord 대화, /status 명령\" width=\"820\"\u003e\n\n\u003c/div\u003e\n\n---\n\n## Jarvis가 뭔가요?\n\nJarvis는 `claude -p` — Claude Code의 헤드리스 출력 모드 — 위에 씌운 자동화 레이어입니다. Claude를 **Discord**, **예약 크론 작업**, **로컬 RAG 메모리 시스템**에 연결해, 기존 구독을 개인 AI 운영팀으로 바꿔줍니다.\n\n\u003e RAG(Retrieval-Augmented Generation): 과거 대화, 노트, 보고서를 인덱싱해 컨텍스트로 주입하는 방식. 시간이 갈수록 답변이 정교해집니다.\n\n```\nDiscord에서 질문       →  Claude가 실시간 답변  →  메모리에 저장\n매일 오전 8시 크론 실행  →  Claude가 스탠드업 작성  →  #bot-daily에 게시\n오전 9시에 일어나면      →  브리핑·알림·우선순위 — 이미 준비되어 있음\n```\n\n**Anthropic API 키 없음. 종량 요금 없음. 클라우드 없음.** 그냥 `claude -p`.\n\n---\n\n## 핵심 인사이트: `claude -p`는 무료\n\n대부분의 Discord 봇은 Anthropic API를 직접 호출합니다. 메시지마다 유료입니다. Jarvis는 다릅니다.\n\n`claude -p`는 Claude Code의 **헤드리스 모드** — Anthropic이 자동화 파이프라인에서 공식 권장하는 방식입니다. 기존 Claude Max 구독 하에 실행되며, 호출당 요금이 없습니다.\n\n| | Jarvis | API 기반 봇 | n8n + Claude |\n|---|---|---|---|\n| Claude 호출 방식 | `claude -p` (CLI, 구독 포함) | `POST /v1/messages` (종량제) | API 노드 (종량제) |\n| 월 500건 비용 | **$0 추가** | ~$7–$37 추가 | API 비용 + n8n 요금 |\n| 모델 품질 | Opus / Sonnet (내 구독 티어) | 키 등급에 따름 | 키 등급에 따름 |\n| 능동적 자동화 | 76개 예약 태스크 (12팀) | 반응형만 | 비주얼 설정 필요 |\n| 자가복구 | 4계층 자동 복구 | ❌ | ❌ |\n| 장기 기억 | LanceDB 하이브리드 (로컬) | 드물게 | 선택 플러그인 |\n| 컨텍스트 압축 | 98% (Nexus CIG — 아래 설명) | ❌ | ❌ |\n| 프라이버시 | 100% 로컬 | 다양함 | 다양함 |\n\n\u003e 이미 헬스장 월정액을 내고 있습니다. Jarvis는 그 헬스장을 매일, 심지어 자는 동안에도 실제로 쓰게 해주는 퍼스널 트레이너입니다.\n\n---\n\n## 자는 동안 일어나는 일\n\n```\n  시간     나           JARVIS\n  ──────────────────────────────────────────────────────────────\n  00:30    😴           → 로그 정리 + 정기 백업\n  01:00    😴           → RAG 인덱스 업데이트 (매시간, 증분)\n  03:00    😴           → 서버 유지보수 스캔  →  #bot-system\n  04:45    😴           → 코드 오디터 전체 스크립트 검사 (내부)\n  07:50    😴           → 트렌드팀: 아침 브리핑  →  #bot-daily\n  08:00    😴           → Board Meeting: CEO OKR 검토  →  #bot-ceo\n  08:05    😴           → 스탠드업 작성 및 게시 완료\n  09:00    ☕            ← 기상: 브리핑·알림·우선순위 — 이미 준비됨\n  10:00                 ↔ Discord 실시간 대화 (묻고 답하기)\n  18:00                 ← 퇴근\n  20:00    😴           → 기록팀: 일일 아카이브 (내부)\n  ──────────────────────────────────────────────────────────────\n                         76개 크론 태스크 · 12개 AI 팀 · 수동 개입 0\n```\n\n모든 태스크에 **지수 백오프 재시도**, **레이트 리밋 인식**, **실패 알림**(ntfy → 스마트폰 푸시)이 내장되어 있습니다.\n\n---\n\n## 핵심 지표\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\" width=\"33%\"\u003e\n\n### $0 / 월\n*추가 비용*\n\n모든 Discord 답변, 모든 크론 태스크, 모든 AI 팀 보고서가 `claude -p`를 호출합니다. Claude Max 또는 Pro 구독에 포함. API 키 없음, 종량제 없음.\n\n\u003c/td\u003e\n\u003ctd align=\"center\" width=\"33%\"\u003e\n\n### 98%\n*컨텍스트 압축*\n\n**Nexus CIG** (Context Intelligence Gateway) — 모든 툴 출력이 Claude 컨텍스트 창에 들어오기 전에 가로채는 MCP 서버. 실측값: **315 KB → 5.4 KB**. 30분이면 가득 찼을 컨텍스트가 수 시간 지속됩니다.\n\n\u003c/td\u003e\n\u003ctd align=\"center\" width=\"33%\"\u003e\n\n### 3시간+\n*세션 지속 시간*\n\n압축 없으면 컨텍스트가 ~30분에 포화됩니다. Nexus CIG 적용 시, 멀티턴 스레드가 auto-compact 트리거 전까지 몇 시간씩 유지됩니다 — 긴 크론 체인에 필수적입니다.\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## 어떻게 작동하나요?\n\n```\n  Discord 메시지\n        │\n        ▼\n  discord-bot.js  ──►  handlers.js  ──►  claude-runner.js\n                                               │\n                                         claude -p\n                                       (내 구독 포함)\n                                               │\n                                       Nexus CIG (MCP)\n                                       98% 컨텍스트 압축\n                                               │\n                                   Discord 답변  +  RAG 인덱스\n                                               │\n                                     미래 컨텍스트로 저장\n\n  ──────────────────────────────────────────────────────────────\n\n  크론 스케줄러  ──►  jarvis-cron.sh  ──►  tasks.json\n                                               │\n                                   depends[] 크로스팀 컨텍스트 자동 주입\n                                               │\n                                         claude -p\n                                               │\n                                   Discord  +  Obsidian Vault  +  RAG\n```\n\n\u003cimg src=\"docs/assets/architecture.ko.svg\" alt=\"Jarvis 아키텍처\" width=\"800\"\u003e\n\n### 자가복구 — 4계층 (사람 없이 자동)\n\n| 계층 | 트리거 | 하는 일 |\n|------|--------|---------|\n| **0 · Preflight** | 매 콜드스타트 | `bot-preflight.sh`가 설정 유효성 검사; 오류 발생 시 Claude가 로그를 읽고 **파일을 스스로 수정** |\n| **1 · OS 레벨** | 크래시 발생 시 | `launchd KeepAlive = true` (macOS) / Docker `restart: always` (Linux) — OS 수준 재시작 |\n| **2 · Watchdog** | 매 3분 | `watchdog.sh`가 로그 freshness 확인; 스테일 프로세스 종료 및 재시작 |\n| **3 · Guardian** | 매 3분 | `launchd-guardian.sh`가 언로드된 LaunchAgent 자동 재등록 |\n\n---\n\n### 페어링 코드 — 접근 제어 (오픈 초대 없음)\n\nJarvis는 **페어링 코드 시스템**으로 봇과 대화할 수 있는 사람을 제한합니다.\n신규 사용자는 `/pair \u003c코드\u003e` 명령어로 일회성 페어링 코드를 입력해야 합니다.\n승인된 사용자는 로컬에 저장됩니다 — Discord 역할 해킹도, 공개 초대 링크도 없습니다.\n\n---\n\n## 12개 AI 팀\n\n각 팀은 고유한 역할과 시스템 프롬프트, 독립적인 크론 스케줄을 가집니다. Council이 작성하는 `context-bus.md`를 통해 모든 팀이 컨텍스트를 공유합니다.\n\n| 팀 | 스케줄 | 역할 |\n|----|--------|------|\n| **Council** | 매일 23:00 | 크로스팀 종합; 전체 팀이 읽는 `context-bus.md` 작성 |\n| **CEO Digest** | 매일 08:00 | 임원 요약: OKR 진척도, 주요 결정, 야간 이벤트 |\n| **Standup** | 매일 08:05 | 아침 브리핑 — 일정, 태스크, 알림, 시장 현황 |\n| **Infra** | 매 30분 | 서버 헬스, 프로세스 모니터링, 비용 알림 |\n| **Finance** | 평일 | 시장 모니터링, 포트폴리오 추적, TQQQ/ETF 신호 |\n| **Trend** | 매일 07:50 | 뉴스 다이제스트, 기술 트렌드 신호 |\n| **Recon** | 주간 | 경쟁 인텔리전스, OSS 생태계 스캔 |\n| **Security Scan** | 주간 | 의존성 감사, 자격증명 유출 탐지 |\n| **Career** | 주간 | 성장 반성, 취업 시장 트렌드 추적 |\n| **Academy** | 주간 | 리서치 다이제스트, 지식 베이스 관리 |\n| **Record** | 매일 20:00 | 활동 아카이빙, 의사결정 감사 로그 (`decisions/*.jsonl`) |\n| **Brand** | 주간 | 콘텐츠 포지셔닝 추적 |\n\n**크로스팀 컨텍스트 흐름:** 전날 23:00에 Council이 작성한 인사이트가 다음 날 08:05 스탠드업 프롬프트에 `depends[]` 필드를 통해 자동 주입됩니다. 별도 코드 없음.\n\n---\n\n## 실제로 뭘 얻게 되나요?\n\n개발자가 직접 사용 중인 수치입니다. 모두 실제 측정값입니다.\n\n**매일 아침, 노트북을 열기 전에:**\n- Discord에 스탠드업 게시: 일정 요약, 오늘 3대 우선순위, 야간 Jarvis 활동 내역\n- 모니터링 중인 포지션이 임계값을 넘으면 스마트폰 푸시 (ntfy)\n- GitHub 활동 체크; 리뷰 필요한 PR 알림\n- CEO Digest가 OKR 진척도를 요약 → 전략적 맥락 파악 후 하루 시작\n\n**업무 중에:**\n- Discord에서 뭐든 물어보기 — Claude Opus/Sonnet 품질, 메시지당 비용 $0\n- `/search \u003c쿼리\u003e`로 전체 지식 베이스(Obsidian + 크론 결과)를 시맨틱 검색\n- `/run \u003c태스크\u003e`로 76개 크론 태스크 중 아무거나 즉시 실행\n- 레이트 리밋 트래커가 일일 상한선을 넘지 않게 관리 (전형적 사용량: ~17%)\n\n**자는 동안에:**\n- RAG 인덱스가 매시간 자동 업데이트 *(Obsidian 연동은 선택 사항 — Markdown 폴더 아무거나 됩니다)*\n- 팀 보고서, ADR, 일일 결정 사항이 구조화된 Markdown으로 동기화\n- 모든 주요 결정이 `decisions/*.jsonl`에 영구 감사 로그로 기록\n- 매 30분마다 시스템 헬스 체크; 이상 징후 발견 시 Discord 알림\n\n**결론:** Claude가 하루 18–20시간 일합니다. 직접 하지 않고 10분 리뷰로 끝납니다.\n\n---\n\n## 빠른 시작\n\n\u003e **사전 요구사항:**\n\u003e - **Claude Max 또는 Pro 구독** — 모든 태스크가 `claude -p` 호출 (Pro는 가벼운 사용에 충분; 24/7 운영은 Max 권장)\n\u003e - **Claude Code CLI** — `npm install -g @anthropic-ai/claude-code` 후 `claude` 실행하여 브라우저 인증\n\u003e - **Node.js 22+** 및 **jq** — `node --version` / `jq --version`으로 확인\n\u003e - **Discord 봇 토큰** — [discord.com/developers](https://discord.com/developers/applications)에서 발급; 스크린샷 포함 안내: [discord/SETUP.md](discord/SETUP.md)\n\u003e - **플랫폼:** macOS 또는 Linux. Windows 사용자는 WSL2를 사용하세요.\n\n**Option A — Docker (가장 간단):**\n\n```bash\ngit clone https://github.com/Ramsbaby/jarvis ~/.jarvis\ncd ~/.jarvis\ncp discord/.env.example discord/.env\n# discord/.env에 DISCORD_TOKEN, GUILD_ID, CHANNEL_IDS 입력\ndocker compose up -d\n```\n\n실행 확인: `docker compose logs -f` — `Discord connected — Jarvis#XXXX` 메시지가 보여야 합니다.\n\n**Option B — 네이티브 (macOS / Linux):**\n\n```bash\ngit clone https://github.com/Ramsbaby/jarvis ~/.jarvis\ncd ~/.jarvis\n./install.sh              # 의존성 설치 + LaunchAgent + crontab 설정\n# discord/.env 편집 후:\nnode discord/discord-bot.js\n```\n\n확인 방법: 설정된 Discord 채널에 아무 말이나 입력하면 — 수 초 내로 Jarvis가 응답해야 합니다.\n\n**macOS 24/7 자동재시작 (크래시 시, 로그인 시):**\n\n```bash\nlaunchctl load ~/Library/LaunchAgents/ai.jarvis.discord-bot.plist\nlaunchctl list | grep jarvis   # 서비스가 실행 중으로 표시되어야 합니다\n```\n\n\u003e **처음이라면?** [discord/SETUP.md](discord/SETUP.md)에서 봇 생성, 서버/채널 ID 확인, 첫 응답 검증까지 스크린샷과 함께 안내합니다.\n\n### 의존성 티어\n\n원하는 만큼만 설치하세요:\n\n| 티어 | 명령어 | 용량 | 기능 |\n|------|--------|------|------|\n| **0 · Core** | `./install.sh --tier 0` | ~150 MB | Discord 봇 기본, RAG 없음 |\n| **1 · Standard** | `./install.sh --tier 1` | ~350 MB | + SQLite 히스토리 + BM25 검색 |\n| **2 · Full** | `./install.sh` (기본) | ~700 MB | + LanceDB 벡터 검색 + OpenAI 임베딩 |\n\n---\n\n## 설정\n\n**`discord/.env`** — `.env.example`에서 복사\n\n```env\nBOT_NAME=Jarvis\nBOT_LOCALE=ko                      # en 또는 ko\nDISCORD_TOKEN=                     # discord.com/developers에서 발급\nGUILD_ID=                          # Discord 서버 ID\nCHANNEL_IDS=                       # 봇이 감시할 채널 ID (쉼표 구분)\nOWNER_NAME=이름\nOPENAI_API_KEY=                    # 선택: 벡터 RAG 임베딩용\nNTFY_TOPIC=                        # 선택: ntfy.sh 모바일 푸시\n```\n\n**`config/tasks.json`** — 나만의 크론 태스크 정의:\n\n```json\n{\n  \"id\": \"morning-standup\",\n  \"name\": \"모닝 스탠드업\",\n  \"schedule\": \"5 8 * * *\",\n  \"prompt\": \"오늘의 최우선 사항을 일정과 최근 컨텍스트를 바탕으로 요약해줘.\",\n  \"output\": [\"discord\"],\n  \"discordChannel\": \"bot-daily\",\n  \"depends\": [\"council-insight\", \"tqqq-monitor\"],\n  \"retry\": { \"max\": 3, \"backoff\": \"exponential\" }\n}\n```\n\n`depends` 배열이 크로스팀 컨텍스트를 자동 주입합니다: `tqqq-monitor`가 오늘 실행됐다면 그 결과가 스탠드업 프롬프트 앞에 자동으로 붙습니다. 별도 코드 없음.\n\n---\n\n## 자주 묻는 질문\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eObsidian이 꼭 필요한가요?\u003c/strong\u003e\u003c/summary\u003e\n\n아닙니다. Obsidian은 선택 사항입니다. Jarvis는 어떤 Markdown 폴더도 지식 베이스로 사용할 수 있습니다. vault-sync 기능은 Obsidian과 연동되지만, 봇은 Obsidian 없이도 정상 동작합니다.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWindows에서도 작동하나요?\u003c/strong\u003e\u003c/summary\u003e\n\n네이티브로는 안 됩니다 — Jarvis는 bash 스크립트와 macOS의 `launchd`를 사용합니다. Windows 사용자는 **WSL2** 또는 Docker로 실행하세요.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClaude 레이트 리밋을 다 써버리지 않을까요?\u003c/strong\u003e\u003c/summary\u003e\n\n거의 그렇지 않습니다. 기본 76개 태스크 기준, 하루 사용량은 Claude Max 레이트 리밋의 약 **17%** 수준입니다 — 실제 설치 환경에서 측정한 수치입니다. 내장된 레이트 리밋 트래커가 한도에 가까워지면 태스크를 일시 정지하고 자동으로 재개합니다.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClaude Pro만 있는데 작동하나요?\u003c/strong\u003e\u003c/summary\u003e\n\n네, 가벼운 사용은 됩니다. Claude Pro는 Discord 봇과 소수의 크론 태스크에 충분합니다. 76개 태스크를 24/7 풀 스케줄로 돌리려면 Pro 티어 레이트 리밋을 감안해 Claude Max를 권장합니다.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e크론 태스크가 실패하면 어떻게 되나요?\u003c/strong\u003e\u003c/summary\u003e\n\n각 태스크에는 재시도 로직이 내장되어 있습니다 (기본: 지수 백오프, 최대 3회). 그래도 실패하면 Discord 알림과 선택적으로 ntfy 스마트폰 푸시가 전송됩니다. 봇은 계속 실행됩니다 — 한 태스크 실패가 나머지에 영향을 주지 않습니다.\n\n\u003c/details\u003e\n\n---\n\n## 슬래시 명령어\n\n| 명령어 | 기능 |\n|--------|------|\n| `/search \u003c쿼리\u003e` | RAG 지식 베이스 시맨틱 검색 |\n| `/status` | 시스템 헬스: 업타임, 레이트 리밋, 크론 현황 |\n| `/tasks` | 등록된 크론 태스크 목록과 스케줄 |\n| `/run \u003c태스크ID\u003e` | 크론 태스크 즉시 수동 실행 |\n| `/threads` | 최근 대화 스레드 목록 |\n| `/alert \u003c메시지\u003e` | Discord + ntfy 모바일 푸시 동시 전송 |\n| `/usage` | 토큰 사용량 + 레이트 리밋 통계 |\n| `/remember \u003c텍스트\u003e` | RAG에 영구 메모리 항목 저장 |\n| `/clear` | 현재 세션 컨텍스트 초기화 |\n| `/stop` | 실행 중인 `claude -p` 프로세스 중단 |\n\n---\n\n## 로드맵\n\n| 단계 | 상태 | 내용 |\n|------|------|------|\n| **Phase 0** | ✅ 완료 | 버그 수정, 구조화 로깅, 4계층 자가복구 |\n| **Phase 1** | ✅ 완료 | LLM Gateway (멀티프로바이더), Bash/Node 모듈 분리 |\n| **Phase 2** | ✅ 완료 | 플러그인 시스템, Lite/Company 모드, Team YAML, `jarvis init` |\n| **Phase 3** | ✅ 완료 | 오픈소스 공개 (체크리스트 12/12), Nexus CIG v3 |\n| **Phase 4** | 🔜 예정 | 웹 대시보드, Slack 어댑터, 다국어 지원 |\n\n자세한 내용과 기여 영역은 [ROADMAP.md](ROADMAP.md) 참고.\n\n---\n\n## 파일 구조\n\n```\n~/.jarvis/\n├── discord/          # Discord 클라이언트, 핸들러, 포맷터, 슬래시 명령어\n├── bin/              # 진입점: ask-claude.sh, bot-cron.sh, jarvis-init.sh\n├── lib/              # 핵심: rag-engine.mjs, mcp-nexus.mjs, llm-gateway.sh\n├── config/           # tasks.json, monitoring.json, anti-patterns.json\n├── scripts/          # watchdog, 감사, vault-sync, KPI, E2E 테스트\n├── teams/            # 12개 팀 정의 (YAML + 시스템 프롬프트)\n├── plugins/          # 파일 컨벤션 플러그인 시스템 (.yml 하나 추가 = 등록)\n├── context/          # 태스크별 배경 지식 (런타임에 자동 주입)\n├── results/          # 크론 태스크 출력 이력\n├── rag/              # LanceDB 데이터베이스 + 팀 보고서\n├── agents/           # CEO, 인프라 총괄, 전략 어드바이저 에이전트 프로필\n├── adr/              # 아키텍처 결정 기록 (ADR-001 ~ ADR-010)\n└── docs/             # 아키텍처, 운영, 팀 문서\n```\n\n---\n\n## 플랫폼별 참고\n\n| 기능 | macOS (네이티브) | Linux / Docker |\n|------|----------------|----------------|\n| 프로세스 감시 | `launchd` KeepAlive — 크래시 시 재시작, 로그인 시 자동 시작 | Docker `restart: always` |\n| Watchdog / Guardian | cron + bash (포함) | 동일 (컨테이너 내부 실행) |\n| Apple 연동 | Notes.app, Reminders (선택) | 지원 안 함 |\n| 스토리지 | 로컬 파일시스템 | Docker 볼륨 |\n\n---\n\n## 문서\n\n| | |\n|--|--|\n| [discord/SETUP.md](discord/SETUP.md) | 전체 설치 가이드: 봇 생성, 채널 설정, 첫 실행 |\n| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | 아키텍처 심층 분석: Nexus CIG, 자가복구, RAG |\n| [docs/OPERATIONS.md](docs/OPERATIONS.md) | 크론 운영, 모니터링, 장애 대응 |\n| [docs/TEAMS.md](docs/TEAMS.md) | 12개 AI 팀: 역할, 스케줄, 컨텍스트 흐름 |\n| [adr/ADR-INDEX.md](adr/ADR-INDEX.md) | 아키텍처 결정 기록 (10개 결정 문서화) |\n| [CHANGELOG.md](CHANGELOG.md) | 전체 릴리스 이력 |\n| [ROADMAP.md](ROADMAP.md) | 예정 기능 및 기여 영역 |\n\n---\n\n## 기여하기\n\n```bash\ngit clone https://github.com/Ramsbaby/jarvis\n# 변경 작업\nbash scripts/e2e-test.sh   # 50개 항목 로컬 검증\n# Pull Request 오픈\n```\n\nPhase 4 항목(웹 대시보드, Slack 어댑터)에 대한 기여를 환영합니다. [ROADMAP.md](ROADMAP.md) 참고.\n\n---\n\n## 라이선스\n\nMIT — [LICENSE](LICENSE) 참고\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.md\"\u003eEnglish README →\u003c/a\u003e\n  \u003cbr\u003e\u003cbr\u003e\n  Jarvis가 도움이 됐다면 ⭐ 하나가 다른 개발자들이 찾는 데 큰 힘이 됩니다.\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRamsbaby%2Fjarvis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRamsbaby%2Fjarvis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRamsbaby%2Fjarvis/lists"}