Use cases
Eight concrete setups, from a personal assistant on WhatsApp to a team of agents run from Slack, each with the config and commands it takes.
On this page
Each setup below uses only what ships in the binary. Start from a working install (Quickstart), then add the pieces shown. Keys always go in $HABAKKUK_HOME/.env, never in config.yaml.
A personal assistant on WhatsApp#
An agent with its own chat in your WhatsApp, with no phone number to give up and no public URL.
- In WhatsApp, open Settings > Agents > Create agent, and send it "hi".
- Open its chat, then Chat info > API key, and copy the key.
- Run the wizard and pick WhatsApp agent:
habakkuk setup
habakkuk setup service # Linux and macOS: write a systemd or launchd file, and print how to install itThe channel it writes looks like this:
channels:
wagent:
type: whatsappagent
token_env: WHATSAPP_AGENT_KEYOnly you, the agent's creator, can write to it. See WhatsApp.
A daily briefing#
A message every weekday morning with what you asked for. Set your time zone, make sure the agent can search the web, and add a schedule.
timezone: America/Toronto
search: # not needed when the agent's model is on an anthropic provider,
provider: brave # which brings its own hosted web search
key_env: BRAVE_API_KEYAsk in a chat ("every weekday at 7:30, send me the top three stories about renewable energy and today's weather in Toronto"), and the agent creates the schedule with schedule_create. Or add it from the terminal:
habakkuk schedules add -agent habakkuk -name briefing -when "30 7 * * 1-5" \
-prompt "Search the news and send me the top three stories about renewable energy, then today's weather in Toronto." \
-to wagent:creator
habakkuk schedules run <id> # try it nowhabakkuk serve must be running. See Schedules and Media and web search.
A team of business agents on WhatsApp, run from Slack#
Marketing, sales and support each have their own WhatsApp agent chat. An orchestrator answers you on Slack and delegates to them.
- Create three WhatsApp agents (Settings > Agents), and send each one a message.
- Create a Slack app with Socket Mode (see Slack).
- Configure the agents and channels:
agents:
orchestrator:
model: anthropic/claude-opus-5-5 # the default toolsets include delegate and board
marketing:
model: anthropic/claude-sonnet-5-5
home: wa-marketing:creator
sales:
model: anthropic/claude-sonnet-5-5
home: wa-sales:creator
support:
model: anthropic/claude-sonnet-5-5
home: wa-support:creator
channels:
slack:
type: slack
app_token_env: SLACK_APP_TOKEN
bot_tokens_env: [SLACK_BOT_TOKEN]
agent: orchestrator
wa-marketing: {type: whatsappagent, token_env: WA_MARKETING_KEY, agent: marketing}
wa-sales: {type: whatsappagent, token_env: WA_SALES_KEY, agent: sales}
wa-support: {type: whatsappagent, token_env: WA_SUPPORT_KEY, agent: support}Ask the orchestrator on Slack "what's up with the campaign?" and it delegates to marketing. The answer comes back to Slack, and a short report lands in the Marketing chat on WhatsApp, so each agent's chat keeps the history of its own work. See Multi-agent teams.
A research agent#
A second agent with a browser and web search, that you reach with /agent research or that your main agent delegates to.
search: # web_search for models without hosted search
provider: tavily
key_env: TAVILY_API_KEY
agents:
research:
model: deepseek/deepseek-v4-pro
permission: workspace # web reads run on their own; commands ask first
toolsets: [core, memory, browser]
browser:
mode: launch
headless: truehabakkuk run -agent research "Compare the three most used open-source CRMs. A table, then a recommendation."On a server, install Chromium first (apt install chromium on Debian). For long jobs, put a card on the board assigned to research: the result comes back to the conversation that asked. See Browser.
A home-automation agent#
Lights, climate and media from a chat, and a turn that starts on its own when the doorbell rings.
agents:
habakkuk:
toolsets: [core, memory, skills, schedule, homeassistant]
homeassistant:
url: http://homeassistant.local:8123
token_env: HA_TOKEN # a long-lived access token
allow_domains: [light, switch, climate, media_player]
confirm: [lock, alarm_control_panel, cover] # every call asks you first
triggers:
- name: doorbell
entity_id: binary_sensor.front_doorbell
to: "on"
prompt: "Someone rang the doorbell at {{.Time}}. Check the porch camera and tell me who it is."
deliver: telegram:123456789Then ask "turn off the living room lights" in any chat. See Integrations: Home Assistant.
A meeting note-taker#
The agent joins Google Meet, Zoom or Teams calls as a named guest, reads the live captions, and sends notes with decisions and action items.
agents:
habakkuk:
toolsets: [core, memory, skills, schedule, meeting]
meeting:
name: Habakkuk (notetaker)Ask "join https://meet.google.com/abc-defg-hij and note the decisions", or "every weekday at 9:55, join my standup at ", which becomes a schedule. See Meetings.
A coding agent in a sandbox, in your editor#
An agent whose commands run in a Docker container, with workspace snapshots before every change, used from an editor that speaks the Agent Client Protocol.
agents:
coder:
model: anthropic/claude-opus-5-5
workspace: ~/src/myproject
sandbox: docker
docker: {image: "golang:1.27", network: false, cpus: "2", memory: 2g}habakkuk acp -agent coder # configure your editor to run this as its agent
habakkuk checkpoints -agent coder
habakkuk rollback -agent coder <id>/undo in a chat puts back the files the last turn changed. See Files and shell and Integrations: code editors.
A watcher that only speaks when something changes#
A script schedule runs a command without calling a model, and posts only when the script prints something. It costs nothing while there is nothing to say.
cat > ~/habakkuk-workspace/check-site.sh <<'EOF'
#!/bin/sh
code=$(curl -s -o /dev/null -w '%{http_code}' https://example.com)
[ "$code" = 200 ] || echo "example.com answered $code"
EOF
chmod +x ~/habakkuk-workspace/check-site.sh
habakkuk schedules add -agent habakkuk -name site-check -when "@every 5m" \
-run ./check-site.sh -on-output deliver -timeout 30s -to telegram:123456789The script runs in the agent's workspace (here ~/habakkuk-workspace, as habakkuk setup writes it); -workdir DIR picks another folder. With -on-output agent -prompt "...", the output starts a turn instead, so the agent can look into it. Only you can add script schedules, from the CLI. See Script schedules.