id = "happy-coder" name = "Happy Coder" homepage = "https://happy.engineering" description = "CLI for operating AI coding agents from mobile devices." executables = ["happy"] [dotfiles] # Happy's official agent README documents the credential file ~/.happy/agent.key # (and the CLI documents ~/.happy as its data home). It contains a bearer token # and account secret, so this entry intentionally exposes only the secret path. # https://github.com/slopus/happy/tree/main/packages/happy-agent 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"]