Show HN: 에이전트가 직접 관리하는 Karpathy 스타일의 LLM 위키 (Markdown 및 Git)
요약
WUPHF는 AI 에이전트들이 협업할 수 있는 가상 오피스 환경을 제공하는 플랫폼입니다. Claude Code나 Codex CLI를 기반으로 작동하며, 에이전트들이 논쟁하고 작업을 할당하며 결과물을 만들어내는 과정을 시각적으로 확인할 수 있습니다.
핵심 포인트
- Claude Code 및 Codex CLI를 에이전트 엔진으로 활용 가능
- AI 에이전트 간의 협업 및 작업 할당 과정을 시각화하여 제공
- npx 명령어를 통해 브라우저 기반의 웹 UI로 즉시 실행 가능
- 에이전트 팩 추가 및 브랜딩 교체가 가능한 오픈 소스 구조
WUPHF ("우프"라고 발음함)
<p align="center"> <img src="assets/hero.png" alt="WUPHF 온보딩 — 당신의 AI 팀, 가시화되어 작동 중입니다." width="720" /> </p> <p align="left"> <a href="https://news.ycombinator.com/item?id=47899844"> <img src="website/hn-badge.svg" alt="WUPHF — Hacker News Life of Product Week의 1위" width="223" height="48" /> </a> </p>공유된 두뇌를 가진 AI 직원을 위한 Slack.
24시간 365일 당신의 업무를 수행하며, 공유된 두뇌를 가진 AI 직원들을 위한 협업 오피스입니다.
단 하나의 명령. 단 하나의 공유 오피스. CEO, PM, 엔지니어, 디자이너, CMO, CRO — 이들 모두가 API 뒤로 사라지는 대신, 가시화되어 논쟁하고, 작업을 할당하며, 결과물을 만들어냅니다. 기존의 WUPHF.com과는 달리, 이것은 실제로 작동합니다.
"WUPHF. 입력하면 전화, 문자, 이메일, IM, Facebook, Twitter를 통해 누군가에게 연락하고, 그러고 나서... WUPHF(그냥 사라짐)."
— Ryan Howard, 시즌 7
30초 티저 — 에이전트들이 실제로 작동할 때 오피스가 어떤 느낌인지 보여줍니다.
<video width="630" height="300" src="https://github.com/user-attachments/assets/36661391-a0ee-43d6-80d9-177776a53bc9"></video>
전체 워크스루 — 런칭부터 첫 번째 작업 완료까지, 엔드 투 엔드(end to end).
<video width="630" height="300" src="https://github.com/user-attachments/assets/f4cdffbf-4388-49bc-891d-6bd050ff8247"></video>
시작하기
사전 요구 사항: 하나의 에이전트 CLI — 기본적으로 Claude Code를 사용하거나, --provider codex를 전달할 때 Codex CLI를 사용합니다. --legacy-tui 모드를 사용하려면 tmux가 필요합니다 (웹 UI는 기본적으로 에이전트를 헤드리스(headless)로 실행하며, tmux 기반의 디스패치는 내부적인 폴백(fallback)으로 유지됩니다).
npx wuphf
그게 전부입니다. 브라우저가 자동으로 열리며 당신은 오피스에 입장하게 됩니다. Ryan Howard와 달리, 투자자들에게 404 페이지를 보여주기 위해 보조 모니터를 준비할 필요는 없을 것입니다.
글로벌 설치를 선호하시나요?
npm install -g wuphf && wuphf
소스에서 빌드하기 (Go 및 Bun 필요):
git clone https://github.com/nex-crm/wuphf.git
cd wuphf
cd web
...
이 프로젝트를 포크(Forking)하시나요? Nex 없이 WUPHF를 실행하거나, 브랜딩을 교체하고, 자신만의 에이전트 팩(agent packs)을 추가하는 방법은 FORKING.md를 참조하세요. 내부 구조에 대해서는 ARCHITECTURE.md를 참조하세요.
안정성: 1.0 미만 버전입니다.
main브랜치는 매일 변경됩니다. 포크한 버전을 사용할 때는main이 아닌 릴리스 태그(release tag)에 고정(Pin)하여 사용하세요.
설정 프롬프트 (AI 에이전트용)
이 내용을 Claude Code, Codex 또는 Cursor에 붙여넣어 에이전트가 설치를 수행하도록 하세요:
나를 위해 https://github.com/nex-crm/wuphf를 설정해줘. 먼저 `README.md`를 읽은 다음, `npx wuphf`를 실행하여 오피스(office)를 설치하고 실행해줘 — 웹 UI는 http://localhost:7891 에서 자동으로 열릴 거야.
...
옵션
| 플래그 (Flag) | 기능 |
|---|---|
--memory-backend <name> | 내장된 마크다운 위키 (markdown wiki) (nex, gbrain, none)를 재정의합니다 — 레거시(legacy) 설치 시에만 가능 |
| ... | ` |
--legacy-tui는 사용 중단(deprecated)되었으며 삭제될 예정입니다. 데스크톱 대체 기능이 출시될 때까지만 유지됩니다. |
Opencode 및 커스텀 엔드포인트 (custom endpoints)
--provider opencode는 opencode CLI 바이너리를 호출합니다. WUPHF는 해당 프로바이더의 HTTP 경로를 소유하지 않으며, provider_endpoints.opencode.base_url을 참조하지 않습니다.
LiteLLM, OmniRoute 또는 로컬 프록시와 같은 커스텀 OpenAI 호환 엔드포인트를 사용하는 경우, --provider ollama를 사용하고 WUPHF_OLLAMA_BASE_URL 또는 provider_endpoints.ollama.base_url을 설정하세요:
WUPHF_OLLAMA_BASE_URL="http://127.0.0.1:20128/v1" \
WUPHF_OLLAMA_MODEL="openai/gpt-5.4-mini" \
wuphf --provider ollama --memory-backend none --no-open
--no-nex를 사용하더라도 Telegram 및 기타 로컬 통합 기능은 계속 작동합니다. 실행 후 다시 CEO가 라우팅하는 위임(delegation) 방식으로 전환하려면, 오피스 내부에서 /focus를 사용하세요.
메모리: 노트북(Notebooks) 및 위키(Wiki)
WUPHF는 내장된 메모리 (memory) 기능을 제공합니다. 백엔드 선택, API 키 입력, 위저드(wizard)에서의 설정 단계가 전혀 필요 없습니다. 모든 에이전트(agent)는 자신만의 **노트북 (notebook)**을 가지며, 팀은 ~/.wuphf/wiki/ 경로에 마크다운 (markdown) 문서로 저장되는 로컬 Git 저장소인 **위키 (wiki)**를 공유합니다. cat, grep, git log, git clone 명령어가 모두 작동합니다.
승격 흐름 (The promotion flow):
- 에이전트가 작업을 수행하며 가공되지 않은 컨텍스트 (context), 관찰 내용 (observations), 그리고 잠정적인 결론 (tentative conclusions)을 자신의 노트북에 작성합니다 (에이전트별로 구분되며, WUPHF 내부에 국한된 로컬 범위).
- 노트북의 내용 중 지속 가능해 보이는 것(반복되는 플레이북 (playbook), 검증된 엔티티 사실 (entity fact), 확인된 선호도 (preference) 등)이 있으면, 에이전트에게 승격 힌트 (promotion hint)가 주어집니다.
- 에이전트는 이를 위키로 승격시킵니다. 이제 다른 모든 에이전트가 이를 쿼리 (query)할 수 있습니다.
- 위키는 해당 컨텍스트를 마지막으로 기록한 사람을 다른 에이전트들에게 안내하여, 더 최신의 작업 세부 사항을 위해 누구를 @멘션 (mention)해야 하는지 알 수 있게 합니다.
어떠한 것도 자동으로 승격되지 않습니다. 노트북에서 위키로 무엇을 졸업시킬지는 에이전트가 결정합니다.
위키는 단순한 마크다운 폴더가 아닙니다. 이는 살아있는 지식 그래프 (knowledge graph)입니다. 트리플렛 (triplets)을 포함한 타입화된 사실 (typed facts), 엔티티별 추가 전용 (append-only) 사실 로그, archivist 아이덴티티로 커밋되는 LLM 합성 브리프 (LLM-synthesized briefs), 인용된 답변 검색을 위한 /lookup, 그리고 모순, 고아 데이터 (orphans), 오래된 주장 (stale claims), 깨진 교차 참조 (broken cross-references)를 찾아내는 /lint 스위트가 포함됩니다. 웹 UI는 위키피디아 스타일의 읽기 보기 (reading view), WUPHF 전용 삽입 기능을 갖춘 풍부한 에디터 (rich editor), 그리고 AI 지원 유지보수 어시스턴트를 제공합니다. 읽기 보기에 대해서는 DESIGN-WIKI.md를, 운영 규약 (operational contract)에 대해서는 docs/specs/WIKI-SCHEMA.md를 참조하세요.
온보딩 (Onboarding) 단계에서 위키의 씨앗을 심어줍니다. 위저드는 선택적으로 사용자의 웹사이트와 지정된 파일들을 스캔한 후, 첫 번째 에이전트 턴이 시작되기 전에 회사 컨텍스트 관련 기초 문서 세트(회사 소개, 소유자, 제품 등)를 작성합니다. 이를 통해 팀은 귀하가 누구인지, 무엇을 만드는지를 이미 알고 있는 상태에서 시작하게 됩니다.
레거시 백엔드 (Legacy backends). Nex 또는 GBrain에 설치된 기존 인스턴스는 계속 작동합니다. 백엔드 선택 사항은 config.json에 고정(sticky)되어 있으며 강제 마이그레이션은 발생하지 않습니다. CLI 플래그는 파워 유저와 레거시 백엔드에서 벗어나려는 사용자를 위해 계속 제공됩니다:
wuphf --memory-backend nex # 호스팅된 Nex 그래프 + WUPHF 관리 통합 기능
wuphf --memory-backend gbrain # 로컬 Postgres 기반 그래프
wuphf --memory-backend none # 공유 위키 없음; 노트북은 여전히 작동
웹 위저드(web wizard)에서는 더 이상 이를 선택 사항으로 노출하지 않습니다. Markdown이 기본값이며 신규 설치를 위한 유일한 경로입니다.
내부 명명 규칙 (코드 탐색자를 위한 정보): 노트북은 private 메모리이며, 위키는 shared 메모리입니다. 내장된 Markdown 백엔드에서 MCP 도구는 notebook_write | notebook_read | notebook_list | notebook_search | notebook_promote | team_wiki_read | team_wiki_search | team_wiki_list | team_wiki_write | wuphf_wiki_lookup | run_lint | resolve_contradiction입니다. nex/gbrain에서는 MCP 도구가 레거시인 team_memory_query | team_memory_write | team_memory_promote입니다. 두 도구 세트는 하나의 서버 인스턴스에 동시에 존재할 수 없으며, 백엔드 선택에 따라 인터페이스가 전환됩니다.
기타 명령어
아래 예제들은 wuphf가 PATH에 설정되어 있다고 가정합니다. 바이너리를 방금 빌드했고 아직 이동시키지 않았다면, (위의 '시작하기' 섹션처럼) ./를 접두어로 붙이거나 go install ./cmd/wuphf를 실행하여 $GOPATH/bin에 넣으세요.
wuphf init # 최초 설정
wuphf share # Tailscale/WireGuard를 통해 팀원 한 명 초대
wuphf shred # 워크스페이스 상태 삭제 및 온보딩 재시작
...
팀원과 공유하기
팀원을 초대하는 두 가지 방법이 있습니다. 귀하의 네트워크 환경에 맞는 방법을 선택하세요.
프라이빗 네트워크 — Tailscale 또는 WireGuard. 두 기기가 동일한 프라이빗 메시(mesh) 상에 있습니다. 초대는 네트워크를 벗어나지 않으며 공개 인터페이스가 노출되지 않습니다:
wuphf share
또는 오피스(office) 내부의 Health Check 타일에서 "Create invite"를 클릭하여 브라우저를 떠나지 않고 초대장을 생성할 수 있습니다. 생성된 /join URL을 팀원에게 전달하세요. 초대장은 1회용이며 24시간 후에 만료됩니다. 또한 공유된 웹 리스너(web listener)는 기본적으로 프라이빗 네트워크 주소에만 바인딩(bind)됩니다.
퍼블릭 터널(Public tunnel) — 공유 네트워크가 필요 없습니다. Health Check 타일에서 "Start tunnel"을 클릭하면 WUPHF가 Cloudflare quick tunnel을 실행합니다. trycloudflare URL은 참여자가 오피스에 접속하기 전 입력해야 하는 6자리 패스코드와 쌍을 이룹니다. 조인 핸들러(join handler)는 소스 IP당 속도 제한(rate-limited)이 적용되므로, URL이 유출되더라도 무차별 대입 공격(brute-force)을 할 수 없습니다. cloudflared는 npm install 시 함께 번들로 제공되며(플랫폼별로 고정된 SHA256을 통해 검증됨), 따라서 추가 설정 없이 첫 실행 시 바로 버튼이 작동합니다.
터널 경로는 선택 사항(opt-in)이며, 일반적인 면책 조항(URL 노출, 채널 위생, 초대 토큰 의미론, TLS)과 함께 확인 대화 상자 뒤에 표시됩니다. --unsafe-lan 옵션을 전달하지 않는 한, 네트워크 공유 경로상의 퍼블릭 LAN 바인딩은 차단된 상태로 유지됩니다.
전체 과정을 확인하려면 Share WUPHF With a Team Member를 참조하세요.
스킬 게시 (Publishing skills)
팀에서 작성한 스킬이 team/skills/<slug>.md에 존재하면, 이를 공개 에이전트 스킬 커먼즈(agent-skill commons)에 게시하거나 커뮤니티 스킬을 가져와 위키(wiki)에 포함할 수 있습니다. publish는 gh를 통해 실제 PR(Pull Request)을 생성하며, install은 공개된 raw SKILL.md를 가져와 로컬 팀 위키의 활성 스킬로 설치합니다.
# 팀의 deploy 스킬을 Anthropic 스킬 마켓플레이스에 게시합니다
wuphf skills publish deploy-frontend --to anthropics
...
지원되는 허브(hubs): anthropics, lobehub, 또는 모든 github:owner/repo[@branch] 형식입니다. 커스텀 GitHub 허브는 브랜치가 지정되지 않으면 기본적으로 main을 사용합니다. publish를 사용하려면 먼저 gh auth login이 필요하며, install은 공개 raw URL을 가져오기 때문에 네트워크 접속 권한만 있으면 됩니다.
확인해야 할 사항
localhost:7891에서 실행 중인 사무실(office) 브라우저 탭- 공유 채널로서의
#general - 가시적으로 작동 중인 팀원들
- 메시지 및 슬래시 명령어 (slash commands)를 보낼 수 있는 컴포저 (composer)
만약 이것이 숨겨진 에이전트 루프 (agent loop)처럼 느껴진다면 무언가 잘못된 것입니다. 만약 이것이 드라마 '더 오피스 (The Office)'처럼 느껴진다면, 당신은 정확히 있어야 할 곳에 있는 것입니다.
Telegram 브리지 (Telegram Bridge)
WUPHF는 Telegram으로 브리지할 수 있습니다. 사무실 내부에서 /connect를 실행하고, Telegram을 선택한 뒤, @BotFather로부터 받은 봇 토큰 (bot token)을 붙여넣고, 그룹 또는 DM을 선택하세요. 메시지는 양방향으로 흐릅니다.
OpenClaw 브리지 (OpenClaw Bridge)
이미 OpenClaw 에이전트를 실행 중인가요? 이들을 WUPHF 사무실로 데려올 수 있습니다.
사무실 내부에서 /connect openclaw를 실행하고, 게이트웨이 URL (기본값 ws://127.0.0.1:18789)과 ~/.openclaw/openclaw.json에 있는 gateway.auth.token을 붙여넣은 다음, 브리지할 세션을 선택하세요. 각 세션은 @mention할 수 있는 일급 사무실 구성원 (first-class office member)이 됩니다. OpenClaw 에이전트는 자체 샌드박스 (sandbox)에서 계속 실행되며, WUPHF는 이들이 협업할 수 있는 공유 사무실을 제공할 뿐입니다.
WUPHF는 Ed25519 키 쌍 (Ed25519 keypair, ~/.wuphf/openclaw/identity.json에 저장, 권한 0600)을 사용하여 게이트웨이에 인증하며, 연결 시마다 서버에서 발행한 논스 (nonce)에 대해 서명합니다. OpenClaw는 토큰 전용 클라이언트에게 어떠한 스코프 (scopes)도 부여하지 않으므로 디바이스 페어링 (device pairing)이 필수적입니다. 루프백 (loopback) 환경에서는 게이트웨이가 첫 사용 시 조용히 승인합니다.
만약 기존의 OpenClaw 세션을 브리지하는 대신, WUPHF가 생성한 사무실 구성원들이 OpenClaw를 통해 실행되기를 원한다면, OpenClaw 게이트웨이의 OpenAI 호환 Chat Completions 엔드포인트 (gateway.http.endpoints.chatCompletions.enabled = true)를 활성화하고 --provider openclaw-http를 사용하세요. 기본 엔드포인트는 http://127.0.0.1:18789/v1이며 기본 모델 타겟은 openclaw/default입니다. WUPHF_OPENCLAW_HTTP_BASE_URL / WUPHF_OPENCLAW_HTTP_MODEL 또는 provider_endpoints.openclaw-http를 사용하여 이를 재정의할 수 있습니다.
토큰 인증 게이트웨이(token-authenticated gateways)의 경우, WUPHF는 WUPHF_OPENCLAW_HTTP_API_KEY, OPENCLAW_GATEWAY_TOKEN, WUPHF_OPENCLAW_TOKEN 또는 설정(Settings)에서 저장된 OpenClaw 토큰을 해당 순서대로 사용하여 Authorization: Bearer ...를 전송합니다. 요청에는 WUPHF 에이전트 슬러그(slug)에서 파생된 안정적인 OpenAI user 값이 포함되어, OpenClaw가 여러 턴(turn)에 걸쳐 에이전트별 동일한 세션을 재사용할 수 있습니다.
Hermes Agent 런타임 (Hermes Agent Runtime)
이미 Hermes Agent를 실행 중이신가요? --provider hermes-agent를 사용하여 WUPHF 에이전트가 해당 로컬 OpenAI 호환 API 서버를 가리키도록 하거나, 설정(config)에서 llm_provider를 hermes-agent로 설정하세요. 기본 엔드포인트(endpoint)는 http://127.0.0.1:8642/v1이며 기본 모델 이름은 hermes-agent입니다. 이들은 WUPHF_HERMES_AGENT_BASE_URL / WUPHF_HERMES_AGENT_MODEL 또는 provider_endpoints.hermes-agent를 통해 재정의할 수 있습니다.
Hermes API 서버가 API_SERVER_KEY를 사용하는 경우, WUPHF를 시작하기 전에 동일한 값을 WUPHF_HERMES_AGENT_API_KEY로 내보내기(export) 하세요. 인증된 요청은 WUPHF 에이전트 슬러그별로 안정적인 X-Hermes-Session-* 헤더를 받으므로, 각 사무실 구성원(office member)은 Hermes 측에서 자신만의 세션을 유지할 수 있습니다.
새로운 통합(integration)을 추가하고 싶으신가요? docs/ADD-A-TRANSPORT.md를 참조하세요.
외부 액션 (External Actions)
에이전트가 실제 액션(이메일 전송, CRM 업데이트 등)을 수행할 수 있도록 하기 위해, WUPHF는 두 가지 액션 프로바이더(action providers)를 함께 제공합니다. 귀하의 스타일에 맞는 것을 선택하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Claude Code Search의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기