weishu dbbeedea0d refactor: unify release workflow into single release-all script
Consolidate version bumping, building, npm publishing, and git operations into a single release script that handles platform packages first. This solves the issue where optionalDependencies needed platform packages published before bun install could generate complete lockfile hashes.

Changes:
- Created cli/scripts/release-all.ts with support for --dry-run, --publish-npm, and --skip-build flags
- Removed release-it dependency and old release/publish-npm scripts
- Simplified GitHub Actions release workflow to always use --generate-notes
- Deleted obsolete release configuration files (.release-it.json, .release-it.notes.js, publish-npm.ts)
2025-12-25 12:26:49 +08:00
2025-12-16 15:03:50 +08:00

hapi

HAPI means "哈皮," a Chinese transliteration of happy, great credit to the original Happy project.

Run Claude Code / Codex / Gemini sessions locally and control them remotely through a Web / PWA / Telegram Mini App.

Features

  • 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.

Installation

Homebrew (macOS/Linux)

brew install tiann/tap/hapi

npm/npx

npx @twsxtd/hapi

Or install globally:

npm install -g @twsxtd/hapi

Prebuilt binary

Download from Releases.

Quickstart

  1. Start the server on a machine you control:
hapi server
# or: npx @twsxtd/hapi server
  1. If the server has no public IP, expose it over HTTPS:

  2. Run the CLI on the machine where you want sessions:

# If the server is not on localhost:3006
export HAPI_SERVER_URL="https://your-domain.example"

hapi
# or: npx @twsxtd/hapi
  1. Open the UI in a browser at the server URL and log in with CLI_API_TOKEN.

Telegram Mini App (optional)

To use Telegram for notifications and the Mini App:

  1. Create a bot with @BotFather and get the token.

  2. Expose your server over HTTPS (Cloudflare Tunnel, Tailscale, etc.).

  3. Add environment variables:

WEBAPP_URL="https://your-domain.example"
TELEGRAM_BOT_TOKEN="..."
  1. Start the server and send /start to the bot to get your chat ID.

  2. Add your chat ID and restart:

ALLOWED_CHAT_IDS="12345678"
  1. Run /app in the bot chat to open the Mini App.

Multi-agent support

  • hapi - Start a Claude Code session.
  • hapi codex - Start an OpenAI Codex session.
  • hapi gemini - Start a Google Gemini session.

CLI config file

You can store the token in ~/.hapi/settings.json instead of an env var. Environment variables take priority over the file.

Requirements

  • Claude CLI installed and logged in (claude on PATH) for Claude Code sessions.
  • Bun if building from source.

Build from source

bun install
bun run build

Build a single binary with embedded web assets:

bun run build:single-exe

Docs

  • cli/README.md - CLI usage and config
  • server/README.md - Server setup and architecture
  • web/README.md - Web app behavior and dev workflow

License

  • cli: MIT
  • others: LGPLv2
S
Description
GitHub 镜像: wu736139669/hapi(每日自动同步)
Readme AGPL-3.0
103 MiB
Languages
TypeScript 99.5%
CSS 0.2%
JavaScript 0.2%
HTML 0.1%