Skip to content

scaler-tech/toad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

116 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐸 toad

The AI teammate that finds bugs before your users do.

Toad is a self-hosted Go daemon that watches your Slack channels, identifies bugs from conversations and alerts, verifies them against your codebase, and opens fix PRs β€” all before anyone files a ticket. It's like having a senior engineer who reads every message and quietly fixes things.

πŸ‘‘ What makes toad different

Most AI coding tools wait for you to ask. Toad doesn't.

The Toad King passively monitors every message in your Slack workspace, batch-analyzes them with Haiku, investigates feasibility against your actual codebase, and autonomously spawns fix agents for high-confidence one-shot bugs. No @mentions, no tickets, no human in the loop until PR review.

On top of that, toad handles the full reactive path too β€” @mention it with a bug report and get a PR in minutes, ask it a question and get a codebase-grounded answer in seconds.

Why toad over Copilot, Devin, or Claude Code?

Toad Copilot Agent Devin Claude Code
Proactive bug detection Yes (Toad King) No No No
Self-hosted (code stays local) Yes No No No
PR review feedback loop Yes (3 rounds) No No No
CI failure auto-fix Yes No No No
Cost Your existing Claude sub Per-seat Per-seat Per-seat
Slack-native Yes No Coming Coming
MCP integration (Claude Desktop) Yes No No No

🐣 How it works

Slack message β†’ Triage (Haiku, ~1s) β†’ Route by category:
  πŸ‘‘ Toad King   β†’ passive batch analysis β†’ investigate β†’ auto-fix PR
  🐣 bug/feature β†’ spawn tadpole β†’ worktree β†’ Claude Code β†’ validate β†’ PR
  🐸 question    β†’ ribbit reply (Sonnet + read-only codebase tools)

Tadpoles run the full lifecycle autonomously: create a git worktree, invoke Claude Code, validate with your test/lint commands, retry on failure, push and open a PR. After shipping, toad watches for review comments and CI failures, auto-spawning fix tadpoles for up to 3 rounds.

Ribbits are for when you just need an answer. Mention toad with a question and it reads your codebase with read-only tools, then replies in-thread. Thread memory means follow-ups stay coherent.

🐸 The glossary

Everything in toad is named after the lifecycle of a frog:

Term What it means
🐸 Toad The daemon β€” sits in your Slack pond, watching
πŸ₯š Triage Every message classified by Haiku in ~1s
🐸 Ribbit Codebase-aware answer to a question
🐣 Tadpole Autonomous coding agent β€” worktree, Claude Code, validate, PR
πŸ‘‘ Toad King Passive monitoring β†’ investigation β†’ auto-fix
πŸ” PR Watch Review comment and CI failure auto-fixing

πŸ“‹ Requirements

πŸš€ Install

macOS and Linux

brew tap scaler-tech/pkg https://github.com/scaler-tech/pkg
brew install --cask toad

macOS security note: If macOS blocks the app, the cask's post-install hook should handle it. If not: xattr -d com.apple.quarantine $(which toad)

Windows

scoop bucket add scaler-tech https://github.com/scaler-tech/pkg
scoop install toad

Other options

# Binary releases
# Download from https://github.com/scaler-tech/toad/releases/latest

# Go install
go install github.com/scaler-tech/toad@latest

# Build from source
git clone https://github.com/scaler-tech/toad.git && cd toad && make build

πŸ”§ Quick start

toad init    # Setup wizard β€” Slack tokens, repo config, Toad King opt-in
toad         # Start the daemon

Toad connects to Slack via Socket Mode, auto-joins public channels, and starts listening. Mention @toad in any channel with a question or bug report and watch it work.

For detailed Slack app setup, configuration, and advanced features, see the Setup Guide.

🐸 CLI commands

Command Description
toad Start the daemon
toad init Interactive setup wizard
toad run "task" Spawn a tadpole from the CLI (no Slack needed)
toad status Open live monitoring dashboard in browser
toad version Print version info
toad update Self-update to latest version
toad restart Gracefully restart the daemon

πŸ›οΈ Architecture

cmd/
  root.go          Daemon, message routing
  run.go           CLI one-shot mode
  init.go          Setup wizard
  status.go        Web dashboard

internal/
  slack/           Socket Mode client, event routing, dedup
  triage/          Haiku classification
  ribbit/          Q&A with read-only tools
  tadpole/         Worktree, agent runner, validation, shipping
  state/           In-memory + SQLite state, crash recovery
  reviewer/        PR review + CI watcher, fix tadpole spawning
  digest/          Toad King: batch analysis, investigation, auto-spawn
  config/          YAML config with cascading defaults, multi-repo profiles
  agent/           Coding agent provider abstraction (see PROVIDERS.md)
  vcs/             VCS provider abstraction (see PROVIDERS.md)
  issuetracker/    Issue tracker abstraction (see PROVIDERS.md)
  mcp/             MCP server for Claude Desktop/Code integration

Three packages use a provider/plugin pattern for extensibility. See the PROVIDERS.md in each directory for the interface contracts, current implementations, and how to add new ones.

Key design decisions

  • Single binary, zero infra β€” Go binary, git worktrees, your Claude subscription. No Docker, no cloud.
  • Three-tier intelligence β€” Haiku for triage (~$0.001), Sonnet for investigation (read-only), Sonnet for execution (full tools).
  • 6-layer guardrails on proactive spawning β€” disabled by default, 0.95 confidence threshold, category + size restrictions, hourly cap, existing validation + human PR review.
  • Write-through state β€” in-memory cache + SQLite for crash recovery and dashboard.
  • MCP server β€” optional Streamable HTTP endpoint lets Claude Desktop and Claude Code query toad (ask questions, read logs) via authenticated tokens managed through Slack.

πŸ”Œ MCP Server

Toad includes an optional MCP (Model Context Protocol) server that lets Claude Desktop and Claude Code interact with your toad instance directly β€” ask codebase questions, read daemon logs, and check health.

Setup:

  1. Enable in config: mcp.enabled: true and set mcp.port: 8099
  2. Add a /toad slash command to your Slack app (see Setup Guide)
  3. Run /toad mcp connect in Slack to get a personal token
  4. Add toad as an MCP server in Claude Desktop or Claude Code

Available tools:

  • ask β€” Ask toad a codebase question (uses ribbit engine with read-only tools)
  • logs β€” Read and filter daemon logs (dev role required)

For full setup instructions, see the Setup Guide.

πŸ› οΈ Development

make build    # Build binary
make test     # Run tests with race detector
make lint     # Run golangci-lint
make vet      # Run go vet
make fmt      # Format code

πŸ“„ License

Elastic License 2.0 (ELv2) β€” free to use, modify, and distribute. You may not offer toad as a hosted/managed service.


Built with Claude Code. Toad eats bugs. 🐸

About

🐸🐸🐸

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages