mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-05 06:24:37 +00:00
680a37071ea7a0bde42b16d5cc7372d3472990c1
Extracted five focused modules from SyncEngine to improve maintainability and separation of concerns: - EventPublisher: handles event broadcasting and listener management - SessionCache: manages session state and lifecycle - MachineCache: manages machine state and lifecycle - MessageService: handles message storage and retrieval - RpcGateway: handles RPC communication with sessions and machines - aliveTime: utility for clamping and validating alive timestamps Removed unused members (sessionMessages cache, fetchMessages, getSessionMessages, setPermissionMode, setModelMode) that added complexity without clear value. SyncEngine now orchestrates these services as a lightweight facade, improving code organization and testability.
HAPI
HAPI means "哈皮" a Chinese transliteration of Happy. Great credit to the original project.
Run Claude Code / Codex / Gemini sessions locally and control them remotely through a Web / PWA / Telegram Mini App.
Why HAPI? HAPI is a local-first alternative to Happy. See Why Not Happy? for the key differences.
Features
- Seamless Handoff - Work locally with native Claude Code or Codex, switch to remote when needed, switch back anytime.
- Start AI coding sessions from any machine.
- Monitor and control sessions from your phone or browser.
- Approve or deny tool permissions remotely.
- Browse files and view git diffs.
- Track session progress with todo lists.
- Supports multiple AI backends: Claude Code, Codex, and Gemini.
Getting Started
npx @twsxtd/hapi server # start the server locally
npx @twsxtd/hapi # run claude code
Open http://<server-ip>:3006 and login with the token, if you need to access it remotely, see Remote access
More options: Quick Start | Installation
Docs
Build from source
bun install
bun run build:single-exe
Languages
TypeScript
99.5%
CSS
0.2%
JavaScript
0.2%
HTML
0.1%