본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 19. 18:48

wshm-dev/wshm

요약

wshm은 AI 코드 리뷰, 머지 큐, 이슈 자동 수정 등 5가지 개발 자동화 도구를 하나의 Rust 바이너리에 통합한 셀프 호스팅 솔루션입니다. GitHub, GitLab 등 다양한 플랫폼과 연동되며, Claude, OpenAI뿐만 아니라 Ollama를 통한 로컬 모델까지 사용자가 원하는 AI 제공업체를 자유롭게 선택할 수 있습니다.

핵심 포인트

  • AI 코드 리뷰, 머지 큐, 이슈 자동 수정, 워크플로우 자동화, 트리아지 기능을 단일 바이너리로 제공
  • SaaS 의존성 없이 셀프 호스팅이 가능하며, 데이터 보안과 비용 효율성 강조
  • Claude, OpenAI, Google 등 주요 API부터 Ollama를 통한 로컬 모델까지 폭넓은 AI 연동 지원
  • Linux, Windows, Docker, Kubernetes 등 다양한 환경에서 실행 가능한 높은 유연성

하나의 바이너리에 담긴 다섯 가지 도구. AI 코드 리뷰 (AI code review), 머지 큐 (merge queue), 이슈 자동 수정 (issue auto-fix), 워크플로우 자동화 (workflow automation), 그리고 트리아지 (triage) — 이 모든 기능이 단일 셀프 호스팅 (self-hosted) Rust 바이너리에 포함되어 있습니다.

GitHub, GitLab, Gitea, Azure DevOps와 연동됩니다. Claude Max, OpenAI, 또는 로컬 Ollama를 연결하세요 — 선택은 당신의 몫입니다. 당신의 AI 키, 당신의 데이터. SaaS 의존성이 없습니다.

Linux (x86_64 & ARM64) 및 Windows (x86_64)에서 실행됩니다.

🧪 다음에서 구축되고 실전 테스트를 거쳤습니다:

RTK-ai Labs — onrtk-ai/rtk (Rust Token Killer)의 일상적인 백로그 (backlog) 고통 속에서 탄생했으며, 현재 팀이 자체 리포지토리 (repos)를 운영하기 위해 프로덕션 (production) 환경에서 사용 중입니다.

당신은 코드를 배포했습니다. 하지만 이제 월요일마다 수백 개의 오래된 이슈 (stale issues)를 분류하고, 중복된 버그 리포트 (bug reports)를 찾아내며, 머지 큐 (merge queue)를 관리하고

$ wshm queue
순위 PR 제목 위험 점수 CI 리뷰 조치
1 #891 fix: race in token refresh 낮음 94 OK 2/2 자동 머지 (AUTO-MERGE)
...
# Homebrew (macOS / Linux)
brew tap wshm-dev/tap && brew install wshm
# …또는 SHA256 검증을 포함한 일회성 설치 (Linux x86_64/aarch64, Windows는 Git Bash 사용)
...

wshm은 사용자가 추가 비용을 지불해야 하는 AI 제공업체(AI provider)를 절대 제공하지 않습니다. 이미 사용 중인 무엇이든 사용하세요.

Claude Max / Pro / Teamclaude CLI를 통한 OAuth 로그인, API 키 불필요, 별도 결제 불필요
모든 API 제공업체 (Any API provider)— Anthropic, OpenAI, Google, Mistral, Groq, DeepSeek, xAI, OpenRouter, Azure, Together, Fireworks, Cohere, Perplexity
로컬 모델 (Local models)— Ollama 또는 llama.cpp, 비용 제로, 데이터가 기기를 떠나지 않음

Anthropic OpenAI Google Mistral Groq DeepSeek xAI
OpenRouter Ollama Azure Together Fireworks Cohere Perplexity

단 하나의 정적 바이너리 (static binary). SaaS 의존성 없음. 코드가 존재하는 곳 어디에서나 실행됩니다.

플랫폼방법
VM / VPSsystemd 서비스, Homebrew를 통한 자동 업데이트, 모든 Linux
Dockerdocker run innovtech/wshm:latest — 멀티 아키텍처 (amd64 + arm64)
Composecp .env.example .env && docker compose up -d:3000에서 대시보드 실행
KubernetesHelm 차트, Kustomize 오버레이, 또는 deploy/ 아래의 원시 Job / CronJob 매니페스트
로컬 개발 (Local dev)wshm tui / wshm triage — Ollama와 함께 오프라인에서 작동

GitHub Action이 계획되어 있습니다 — #22를 팔로우하세요.

포지(Forge) 지원: GitHub (개인 + 조직), GitLab (.com + 셀프 관리형), Gitea / Forgejo / Codeberg, Azure DevOps (Services + Server).

wshm은 실제적인 필요에서 탄생했습니다: rtk-ai/rtk (Rust Token Killer)에서 계속 늘어나는 이슈(issues)와 풀 리퀘스트(pull requests)의 백로그를 분류(triaging)하기 위해서였습니다. GitHub 이슈를 자동 분류하기 위한 주말 스크립트로 시작된 것이 완전한 레포지토리 에이전트(repo agent)로 성장했습니다. 우리가 존재하기를 바랐던 바로 그 도구이며, 이제 다른 레포지토리에 배포되기 전 rtk 자체에서 실전 테스트를 마쳤습니다.

이슈 분류 (Issue triage)— AI 분류 (버그/기능/질문 등), 우선순위, 신뢰도 점수 산정, 자동 레이블링 (auto-labeling)
PR 분석 (PR analysis)— 위험 수준 (낮음/중간/높음), 유형 (기능/수정/문서), 요약, 리뷰 체크리스트
머지 큐 (Merge queue)— 점수 산정, 임계값 초과 시 자동 머지 (auto-merge), 충돌 감지
PR 상태 관리 (PR health)— 중복 감지, 오래된/좀비 PR (stale/zombie PR) 플래그 지정
동기화 (Sync)— 사용 중인 포지 (forge)로부터 이슈 및 PR의 전체 / 증분 페치 (full / incremental fetch)
실행 (Run)— 단일 명령 사이클: 동기화 + 분류 + 분석 + 큐 (sync + triage + analyze + queue)
백업 / 복구 (Backup / Restore)— 안전한 마이그레이션을 위한 .wshm/ 데이터 스냅샷
되돌리기 (Revert)— 모든 wshm 작업 취소 (댓글 제거, 레이블 제거, 분석 내용 삭제)
웹훅 알림 (Webhook notifications)— HMAC 서명이 포함된 일반 HTTP 웹훅
TUI— 풍부한 대화형 터미널 UI (이슈, PR, 큐, 통계)
데몬 + 웹 대시보드 (Daemon + Web dashboard)— Svelte 웹 UI (이슈, PR, 큐, 분류, 설정)가 내장된 지속적인 멀티 레포지토리 백그라운드 서비스
컨텍스트 내보내기 (Context export)— 레포지토리 컨텍스트를 LLM용 마크다운 (markdown)으로 덤프
마이그레이션 (Migrate)— SQLite와 PostgreSQL 간의 데이터 이동
14개의 AI 제공업체 (14 AI providers)— Anthropic, OpenAI, Google, Mistral, Groq, DeepSeek, xAI, Ollama (로컬), llama.cpp 등
Claude Max / Pro / Team 구독— 기존 Claude 플랜을 통한 OAuth 로그인 (별도의 API 키 과금 불필요)
4개의 Git 제공업체 (4 Git providers)— GitHub, GitLab, Gitea, Azure DevOps (셀프 호스팅 친화적)
스토리지 (Storage)— 기본값으로 SQLite (설정 불필요, 번들 포함), 또는 대안적인 기본 백엔드로 PostgreSQL 사용 가능
OIDC SSO— Google, GitHub, GitLab, Azure AD를 통한 로그인

오픈 소스 (OSS) 데몬 위에 계층화된 토큰 집약적 AI 기능 및 엔터프라이즈 통합:

풍부한 알림 (Rich notifications)— Discord, Slack, Teams (기본 제공되는 Free webhook sink 외 추가)
변경 이력 (Changelog)— 병합된 PR (Pull Request)으로부터 AI가 생성한 변경 이력 (markdown, JSON)
HTML/PDF 보고서 (HTML/PDF reports)— SLA 지표를 포함한 전체 저장소 상태 보고서
인라인 코드 리뷰 (Inline code review)— PR diff에 대한 라인별 AI 리뷰
자동 수정 (Auto-fix)— 이슈 설명으로부터 PR 생성 (Claude Code / Codex / 컨테이너화된 방식)
AI 충돌 해결 (AI conflict resolution)— AI 지원을 통한 자동 리베이스 (rebase)
개선 제안 (Improvement proposals)— 코드베이스를 분석하여 리팩토링/테스트/성능 관련 이슈 생성
클라우드 내보내기 (Cloud exports)— 이슈/PR/분석 결과를 외부 싱크(sink)로 전송:

  • 객체 스토리지 (Object storage):
    S3, Azure Blob, GCS

  • 데이터베이스 (Databases):
    PostgreSQL, MySQL, MongoDB, Elasticsearch, OpenSearch
    (위에서 언급한 기본 SQLite/PostgreSQL 백엔드와는 별개이며, 이는 추가적인 목적지입니다)

  • 객체 스토리지 (Object storage):
    비밀 관리 / 키 보관소 (Secret management / Key vaults)— HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager (라이선스 키, webhook 비밀값, DB URI, API 키를 설정 파일에서 분리)
    SAML SSO— Okta, Azure AD, 커스텀 IdP
    RBAC + 감사 로그 (RBAC + Audit log)— 조직, 역할, 작업 감사 추적

wshm은 모두 오픈 소스 (OSS)인 네 가지 인터페이스를 기본으로 제공합니다: CLI, TUI, 데몬 (daemon), 그리고 임베디드된 Svelte 웹 대시보드입니다.

wshm sync # 이슈 + PR 가져오기
wshm triage --apply # 열려 있는 이슈 분류 및 라벨링
wshm pr analyze --apply # 열려 있는 PR 분석 및 라벨링
...

풍부한 대화형 터미널 UI (Rich interactive terminal UI) — 터미널을 떠나지 않고 이슈, PR, 머지 큐 (merge queue) 및 통계 확인

wshm tui

데몬 (daemon)은 장시간 실행되는 멀티 리포지토리 (multi-repo) 서비스입니다: webhook 서버, 예약된 분류 (scheduled triage), 일반적인 webhook 알림, 그리고 https://127.0.0.1:3000에서 제공되는 임베디드된 Svelte 웹 대시보드.

Pro 플랜은 이 동일한 데몬 위에 풍부한 알림 (Discord/Slack/Teams)과 AI 기능 (리뷰, 자동 수정, 변경 이력, 보고서)을 추가합니다.

wshm daemon --config /etc/wshm/global.toml --poll

brew tap wshm-dev/tap
brew install wshm

현재 Homebrew formula는 Linux용 bottles(x86_64 + arm64)만 제공합니다. macOS 지원은 #22에서 추적 중입니다.

curl -fsSL https://raw.githubusercontent.com/wshm-dev/wshm/main/install.sh | sh

업그레이드하려면 다시 실행하세요. sh -s -- --version v0.28.3를 사용하여 특정 버전을 고정(Pin)할 수 있습니다.

모든 다운로드는 릴리스의 checksums.txt를 통해 검증됩니다.

# amd64
curl -LO https://github.com/wshm-dev/wshm/releases/latest/download/wshm_$(curl -s https://api.github.com/repos/wshm-dev/wshm/releases/latest | grep tag_name | cut -d'"' -f4 | tr -d v)_amd64.deb
sudo dpkg -i wshm_*_amd64.deb
Invoke-WebRequest -Uri https://github.com/wshm-dev/wshm/releases/latest/download/wshm-x86_64-pc-windows-msvc.zip -OutFile wshm.zip
Expand-Archive wshm.zip -DestinationPath $env:USERPROFILE\.wshm\bin
# 그 다음 %USERPROFILE%\.wshm\bin 을 PATH에 추가하세요
대상 (Target)바이너리 (Binary).deb
x86_64-unknown-linux-gnu
aarch64-unknown-linux-gnu
x86_64-pc-windows-msvc
x86_64-apple-darwin
aarch64-apple-darwin
cd your-repo
wshm config init # .wshm/config.toml 생성
export GITHUB_TOKEN=ghp_xxxxx
...

wshm login

Anthropic을 위한 세 가지 인증 경로를 지원합니다:

Claude Max / Pro / Team 구독— OAuth 로그인 (claude CLI의 ~/.claude/.credentials.json을 재사용하며, 추가 비용 없음)
Anthropic API keyexport ANTHROPIC_API_KEY=sk-ant-xxxxx
기타 13개 제공업체 중 하나— OpenAI, Google, Mistral, Groq, DeepSeek, xAI, Ollama (로컬), llama.cpp, …

wshm sync # GitHub에서 이슈(Issues) + PR을 가져옴
wshm triage --apply # 열려 있는 이슈를 분류하고 라벨(Label)을 지정함
wshm pr analyze --apply # 열려 있는 PR을 분석하고 라벨을 지정함
...
새 이슈(New Issue) → AI 분류 → 라벨(Label) + 우선순위(Priority) + 댓글(Comment)
├── 중복인가? → 링크와 함께 종료(close)
├── 정보 필요? → 세부 사항 요청
...
새 PR(New PR) → Diff + CI 상태 가져오기 → AI 분석 → 요약(Summary) + 리스크(Risk) + 체크리스트(Checklist)
└── 자동 라벨링(Auto-label) + 댓글
열린 PR (Open PRs) → 점수 산정 (Score) (CI, 리뷰, 생성 시기, 리스크, 충돌) → 순위 목록 (Ranked list)
└── 임계값(threshold) 초과 시 자동 병합 (Auto-merge)
열린 PR (Open PRs) → 병합 가능 여부 확인 (Check mergeable) → 충돌 발생 여부? (Conflicting?) → main 브랜치로부터 리베이스 (Rebase from main)
└── AI 해결 (AI resolution) (새 커밋 생성, 강제 푸시(force-push) 금지)

wshm은 GitHub 이벤트에 실시간으로 반응하는 지속적인 데몬 (daemon)으로 실행될 수 있습니다.

wshm daemon --apply --secret "whsec_your_webhook_secret"

그 다음, 저장소(repo)에 GitHub 웹훅 (webhook)을 설정하십시오:

URL: http://your-server:3000/webhook

Content type: application/json

Secret: --secret과 동일

Events: 이슈 (Issues), 풀 리퀘스트 (Pull requests), 이슈 댓글 (Issue comments)

wshm daemon --apply --poll --no-server

플래그 (Flag)설명 (Description)
--apply작업 수행 (기본적으로 드라이 런 (dry-run) 모드)
--pollGitHub 이벤트 API 폴링 (polling) 활성화
--poll-interval <N>폴링 간격 (초 단위, 기본값: 30)
--no-serverHTTP 웹훅 (webhook) 서버 비활성화
--bind <addr>바인드 주소 (기본값: 0.0.0.0:3000)
--secret <s>웹훅 (webhook) HMAC 비밀키
트리거 (Trigger)작업 (Action)
새 이슈 생성 (New issue opened)자동 분류 (Auto-triage) (분류, 라벨링, 댓글)
새/업데이트된 PR (New/updated PR)AI 분석 (AI analysis) (유형, 리스크, 리뷰 체크리스트)
/wshm triage 댓글이슈 재분류 (Re-triage)
/wshm analyze 댓글PR 재분석 (Re-analyze)
/wshm review 댓글인라인 AI 코드 리뷰 (Post inline AI code review) 게시
/wshm label <name>라벨 추가
/wshm unlabel <name>라벨 제거
/wshm queue병합 대기열 (merge queue) 위치 표시
/wshm healthPR 상태 확인 (health check)
/wshm help사용 가능한 명령어 목록 표시
5분마다 (스케줄러)증분 동기화 (Incremental sync) + 미분류 이슈 분류
wshm login # GitHub + AI 제공자 설정
wshm login --github # GitHub 전용 (gh auth login 사용)
wshm login --ai # AI 제공자 전용 (API 키 입력 요청)
...

자격 증명 (Credentials)은 .wshm/credentials에 저장됩니다.

(chmod 600, gitignore 처리됨).

PriorityGitHubAI
1GITHUB_TOKEN / WSHM_TOKEN env varANTHROPIC_API_KEY env var
2gh auth token (gh CLI)
3.wshm/credentials (from wshm login ).wshm/credentials
ProviderEnv VarLocal
anthropic (default)ANTHROPIC_API_KEY
openaiOPENAI_API_KEY
googleGOOGLE_API_KEY
mistralMISTRAL_API_KEY
groqGROQ_API_KEY
deepseekDEEPSEEK_API_KEY
xaiXAI_API_KEY
ollamayes
localyes (phi4-mini, smollm3-3b, qwen3-4b)

`wshm login --claude # 기존 Claude Max/Pro/Team 구독 사용

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
1

댓글

0