HAPI is a local-first, self-hosted platform for running and controlling AI coding agents (Claude Code, Codex, Gemini, OpenCode) remotely. It lets you start coding sessions on your computer and monitor/control them from your phone.
HAPI (哈皮) is a Chinese transliteration of "Happy", reflecting the project's goal of making AI coding assistance a happier experience by freeing you from the terminal.
Yes, HAPI is open source and free to use under the AGPL-3.0-only license.
- Claude Code (recommended)
- OpenAI Codex
- Google Gemini
- OpenCode
HAPI includes an embedded hub. Just run hapi hub on your machine - no external hub required.
hapi server remains supported as an alias.
For local network access:
http://<your-computer-ip>:3006
For internet access:
- If the hub has a public IP, access it directly (use HTTPS via reverse proxy for production)
- If behind NAT, set up a tunnel (Cloudflare Tunnel, Tailscale, or ngrok)
The CLI_API_TOKEN is a shared secret that authenticates:
- CLI connections to the hub
- Web app logins
- Telegram account binding
It's auto-generated on first hub start and saved to ~/.hapi/settings.json.
Yes. We support lightweight multi-account access via namespaces for shared team hubs. See Namespace (Advanced).
Yes. Telegram is optional. You can use the web app directly in any browser or install it as a PWA.
- When your AI agent requests permission (e.g., to edit a file), you'll see a notification
- Open HAPI on your phone
- Navigate to the active session
- Approve or deny the pending permission
HAPI supports two methods:
- PWA Push Notifications - Enable when prompted, works even when app is closed
- Telegram Bot - See Telegram Setup
Yes, with runner mode:
- Run
hapi runner starton your computer - Your machine appears in the "Machines" list in the web app
- Tap to spawn new sessions from anywhere
In the session view, tap the "Files" tab to:
- Browse project files
- View git status
- See diffs of changed files
Yes. Open any session and use the chat interface to send messages directly to the AI agent.
Yes. Open a session in the web app and tap the Terminal tab for a remote shell.
Set ELEVENLABS_API_KEY, open a session in the web app, and click the microphone button. See Voice Assistant.
Yes. HAPI is local-first:
- All data stays on your machine
- Nothing is uploaded to external servers
- The database is stored locally in
~/.hapi/
The auto-generated token is 256-bit (cryptographically secure). For external access, always use HTTPS via a tunnel.
Only if they have your access token. For additional security:
- Use a strong, unique token
- Always use HTTPS for external access
- Consider Tailscale for private networking
- Ensure hub is running:
hapi hub - Check firewall allows port 3006
- Verify
HAPI_API_URLis correct
- Re-run
hapi auth login - Check token matches in CLI and hub
- Verify
~/.hapi/settings.jsonhas correctcliApiToken
# Check status
hapi runner status
# Clear stale lock file
rm ~/.hapi/runner.state.json.lock
# Check logs
hapi runner logsInstall Claude Code or set custom path:
npm install -g @anthropic-ai/claude-code
# or
export HAPI_CLAUDE_PATH=/path/to/claudehapi doctorThis checks hub connectivity, token validity, agent availability, and more.
| Aspect | Happy | HAPI |
|---|---|---|
| Design | Cloud-first | Local-first |
| Users | Multi-user | Single user |
| Deployment | Multiple services | Single binary |
| Data | Encrypted on server | Never leaves your machine |
See Why HAPI for detailed comparison.
| Feature | Claude Code | HAPI + Claude Code |
|---|---|---|
| Remote access | No | Yes |
| Mobile control | No | Yes |
| Permission approval | Terminal only | Phone/web |
| Session persistence | No | Yes |
| Multi-machine | Manual | Built-in |
Visit our GitHub repository to:
- Report issues
- Submit pull requests
- Suggest features
Open an issue on GitHub Issues.