A team of AI agents that runs your work.One small binary.
Habakkuk is an open-source agent you message from the chat apps you already use. It remembers, uses real tools, hands work to other agents, and never loses a job, even to a crash.
curl -fsSL https://habakkuk.ai/install.sh | shLinux and macOS, amd64 and arm64. Also via go install, Docker and the desktop app.
plans, delegates, reports back
marketing
own chat
sales
own chat
support
own chat
Talk to it anywhere
Message it where you already are.
Linked as a WhatsApp device, as a bot, or over a webhook: one Habakkuk answers on every chat app you connect, with files, voice notes and images in both directions where the platform allows.
WhatsApp
linked device
WhatsApp agent
Settings › Agents
WhatsApp Business
Cloud API
Telegram
bot
Slack
Socket Mode
Discord
Gateway
Signal
signal-cli
Matrix
sync API
iMessage
via BlueBubbles
Email
IMAP and SMTP
SMS
Twilio
Microsoft Teams
Bot Framework
Google Chat
Chat app
Messenger
Graph API
Instagram
messaging
LINE
webhook
Mattermost
WebSocket
Rocket.Chat
realtime API
Zulip
streams and topics
Nextcloud Talk
Talk bot
Feishu / Lark
IM API
DingTalk
robot
WeCom
app
IRC
TLS and SASL
Twitch
chat
ntfy
push topics
Web chat
built in
Terminal
CLI and TUI
- Stays connected
- Every adapter runs under a supervisor with a heartbeat watchdog. A stuck socket is torn down and reconnected.
- Polite in groups
- In group chats it answers only when it is mentioned or replied to, unless you tell it otherwise.
- Strangers need a code
- Someone new gets a pairing code. Nothing reaches the agent until you approve it with habakkuk pair.
It never loses work
Every turn is a durable job.
Pull the plug in the middle of a tool call and nothing is lost. When Habakkuk comes back it picks up where it stopped, without doing anything twice.
- 1
A message arrives
It becomes a turn job in the database before any work starts.
- 2
A worker leases it
The lease records host and process, and the worker heartbeats while it runs.
- 3
kill -9, mid tool call
Power cut, out of memory, a bad deploy. The process is gone.
- 4
Restart reclaims the job
A dead owner's work is taken back at once instead of waiting for the lease to expire.
- 5
The transcript is repaired
A tool call with no recorded result is marked interrupted, so side effects are checked, never blindly repeated.
- 6
The reply goes out once
Redelivered messages are dropped, and a long reply resumes at the first unsent chunk.
It remembers
Memory you can open in a text editor.
What Habakkuk learns is kept as plain Markdown files next to its config. Read them, edit them, or tell it to forget.
Memory
Durable facts, preferences and decisions, one note per file, found again with full-text search and, if you turn on embeddings, by meaning. Notes written after reading outside content are marked untrusted.
Skills
Folders with a SKILL.md that teach it how to do a task. It loads one before work it covers, writes new ones, and can study a page or a repo with /learn.
Profile
A short USER.md about you: your name, where you are, how you like to be helped. Every new conversation starts with it.
~/.habakkuk/agents/habakkuk/
├── SOUL.md personality
├── USER.md what it knows about you
├── memory/
│ ├── coffee-order.md
│ └── q3-pricing-decision.md
└── skills/
└── weekly-report/
└── SKILL.mdIt acts
Real tools, with you in control.
Habakkuk does the work, not just the talking. Every tool has a risk level, and you decide what runs without asking.
Files and shell
Works in a workspace with permission modes from read-only to full. You approve risky calls, or a reviewer model does. Checkpoints let you roll back.
Browser
A real Chrome: open pages, fill in forms, click, screenshot, download. Headless, or tabs in your own signed-in browser.
Computer use
Sees a desktop through screenshots and drives the mouse and keyboard, on Linux, macOS or a private virtual screen per agent.
Images, voice, documents
Generates images and video, reads PDFs and documents, transcribes voice notes, speaks replies, and talks live in the dashboard.
Schedules
Cron, every-so-often or one-off. Each slot runs at most once, even across crashes, and results go to the chat that asked.
Task board
Cards with assignees, priorities and dependencies. Work outlives the conversation, and results go back to whoever asked.
Meetings
Joins Google Meet, Zoom and Teams calls as a named guest, reads the live captions and sends notes with decisions and action items.
MCP, both ways
Uses tools from any Model Context Protocol server, and is an MCP server itself so other apps can ask it to work.
Home and other agents
Controls Home Assistant, asking first for the devices you choose, and talks to other agents over Agent2Agent.
A team of agents
One agent you talk to. A team behind it.
Configure as many agents as you need, each with its own model, tools, memory and personality. The one you talk to hands work to the others and tells you when it is done.
Delegate
Hand a self-contained task to another agent and wait for the answer, several in parallel. A crash reattaches to the running work instead of starting it again.
The board
For work that should outlive the conversation: cards with an assignee and dependencies, picked up when they are ready, with results sent back to whoever asked.
Their own chats
Give each agent its own place to be reached. Marketing, sales and support can each live in their own WhatsApp chat, a Slack workspace, or a Telegram bot.
agents:
habakkuk: { model: anthropic/claude-opus-5-5 }
marketing: { model: anthropic/claude-sonnet-5-5 }
sales: { model: anthropic/claude-sonnet-5-5 }
support: { model: anthropic/claude-sonnet-5-5 }
channels:
wa-marketing: # its own chat in WhatsApp
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 }Runs where you want
Your machine, your server, your data.
One static binary with no runtime to install. Its state is a few SQLite databases and folders of Markdown in one home directory you can back up with a single command.
CLI
Chat in the terminal, or run one turn and print the answer.
habakkuk chatTerminal UI
A full-screen chat with streaming, tool cards and approvals.
habakkuk tuiDashboard
Chat, sessions, board, schedules, memory, usage and approvals in the browser. Installable as an app.
http://127.0.0.1:8484/app/Desktop app
macOS, Windows and Linux. Menu bar status, notifications with Approve and Deny, and a quick ask window.
Cmd/Ctrl + Shift + SpaceServer
Channels, schedules and workers in one process. Put it on a small VPS or a spare machine.
habakkuk serveDocker
A multi-arch image on ghcr.io. Build the browser target to include Chromium.
ghcr.io/mayorscript/habakkuk
Open source
Apache-2.0 licensed. Read every line.
Habakkuk is open source under the Apache-2.0 license, written in Go with no CGO, and builds to one static binary for Linux and macOS. The code, the docs and the issue tracker are on GitHub.
Pricing
Free to self-host. Hosted plans on the way.
Run the open-source Habakkuk with your own keys at no cost, join the waitlist for Habakkuk Cloud, or have us set up a team of agents for your business.
Why the name
Why the name
“I will stand upon my watch, and set me upon the tower… Write the vision, and make it plain upon tables, that he may run that readeth it.”
Habakkuk 2:1–2
Habakkuk was a watchman on the tower, waiting and paying attention so others did not have to. That is the job: keep watch over your work, and report back plainly. The logo is two tablets that form an H, with the watchman’s light above them.
Start in a minute.
Install it, run habakkuk setup, and say hello.
curl -fsSL https://habakkuk.ai/install.sh | sh