Overview
HAPI is a multi-agent platform that wraps multiple AI coding agents and provides unified remote control. Each agent has its own capabilities, permission modes, and integration approach.Claude Code
Official Claude CLI with native desktop integration
Codex
OpenAI-powered agent via custom implementation
Cursor Agent
Cursor IDE’s CLI agent with plan/ask modes
Gemini
Google Gemini via Anthropic Code Plugins (ACP)
OpenCode
OpenCode agent with plugin hook system
Agent Flavors
flavor field in metadata that identifies the agent type:
Flavor determines which permission modes and model modes are available for the session.
Claude Code
Overview
Official Claude CLI
- Native desktop app integration
- Built-in permission system
- Plan mode support
- Model selection (Sonnet/Opus)
Integration Approach
HAPI wraps the officialclaude CLI binary:
cli/src/claude/- Claude Code integrationcli/src/claude/runClaude.ts- Main wrapper
Permission Modes
- default
- acceptEdits
- bypassPermissions
- plan
Standard Mode
- Ask for permission on every tool use
- User approves/denies each action
- Safest mode, most control
Model Modes
default
Use default model (Sonnet 3.5)
sonnet
Force Sonnet 3.5 (faster)
opus
Force Opus (more capable)
Session Management
Codex
Overview
OpenAI-Powered Agent
- Custom implementation (not official OpenAI CLI)
- Read-only and safe-yolo modes
- MCP tool integration
- Resume support
Integration Approach
Codex is a custom agent implementation built into the HAPI CLI: Key Files:cli/src/codex/- Codex mode integrationcli/src/codex/runCodex.ts- Main entry pointcli/src/codex/happyMcpStdioBridge.ts- MCP bridge
Permission Modes
- default
- read-only
- safe-yolo
- yolo
Standard Mode
- Ask for permission on file writes and commands
- Allow reads without asking
Commands
Model Configuration
Codex does not support runtime model switching. Model is configured via environment variables or defaults.Cursor Agent
Overview
Cursor IDE CLI
- Official Cursor Agent CLI
- Plan and ask modes
- Continue from last chat
- Local and remote modes
Integration Approach
HAPI wraps theagent CLI from Cursor:
cli/src/cursor/- Cursor Agent integrationcli/src/cursor/runCursor.ts- Main wrapper
Permission Modes
- default
- plan
- ask
- yolo
Standard Mode
- Ask for permission on tool use
Commands
Cursor supports both local and remote modes. In remote mode, it uses
agent -p with stream-json output.Gemini
Overview
Google Gemini via ACP
- Integrated via Anthropic Code Plugins (ACP)
- Remote mode only (waits for web/Telegram input)
- Tool definitions via ACP protocol
- Same permission modes as Codex
Integration Approach
Gemini runs via the ACP protocol: Key Files:cli/src/agent/- Multi-agent supportcli/src/agent/runners/runAgentSession.ts- ACP session runner
Permission Modes
Gemini uses the same permission modes as Codex.
Commands
Model Configuration
Gemini model is configured via environment variables:OpenCode
Overview
OpenCode via ACP
- Integrated via ACP and plugin hooks
- Local and remote modes supported
- Plugin system for extensibility
- Simplified permission modes
Integration Approach
OpenCode uses ACP + a plugin hook system: Key Files:cli/src/opencode/- OpenCode ACP + hook integrationcli/src/opencode/runOpencode.ts- Main runner
Permission Modes
OpenCode has simplified permission modes compared to other agents.
Commands
Agent Registry
The CLI maintains an agent registry for session creation:Session Factory Pattern
Each agent follows a common session factory pattern:Permission Mode Validation
The shared package provides functions to validate permission modes per agent:Model Mode Validation
Model modes are only supported for Claude:Agent-Specific Session IDs
Each agent stores its own session ID in metadata:These IDs are used internally by the agents for state tracking and resumption. They’re separate from HAPI’s session ID.
Tool Availability
Each agent exposes different tools:- Claude
- Codex
- Gemini
- Cursor/OpenCode
Tool lists are stored in
metadata.tools for reference. They’re populated during session initialization.Choosing an Agent
Use Claude
Best for:
- General coding tasks
- Native desktop integration
- Plan mode workflows
- Fine-grained permissions
Use Codex
Best for:
- OpenAI enthusiasts
- Custom tool integration
- Read-only analysis
- MCP workflows
Use Cursor
Best for:
- Cursor IDE users
- Plan/ask mode workflows
- IDE-integrated sessions
Use Gemini
Best for:
- Google ecosystem users
- Remote-only workflows
- Telegram/web control
Use OpenCode
Best for:
- Plugin extensibility
- Custom workflows
- Simplified permissions
Related Documentation
Sessions
Session metadata and state management
How It Works
Session lifecycle and data flow
Architecture
Technical architecture overview
Quick Start
Get started with HAPI