Multiple AI agents ("dogs") work in parallel, write tests, and deliver code ready for human review.
Built solo in ~2 days using AI-assisted development.
After the Dogwalker is @-mentioned, it gets an available AI dog to generate a plan, implement changes, and open a PR.
View the complete pull request from this thread →
- Mention
@dogwalker add rate limiting to /api/loginin Slack - AI creates a draft PR with implementation plan
- AI writes code, self-reviews, and adds tests
- PR marked ready for human review (4-10 minutes total)
Key features: Multiple dogs working in parallel, bi-directional communication (reply to give feedback), web browsing (include URLs in tasks), automatic before/after screenshots for UI changes.
When you self-host Dogwalker, you create your own Slack bot in your workspace. This is simpler than it sounds:
- Go to https://api.slack.com/apps → "Create New App" → "From an app manifest"
- Paste the contents of
apps/slack-bot/manifest.json(included in this repo) - Install the app to your workspace
- Copy the bot tokens to your
.envfile
The manifest handles all permissions and settings automatically. You can customize the bot name, avatar, and description to match your team's style. Full instructions are in .env.example.
You control everything: Your Slack bot, your infrastructure, your data. Built with open-source libraries, so it's fully transparent and customizable.
# Prerequisites: Python 3.10+, Redis, Slack workspace, GitHub account, Anthropic API key
git clone <this-repo>
brew install redis # or apt-get install redis
cp .env.example .env # Fill in your credentials
pip install -r requirements.txt
redis-server
# Terminal 1
cd apps/orchestrator && python src/bot.py
# Terminal 2
cd apps/worker && celery -A src.celery_app worker --loglevel=infoThen mention @dogwalker in Slack and watch it work!
- Create Slack app: Use
apps/slack-bot/manifest.jsonat https://api.slack.com/apps - Configure environment: Copy
.env.exampleto.envand fill in:ANTHROPIC_API_KEY- Your Claude API keySLACK_BOT_TOKENandSLACK_APP_TOKEN- From Slack app settingsGITHUB_REPO- Your repo (e.g.,yourcompany/yourrepo)DOGS- JSON array of dog accounts (GitHub username, email, token)REDIS_URL- Usuallyredis://localhost:6379
- Create dog GitHub accounts: Each dog needs a separate GitHub account with repo access
See DEPLOYMENT.md for cloud deployment (Railway, Docker, AWS/GCP/Azure).
Core Workflow
- Multi-agent architecture with load balancing (configure 1-N dogs)
- Draft PR workflow: plan → implement → self-review → test → ready for review
- Task cancellation with graceful shutdown and partial PR updates
Communication
- Slack integration with real-time thread updates
- Bi-directional: dogs respond to feedback and ask questions during execution
- Conversational development workflow
Visual & Research
- Before/after screenshots for UI changes (auto-detects frontend tasks)
- Web browsing: include URLs in tasks for reference implementation
- Proactive internet search: dogs autonomously research current docs/APIs
Infrastructure
- Socket Mode (no public webhooks, works behind firewalls)
- Celery + Redis task queue
- Single repo per deployment
- Reaction-based responses (emoji quick decisions)
- Dog specialization (frontend/backend/tests)
- Multi-repo support
- Visual regression testing
- Platform integrations (Discord, Teams, GitHub Discussions)
See full roadmap in Future Enhancements.
- Code generation: Aider + Claude Sonnet 4.5
- Task queue: Celery + Redis
- Communication: Slack Bolt (Socket Mode)
- Web automation: Playwright
- Search: DuckDuckGo
Slack @mention → Orchestrator (selects least-busy dog) → Worker (dog) clones repo
→ Aider generates plan → Draft PR posted → Aider implements code
→ Self-review → Tests → Final PR ready for review → Slack notification
See ARCHITECTURE.md for details.
ANTHROPIC_API_KEY=sk-ant-... # Your Claude API key
SLACK_BOT_TOKEN=xoxb-... # From Slack app OAuth page
SLACK_APP_TOKEN=xapp-... # From Slack app settings
GITHUB_REPO=yourcompany/yourrepo # Target repository
REDIS_URL=redis://localhost:6379 # Redis instance
# Configure 1-N dogs (JSON array)
DOGS='[
{"name": "YourCompany-Coregi", "email": "[email protected]", "github_token": "github_pat_..."},
{"name": "YourCompany-Bitbull", "email": "[email protected]", "github_token": "github_pat_..."}
]'See .env.example for full configuration options.
- The quality of the generated code is nondeterministic. Always review before merging. It might take a few tries to get it right.
- The code generation part (Aider) is particularly buggy. Will need improvement.
- Dogs aren't able to handle more than 200k tokens of context. Plan requests accordingly. E.g., commit large files separately.
- When a dog crashes, it loses all its state and must restart with a clean slate.
Contributions welcome! This is community-driven software.
- Report bugs and request features via GitHub Issues
- Submit PRs for bug fixes or new features
- Follow code style in CLAUDE.md
- Sweep AI - GitHub issues → PRs (acquired by Roblox)
- Devin - Full AI engineer (closed waitlist)
- Factory AI - Enterprise multi-agent coding
- GitHub Copilot Workspace - IDE-integrated assistant
What makes Dogwalker different: Open source, self-hosted (you control your data), highly customizable, Slack-native with bi-directional communication, multi-agent parallel processing.