🐸

toad

Your Slack channels have a new engineer

Toad sits in your Slack workspace and turns bug reports, feature requests, and casual mentions into pull requests — autonomously. No tickets, no context-switching. Just talk, and toad ships.

$ brew install cdre-ai/tap/toad
macOS Linux
|

Requires Claude Code, GitHub CLI, and a Slack app

From Slack message to merged PR

Someone drops a bug report. Toad reads it, understands it, writes the fix, validates it passes your tests, and opens a PR. The whole thing takes minutes.

🥚

Triage

Haiku classifies every message in ~1s. Bug, feature, question, or noise?

🐣

Tadpole

Spawns an autonomous agent in a git worktree. Claude Code writes the code.

Validate

Runs your test suite, linter, and file-count guardrails. Retries on failure.

🐸

Ship

Pushes, opens a PR, and replies in Slack. Then watches for review comments.

👑

The Toad King

Catches bugs before anyone files them

Most AI coding tools wait for you to ask. The Toad King doesn't wait. It passively watches every message in your Slack channels — bug reports, Sentry alerts, CI failures, casual complaints — and when it spots something it can fix in one shot, it just fixes it.

Passive

No mentions, no triggers, no tickets. Toad King reads the room. Every non-bot message gets collected and batch-analyzed on an interval.

Precise

Only acts on high-confidence matches (>95%). Only allowed categories. Only tiny/small estimated size. Rate-limited per hour. Guardrails everywhere.

Autonomous

When confidence is high enough, a tadpole spawns automatically. The PR is the review gate. Zero-friction from complaint to fix.

#engineering
JM
jamie 2:34 PM

ugh, the date picker is broken again. it doesn't parse dates with timezone offsets

🐸
toad TOAD KING 2:39 PM

Spotted this in the channel — looks like a clear bug in utils/time.go. Spawning a fix.

PR ready: #142 Fix timezone offset parsing in date picker

2 files changed · tests passing

Nobody asked. Toad King just handled it.

Everything else toad does

The Toad King is the standout, but toad handles the full spectrum — from answering questions to shipping fixes to iterating on review feedback.

🐸

Codebase Q&A

Mention @toad with a question and Sonnet reads your code using read-only tools, then replies in-thread. Thread memory keeps follow-up conversations coherent.

🐣

On-Demand Tadpoles

Mention toad with a bug or feature request and a tadpole spawns immediately. Or react 🐸 on any message to trigger one. Toad creates a worktree, writes the fix, validates, and opens a PR.

🔄

PR Review Loop

After shipping a PR, toad watches for review comments. When a reviewer leaves feedback, toad auto-spawns a fix tadpole. Up to 3 rounds of iteration — toad doesn't just ship, it converges.

🏗️

Service-Aware Validation

For monorepos: configure per-service test and lint commands. Tadpoles match changed files to services by path prefix and run each service's validation from its subdirectory.

🛡️

Guardrails

Concurrent tadpole limits, per-run cost caps, max files changed, timeouts, and retry limits. Separate concurrency pools keep Q&A responsive while tadpoles run.

📊

Live Dashboard

Run toad status to open a live web dashboard showing active runs, history, costs, triage breakdown, and config. Reads directly from SQLite, works even when the daemon is stopped.

Get started in 3 minutes

1

Install

brew install cdre-ai/tap/toad — or go install github.com/cdre-ai/toad@latest

2

Set up your Slack app

Run toad init — it walks you through creating a Slack app with Socket Mode, setting scopes, subscribing to events, and saving tokens to .toad.yaml.

3

Start the daemon

Run toad from your repo root. It connects to Slack, auto-joins public channels, and starts listening. Mention @toad and watch it work.

Config cascades: defaults → ~/.toad/config.yaml.toad.yaml → env vars

.toad.yaml
repo:
  path: /path/to/your/repo
  test_command: go test ./...
  lint_command: go vet ./...

limits:
  max_concurrent: 2        # concurrent tadpoles
  max_budget_usd: 1.00     # per-run cost cap
  max_files_changed: 5     # safety guardrail

digest:
  enabled: true            # activate the Toad King
  min_confidence: 0.95     # only act when sure