id = "happy-coder"
name = "Happy Coder"
homepage = "https://happy.engineering"
description = "CLI for operating AI coding agents from mobile devices."
executables = ["happy"]
[dotfiles]
paths = []
secret = ["~/.happy/agent.key"]
side_effect = false
[commands]
format = 1
label = "Start a Happy session"
description = "Start a Claude Code session with mobile control through happy. Subcommands (codex, daemon, auth, resume ...) and the claude flags Happy passes through are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
url = "https://github.com/slopus/happy/blob/main/packages/happy-cli/src/index.ts"
revision = "2026-10-27"
evidence = """
happy --yolo Start with bypassing permissions
happy sugar for --dangerously-skip-permissions
happy --chrome Enable Chrome browser access for this session
happy --no-chrome Disable Chrome even if default is on
happy --no-sandbox Disable Happy sandbox for this session
happy --js-runtime bun Use bun instead of node to spawn Claude Code
happy --claude-env ANTHROPIC_BASE_URL=http://127.0.0.1:3456
Invalid --js-runtime value: ${runtime}. Must be 'node' or 'bun'
Invalid --claude-env format: ${envArg}. Expected KEY=VALUE
"""
[[commands.field]]
id = "yolo"
label = "Bypass permissions"
description = "Shortcut for --dangerously-skip-permissions."
type = "boolean"
option = ["--yolo"]
effect = "exec"
sources = ["help"]
[[commands.field]]
id = "chrome"
label = "Chrome access"
type = "boolean"
option = ["--chrome"]
false_option = "--no-chrome"
description = "Enable or disable Chrome browser access for this session."
sources = ["help"]
[[commands.field]]
id = "no_sandbox"
label = "Disable sandbox"
type = "boolean"
option = ["--no-sandbox"]
sources = ["help"]
[[commands.field]]
id = "js_runtime"
label = "JavaScript runtime"
type = "enum"
choices = [{ value = "node", label = "Node" }, { value = "bun", label = "Bun" }]
option = ["--js-runtime"]
sources = ["help"]
[[commands.field]]
id = "claude_env"
label = "Claude environment"
description = "KEY=VALUE passed to Claude Code, e.g. a custom ANTHROPIC_BASE_URL."
type = "string"
option = ["--claude-env"]
multiple = true
sources = ["help"]
[[commands.task]]
id = "start"
label = "Start session"
fields = []
[[commands.task]]
id = "custom_endpoint"
label = "Use a custom API endpoint"
fields = ["claude_env"]
required = ["claude_env"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["chrome", "yolo", "no_sandbox"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["js_runtime", "claude_env"]