Architecture Overview

A brief overview of how Smith coordinates multiple AI agents to build software.

How It Works

Smith uses a coordinator agent that delegates work to specialized background agents. You chat with the coordinator in the REPL, while background agents work on planning, coding, testing, and reviewing your features.

💬

You chat with Smith

Request features in natural language

🕶️

Coordinator breaks it down

Analyzes request and creates tasks

Agents work in parallel

Planning, coding, testing happen concurrently

Results integrated

Code written, tests passing, ready to commit

Key Components

🎯 REPL

Interactive terminal interface where you chat with Smith and see agent progress in real-time.

🕶️ Coordinator

Main agent that talks to you, breaks down requests, and manages other agents.

🤖 Background Agents

Specialized agents (planning, implementation, testing, review) that work autonomously.

📋 Task Queue

BBolt-based queue that coordinates work between agents safely.

🛠️ Tools

File operations, command execution, Git integration - agents use these to build software.

🔒 Safety System

Controls what agents can do automatically vs. what requires your approval.

Why Multiple Agents?

Parallel Execution

Planning can happen while tests are being written. Multiple tasks progress simultaneously instead of sequentially.

🎯

Specialized Focus

Each agent has a specific role with tailored prompts and tools, leading to higher quality output than a single generalist agent.

🔄

Natural Workflow

Mirrors how dev teams work - planning, implementation, testing, and review happen as distinct activities.

Technical Stack

  • Language: Go - for performance, concurrency, and single binary distribution
  • Storage: BBolt - embedded key-value store for reliable, lock-free concurrent coordination
  • UI: Lotus - blazing fast terminal interface
  • LLM Providers: GitHub Copilot, OpenRouter - flexible model choices

Learn More

For detailed technical information about Smith's internals, package structure, and design decisions, check out: