Built-in presets
Happy includes 6 presets:| Profile | Agent | Provider | Model |
|---|---|---|---|
| Anthropic (default) | Claude | Anthropic | Claude Sonnet/Opus/Haiku |
| DeepSeek | Claude | DeepSeek | deepseek-reasoner |
| Z.AI | Claude | Zhipu AI | GLM-5.0 |
| OpenAI | Codex | OpenAI | gpt-5.3-codex |
| Azure OpenAI | Codex | Azure | gpt-5.3-codex |
| Google AI | Gemini | gemini-3-pro-preview |
Switching profiles
- In the Happy app, go to Settings > Profiles
- Tap a profile to activate it
- New sessions will use the selected profile’s provider
Setting up a provider
Most alternative providers require an API key. The key is set as an environment variable on the machine running the daemon, then referenced by the profile using template syntax.Example: DeepSeek
- Start the daemon with your DeepSeek key:
- In the app, go to Settings > Profiles and activate the DeepSeek preset
- Create a new Claude session — it now routes through DeepSeek’s API
DEEPSEEK_AUTH_TOKEN → ANTHROPIC_AUTH_TOKEN automatically, so Claude Code connects to DeepSeek’s API-compatible endpoint instead of Anthropic.
Example: Z.AI
Example: Azure OpenAI
Creating custom profiles
- Go to Settings > Profiles
- Tap + Add Profile (or duplicate a built-in preset)
- Configure:
- Name — A descriptive name
- Agent compatibility — Which agents this profile works with (Claude, Codex, Gemini)
- Environment variables — Key-value pairs passed to the AI agent process
- Default permission mode — Session permission mode
- Tmux — Optional: run sessions inside tmux
- Startup script — Optional: bash script executed before each session
Template syntax
Environment variable values support bash-style parameter expansion:| Syntax | Meaning |
|---|---|
${VAR} | Use the value of VAR from the daemon’s environment |
${VAR:-default} | Use VAR if set, otherwise use default |
literal-value | Use the value as-is |
How it works
~/.happy/settings.json when spawning new sessions.