Hwip
What it does
Notify your phone, ask questions and get answers back from AI coding agents via Hwip.
- Connects 내 컴퓨터에서 실행
- Account or key Needs HWIP_API_KEY
- Category 개발자 도구
설치
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
검사 3/3 통과 · 내 컴퓨터에서 실행돼요
먼저: 어떤 AI를 쓰시나요?
쓰는 앱을 고르면 아래에 단계가 나옵니다.
Claude에 연결할 수 있지만 먼저 준비가 필요해요
Hwip 키가 필요해요 (제작자 사이트에서 만들기) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만) · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요
Hwip에 가입하고 키 만들기
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 요금과 무료 요금제는 제작자 사이트에서 확인하세요.
키 받는 방법은 아래 제작자 README에 있어요
컴퓨터용 Claude 앱 설정 파일 열기
SettingsDeveloperEdit Config
이 설정을 붙여 넣고 저장
{ "mcpServers": { "hwipit": { "command": "npx", "args": [ "-y", "@hwip/mcp-server" ], "env": { "HWIP_API_KEY": "your-value" } } } }키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
Claude를 끄고 다시 열기
해 보기
Hwip을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Claude가 Hwip을 쓰고 있다고 하거나 답에 Hwip 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
ChatGPT는 아직 Hwip에 연결할 수 없어요
Hwip는 내 컴퓨터에 설치해서 쓰지만 ChatGPT는 웹에서 도는 서버만 연결할 수 있어요
대신 이렇게 할 수 있어요
A · Hwip에 연결되는 앱 쓰기
- Hwip 키가 필요해요 (제작자 사이트에서 만들기) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만) · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요
- Hwip 키가 필요해요 (제작자 사이트에서 만들기) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)
- Hwip 키가 필요해요 (제작자 사이트에서 만들기) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)
- Hwip 키가 필요해요 (제작자 사이트에서 만들기) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)
B · 개발자 도구에서 ChatGPT에 연결되는 다른 서버
같은 분류에서 많이 쓰는 것 중 키 없이 주소만으로 연결되는 것을 골랐어요
- Sentry✓ ChatGPT
- Compiler Explorer✓ ChatGPT
- GitDiagram✓ ChatGPT
Claude Code에 연결할 수 있지만 먼저 준비가 필요해요
Hwip 키가 필요해요 (제작자 사이트에서 만들기) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)
Hwip에 가입하고 키 만들기
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 요금과 무료 요금제는 제작자 사이트에서 확인하세요.
키 받는 방법은 아래 제작자 README에 있어요
터미널 열기
Mac: Command+스페이스를 누르고 Terminal 입력 · Windows: PowerShell 열기
이 명령을 붙여 넣고 Enter
claude mcp add --scope user hwipit --env HWIP_API_KEY=your-value -- npx -y @hwip/mcp-serverEnter 전에 “your-value”를 내 키로 바꾸세요
키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
Claude Code에서 /mcp 입력
Hwip이 목록에 있고 연결됨으로 보이면 돼요
해 보기
Hwip을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Claude Code가 Hwip을 쓰고 있다고 하거나 답에 Hwip 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
Cursor에 연결할 수 있지만 먼저 준비가 필요해요
Hwip 키가 필요해요 (제작자 사이트에서 만들기) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)
Hwip에 가입하고 키 만들기
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 요금과 무료 요금제는 제작자 사이트에서 확인하세요.
키 받는 방법은 아래 제작자 README에 있어요
키 입력
Hwip 설정에서 HWIP_API_KEY가 비어 있어요. 내 키를 넣고 저장하세요
키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
Cursor에서 AI 채팅을 Agent 모드로 열기
해 보기
Hwip을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Cursor가 Hwip을 쓰고 있다고 하거나 답에 Hwip 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Cursor 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
VS Code에 연결할 수 있지만 먼저 준비가 필요해요
Hwip 키가 필요해요 (제작자 사이트에서 만들기) · 먼저 컴퓨터에 Node.js를 설치하세요 (한 번만)
Hwip에 가입하고 키 만들기
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 요금과 무료 요금제는 제작자 사이트에서 확인하세요.
키 받는 방법은 아래 제작자 README에 있어요
키 입력
Hwip 설정에서 HWIP_API_KEY가 비어 있어요. 내 키를 넣고 저장하세요
키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
VS Code에서 AI 채팅을 Agent 모드로 열기
해 보기
Hwip을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ VS Code가 Hwip을 쓰고 있다고 하거나 답에 Hwip 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 VS Code 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
개발자용: 터미널 명령과 JSON 설정
컴퓨터에 설치
Claude Code
claude mcp add --scope user hwipit --env HWIP_API_KEY=your-value -- npx -y @hwip/mcp-serverClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"hwipit": {
"command": "npx",
"args": [
"-y",
"@hwip/mcp-server"
],
"env": {
"HWIP_API_KEY": "your-value"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"hwipit": {
"command": "npx",
"args": [
"-y",
"@hwip/mcp-server"
],
"env": {
"HWIP_API_KEY": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"hwipit": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@hwip/mcp-server"
],
"env": {
"HWIP_API_KEY": "your-value"
}
}
}
}직접 입력할 값
HWIP_API_KEY비밀 envYour Hwip API key. Optional when ~/.hwip/config.json (from `hwip login`) holds one.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
한눈에 보기
어떤 앱에서 쓸 수 있나요
이 서버의 연결 방식과 각 앱의 공식 문서를 바탕으로 했어요. 2026년 11월 10일 확인.
내 컴퓨터에서 실행하는 앱
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
할 수 있는 일
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
기본 점검i
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 12일 점검
- ✓ 통과
제작자와 저장소 일치
레지스트리 이름이 GitHub 계정 hwipit 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
- ✓ 통과
계속 관리되고 있음
코드 마지막 변경: 7일 전
- ✓ 통과
라이선스 있음
Apache-2.0 사용
- – 해당 없음
엔드포인트 응답
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
- – 해당 없음
OAuth로 로그인
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
- … 아직 점검 안 함
도구 설명에 숨겨진 지시 없음
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
토론
질문하고, 팁을 나누고, 안 되는 점을 알려 주세요. "도움이 됨"이 많은 순서예요.
사용자 리뷰
아직 리뷰가 없어요
개발자 도구 카테고리의 다른 서버와 비교i
- 이 카테고리의 다른 서버 5802개 중 0%보다 스타가 많아요
- 이 카테고리의 다른 서버 5802개 중 73%보다 최근에 레지스트리에 공개됐어요
- 기본 점검 결과가 이 카테고리의 다른 서버 5802개 중 100%와 같거나 더 좋아요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
자주 묻는 질문
Hwip, 안전한가요?
해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
어떤 키나 코드가 필요한가요?
입력해야 할 값: HWIP_API_KEY
내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
아직 관리되고 있나요?
GitHub 저장소는 마지막으로 7일 전 변경됐고, 최신 버전(0.1.7)은 7일 전 레지스트리에 올라왔어요.
어떤 앱에서 쓸 수 있나요?
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
대신 쓸 수 있는 건 뭐가 있나요?
같은 카테고리에는: REA, GitHub, Serena MCP: the IDE for your agent
같은 카테고리의 다른 것
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Serena MCP: the IDE for your agent
A powerful toolkit for coding, providing semantic retrieval and editing capabilities.
제작자의 README
README 열기
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
@hwip/mcp-server
Your agent calls `hwip_ask`; the question lands on your phone as buttons + a text field; your reply comes back into the same tool call and the agent keeps going.
Hwip's MCP server is the agent side of that round trip — plus one-way notifications, clipboard, files, and channel broadcasts, all over the Model Context Protocol. Works with Claude Code, Cursor, Windsurf, Gemini CLI, and any MCP client.
Your agent calls hwip_ask → the question hits your phone → you tap Deploy → the call returns and the agent ships.
Part of the Hwip toolchain: @hwip/cli (installer, push CLI, tmux remote control) · hwipit/plugin (Claude Code plugin bundling this server) · the Hwip app on your phone.
New here? docs.hwip.app walks the whole setup — one command on your machine, the app on your phone, and a restart. The reference below assumes that is already done.
Setup
The easiest way to set up for all agents at once:
npm install -g @hwip/cli
hwip install
Needs Node 18.17 or later. On Node 22 or later hwip_ask hears the answer over a WebSocket the moment it is given; on older Node it polls, and the server says so on stderr at start.
This saves credentials to ~/.hwip/config.json and configures your agents automatically. The MCP server reads from this file — no env vars needed. Install globally so hwip cc (phone-driven sessions) works and hooks skip an npx cold-start; npx @hwip/cli install is a notifications-only alternative.
Claude Code (manual)
Install the server once, so each session starts the hwip-mcp binary directly instead of resolving the package through npx first:
npm install -g @hwip/mcp-server
Add to ~/.claude/settings.json:
{
"mcpServers": { "hwip": { "command": "hwip-mcp" } } }
Without a global install, "command": "npx", "args": ["-y", "@hwip/mcp-server"] works too; it only starts slower, because every session resolves the package first.
No env block needed: credentials come from ~/.hwip/config.json (written by hwip install). Add env vars only to override the file — e.g. a second account:
"env": { "HWIP_API_KEY": "ak_other_account" }
Cursor / Other MCP Clients
{
"command": "hwip-mcp" }
(after npm install -g @hwip/mcp-server, or "command": "npx", "args": ["-y", "@hwip/mcp-server"] without it.)
Environment Variables
| Variable | Required | Description |
|---|---|---|
HWIP_API_KEY | Yes* | API key from Settings > API Keys. One that cannot be sent as a header — a line break or another control character inside it, a character no key has — stops the server at start, with a message that says where the key is set and nothing of the key. So does an apiKey in ~/.hwip/config.json that is not text |
HWIP_HOOK_ID | No | Hook ID (optional — only needed for hwip_ask) |
HWIP_DEVICE_ID | No | Default target device for hwip_notify, hwip_clipboard and hwip_file (each call's targetDeviceId wins). Omit to send to all devices. hwip_ask does not use it |
HWIP_BASE_URL | No | API base URL (default: https://api.hwip.app/v1). A base URL that answers with a redirect is refused (REDIRECT_REFUSED): requests that carry your API key never follow one |
HWIP_WS_URL | No | Deprecated. WebSocket endpoint for the hook-response fast path. wsUrl in ~/.hwip/config.json wins over it and is where the value belongs; this is read only when the file has none, so a machine that predates the config field keeps working. It will stop being read |
HWIP_DISABLE_SESSION_CACHE | No | Set to 1/true to skip writing the session-id handoff file under ~/.cache/hwip/. Useful for read-only filesystems, ephemeral CI runners, or sandboxed envs that audit filesystem writes. The plugin's stop hook still works without it (transcript-path UUID extraction is the primary path; the cache is a fallback for older Claude Code versions). |
HWIP_AUTONAME | No | Set to 1/true to offer hwip_session_title, so the agent names its own session. hwip install sets it for agents with no session title of their own |
HWIP_SESSION_ID | No | Override the session id attached to pushes (grouping in the app). Auto-detected from the newest Claude Code transcript when unset |
\* If env vars are not set, the server reads from ~/.hwip/config.json (created by hwip install or hwip login). Unresolved ${...} interpolations are also treated as unset.
~/.hwip/config.json
| Key | Same as | Notes |
|---|---|---|
apiKey | HWIP_API_KEY | The environment variable wins |
baseUrl | HWIP_BASE_URL | The environment variable wins |
wsUrl | HWIP_WS_URL (deprecated) | The file wins. With neither, the prod API (https://api.hwip.app/v1) gets wss://ws.hwip.app, the cli listener's rule; another API base gets no socket, and hwip_ask polls |
hookId | HWIP_HOOK_ID | The environment variable wins |
deviceId | HWIP_DEVICE_ID | The environment variable wins |
A file that is not used because it is not valid JSON or UTF-8 text, or cannot be read, is named on stderr ("…so it is being ignored") even when HWIP_API_KEY is set: its hookId and deviceId are dropped with it.
Without an API key the server stops at start and says why: the file does not exist, it is not valid JSON, it is not valid UTF-8 text (such a file is not used at all, as in the cli), it has no apiKey, or it was ignored (below).
The file holds the key and says where the key is sent, so the server checks it before reading, by the same rule as the cli:
- Another user owns it, or anyone can write it (mode
002): the file is ignored —HWIP_API_KEYstill works — and a line on stderr says so. Runchmod 600 ~/.hwip/config.json. - The group can read or write it, or others can read it: used, with a warning. The server only reads the file;
hwip loginis what narrows it to0600. - A symlinked file (a dotfiles checkout) is judged by what it points at.
- A file that is not valid JSON, or cannot be read, may hold the
baseUrlyour key belongs to (staging, self-hosted), so a key fromHWIP_API_KEYis not sent to the default API in its place: the server stops at start, names the file, and goes ahead onceHWIP_BASE_URLsays where the key goes. (A file ignored for its mode is not trusted for a base URL either, and the default stands.) - A key from the file does not follow an address from the environment. The key in
~/.hwip/config.jsonbelongs to the addresses the file says (baseUrl, else the default API). IfHWIP_BASE_URLnames another origin, the server stops at start, naming both origins and no more, and goes ahead onceHWIP_API_KEYis set too (a key you gave with the address) or the variable is unset or on the same origin. The deprecatedHWIP_WS_URLis held to the same rule — with the file's key it is used only for the default socket's origin, otherwise it is skipped with a line on stderr (hwip_askpolls) — and puttingwsUrlin the file is the way to name another socket. wsUrlhas to be aws://orwss://URL without a space or#fragment; one that is not is ignored with a warning (the default socket, or polling).ws://andhttp://to a host other than this machine work, with a warning that the key travels in the clear.
Limits on what the server reads
A reply from the API is read only up to 8 MiB (an error body, 64 KiB), counted on the bytes that arrive rather than on Content-Length; a file download, up to 1 GiB. Past that the call fails with RESPONSE_TOO_LARGE or FILE_TOO_LARGE. The message the API words for an error reaches the agent as one line of at most 300 characters, control characters turned into spaces, and an error code that is not made of letters, digits and _.:- becomes UNKNOWN_ERROR.
Tools
Push titles are automatically prefixed with the project directory name — myapp · Build complete — so the phone feed stays scannable when several sessions push at once.
hwip_notify
Send a one-way push notification. An optional url opens on the device; the push stays a notification (a long body goes as a response.md file push instead).
title: "Build complete"
body: "All 42 tests passed" url: "https://github.com/org/repo/actions/runs/123" (optional) priority: "low" | "normal" | "high" | "urgent" targetDeviceId: "dev_..." (optional, overrides HWIP_DEVICE_ID)
hwip_clipboard
Copy text to the user's device clipboard. At most 96 KiB, measured as the server does (the text as JSON, UTF-8); longer text is refused with BODY_TOO_LONG before it is sent — use hwip_file with content. Not end-to-end encrypted (see Encryption): do not use it for secrets (keys, tokens, passwords); use hwip_notify or hwip_file for those.
text: "npm install @hwip/mcp-server"
targetDeviceId: "dev_..." (optional)
hwip_list
List recent push notifications.
limit: 5 (1-20, default: 5)
type: "note" (optional filter: note, link, file, clipboard, hook)
Returns: { pushes: [...], total: 5, hasMore: true }. A body is cut to 100 characters. An end-to-end encrypted push shows encrypted: true and no title or body — only the user's devices can open it.
hwip_dismiss
Mark a specific push as read.
pushId: "push_01HX..."
hwip_dismiss_all
Clear all notifications at once. No parameters.
Returns: { dismissed: 12, badge: 0 }
hwip_devices · hwip_channels
Read-only lookups for the ids other tools take: hwip_devices returns { devices } (a deviceId is hwip_notify's targetDeviceId), hwip_channels returns { channels } (a channelId for hwip_broadcast). The same lists are the hwip://devices and hwip://channels resources, for clients that read resources.
hwip_broadcast
Send a notification to all subscribers of a channel.
channelId: "ch_..."
title: "Deploy complete" body: "v2.1.0 is live" url: "https://..." (optional) priority: "normal"
hwip_file
Send files to the user's device. One of filePath (a file already on disk), filePaths (several files on disk) or content (text you generated) is required.
filePath: "/abs/path/screenshot.png" (images, PDFs, logs — anything on disk)
filePaths: ["/abs/a.png", "/abs/b.png"] (up to 20, sent together; not with filePath or content) content: "{\"status\": \"ok\"}" (text only; requires fileName) fileName: "report.json" (required with content; defaults to basename of filePath) title: "Build Report" (optional, defaults to fileName, or "N files") targetDeviceId: "dev_..." (optional)
Images are delivered with their real mime type and render inline on the device. Never base64 a binary file into content — pass filePath and the server reads the bytes off disk.
Several files asked for at once (screenshots of one change, a set of logs) go in one call with filePaths: they arrive as one message, five to a push (the server's li