🐸

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 --cask cdre-ai/tap/toad
macOS Linux Windows
|

Requires Claude Code, GitHub CLI or GitLab 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 (or MR on GitLab), and replies in Slack. Then watches for review comments and CI failures.

👑

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 across multiple repos.

🐸

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 & CI Fix Loop

After shipping a PR, toad watches for review comments and CI failures. Reviewer feedback or a red build auto-spawns a fix tadpole. Configurable rounds of iteration — toad doesn't just ship, it converges.

📂

Multi-Repo & Multi-Platform

Configure multiple repos and toad routes each Slack message to the right one. Works with GitHub and GitLab (including self-hosted). Auto-detects stack profiles per repo.

🏗️

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.

📋

Issue Tracking

Integrates with Linear out of the box. Toad extracts issue references from Slack messages, links them to PRs, and can auto-create issues for Toad King opportunities.

🛡️

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 --cask cdre-ai/tap/toad — or scoop install toad on Windows — or download a binary

2

Run the setup wizard

Run toad init — a fullscreen wizard that auto-detects your repo stack, walks you through Slack app creation step-by-step, configures the Toad King, and writes your .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
repos:
  - name: my-app
    path: /path/to/your/repo
    test_command: go test ./...
    lint_command: go vet ./...

vcs:
  platform: github          # or gitlab

limits:
  max_concurrent: 2        # concurrent tadpoles
  timeout_minutes: 10      # per-run timeout
  max_files_changed: 5     # safety guardrail

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