|
| 1 | +<p align="center"> |
| 2 | + <img src="build/appicon.png" width="128" height="128" alt="Shannon" /> |
| 3 | +</p> |
| 4 | + |
| 5 | +<h1 align="center">Shannon</h1> |
| 6 | + |
| 7 | +<p align="center"> |
| 8 | + <em>A personal orchestration tool for Claude Code agents</em> |
| 9 | +</p> |
| 10 | + |
| 11 | +<p align="center"> |
| 12 | + <img src="https://img.shields.io/badge/Claude_Code-CLI-blue?style=flat-square" alt="Claude Code" /> |
| 13 | + <img src="https://img.shields.io/badge/Go-1.23-00ADD8?style=flat-square&logo=go&logoColor=white" alt="Go" /> |
| 14 | + <img src="https://img.shields.io/badge/React-18.2-61DAFB?style=flat-square&logo=react&logoColor=black" alt="React" /> |
| 15 | + <img src="https://img.shields.io/badge/Wails-v2-red?style=flat-square" alt="Wails" /> |
| 16 | + <img src="https://img.shields.io/badge/hobby_project-purple?style=flat-square" alt="Hobby Project" /> |
| 17 | +</p> |
| 18 | + |
| 19 | +--- |
| 20 | + |
| 21 | +Shannon is a desktop app that lets you manage **multiple Claude Code instances** working together on your projects. Instead of running one Claude at a time, you create agents with different roles, organize them into teams, and let them tackle tasks in parallel — then review everything before it touches your codebase. |
| 22 | + |
| 23 | +Named after [Claude Shannon](https://en.wikipedia.org/wiki/Claude_Shannon), the father of information theory. The connection felt right. |
| 24 | + |
| 25 | +> **Note:** This is a hobby project. Built for personal use, shared in case others find it useful. |
| 26 | +
|
| 27 | +## What it does |
| 28 | + |
| 29 | +**The core loop is simple:** Plan tasks → Assign agents → Execute → Review changes → Apply. |
| 30 | + |
| 31 | +Shannon sits between you and your Claude Code CLI. You define agents with specific system prompts and tool permissions, group them into teams, then point them at your project. Shannon handles the rest — spinning up isolated workspaces, managing execution order, and presenting you with a clean diff review before anything changes. |
| 32 | + |
| 33 | +### Agents & Teams |
| 34 | + |
| 35 | +Create agents with different specializations. A frontend agent, a backend agent, a test writer — each with their own system prompt, model preference, and allowed tools. Then organize them into teams with one of three execution strategies: |
| 36 | + |
| 37 | +- **Parallel** — all agents work simultaneously |
| 38 | +- **Sequential** — agents chain one after another |
| 39 | +- **Custom** — you draw the execution graph on a visual canvas |
| 40 | + |
| 41 | +### Planning |
| 42 | + |
| 43 | +Describe what you want to accomplish. Shannon uses Claude to break your goal into concrete tasks, figures out dependencies, and assigns them to your agents. You can edit everything before hitting start. |
| 44 | + |
| 45 | +There's also a prompt improver that helps refine agent system prompts — useful when you're not sure how to describe a specialization. |
| 46 | + |
| 47 | +### Execution & Monitoring |
| 48 | + |
| 49 | +Once a session starts, Shannon creates isolated workspace copies of your project for each task. You can watch execution in real-time through a DAG visualization that shows task status, dependencies, and progress. A live chat view streams Claude's output as it works. |
| 50 | + |
| 51 | +### Code Review |
| 52 | + |
| 53 | +This is where Shannon earns its keep. Every change goes through a diff review: |
| 54 | + |
| 55 | +- **Hunk-level** — accept or reject individual code chunks |
| 56 | +- **File-level** — approve or reject entire files |
| 57 | +- **Feedback loop** — reject with a reason, and Shannon sends your feedback back to Claude for iteration |
| 58 | +- **Inline editing** — modify workspace files directly in the built-in Monaco editor |
| 59 | + |
| 60 | +Nothing touches your project until you explicitly approve it. |
| 61 | + |
| 62 | +### MCP Integration |
| 63 | + |
| 64 | +Browse and install MCP servers from the [Smithery](https://smithery.ai/) registry, or configure your own. Attach them to agents to extend their capabilities — web browsing, database access, API integrations, whatever you need. |
| 65 | + |
| 66 | +## Tech Stack |
| 67 | + |
| 68 | +| Layer | Tech | |
| 69 | +|-------|------| |
| 70 | +| Desktop shell | [Wails v2](https://wails.io/) (Go + WebView) | |
| 71 | +| Backend | Go 1.23, SQLite (GORM) | |
| 72 | +| Frontend | React 18, TypeScript, Tailwind CSS | |
| 73 | +| Code editor | Monaco Editor | |
| 74 | +| Graph viz | React Flow (XYFlow) + Dagre | |
| 75 | +| State | Zustand | |
| 76 | +| AI engine | Claude Code CLI | |
| 77 | + |
| 78 | +## Prerequisites |
| 79 | + |
| 80 | +- [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code) installed and authenticated |
| 81 | +- [Wails v2](https://wails.io/docs/gettingstarted/installation) development environment |
| 82 | +- Go 1.23+ |
| 83 | +- Node.js 18+ |
| 84 | + |
| 85 | +## Getting Started |
| 86 | + |
| 87 | +```bash |
| 88 | +# Clone |
| 89 | +git clone https://github.com/yourusername/shannon.git |
| 90 | +cd shannon |
| 91 | + |
| 92 | +# Install frontend dependencies |
| 93 | +cd frontend && npm install && cd .. |
| 94 | + |
| 95 | +# Run in development mode |
| 96 | +wails dev |
| 97 | + |
| 98 | +# Build for production |
| 99 | +wails build |
| 100 | +``` |
| 101 | + |
| 102 | +## Project Structure |
| 103 | + |
| 104 | +``` |
| 105 | +shannon/ |
| 106 | +├── backend/ |
| 107 | +│ ├── claude/ # Claude Code CLI integration |
| 108 | +│ ├── config/ # App configuration |
| 109 | +│ ├── models/ # Data models (Agent, Team, Session, Task...) |
| 110 | +│ ├── services/ # Business logic (TaskEngine, Planner, DiffTracker...) |
| 111 | +│ └── store/ # SQLite database operations |
| 112 | +├── frontend/ |
| 113 | +│ ├── src/ |
| 114 | +│ │ ├── assets/ # Logo, fonts |
| 115 | +│ │ ├── components/# Shared UI components |
| 116 | +│ │ ├── pages/ # Dashboard, Agents, Teams, Sessions, Workspace... |
| 117 | +│ │ ├── stores/ # Zustand state stores |
| 118 | +│ │ └── types/ # TypeScript type definitions |
| 119 | +│ └── index.html |
| 120 | +├── build/ # App icons and build assets |
| 121 | +├── app.go # Wails bindings (all exposed methods) |
| 122 | +└── main.go # Entry point |
| 123 | +``` |
| 124 | + |
| 125 | +## How it works, roughly |
| 126 | + |
| 127 | +``` |
| 128 | +You |
| 129 | + │ |
| 130 | + ├─ Define agents (system prompt, model, tools, MCP servers) |
| 131 | + ├─ Create a team (parallel / sequential / custom graph) |
| 132 | + ├─ Start a session on a project |
| 133 | + │ |
| 134 | + ├─ Shannon plans tasks (or you write them manually) |
| 135 | + ├─ Each task gets an isolated workspace (copy of your project) |
| 136 | + ├─ Claude Code CLI runs in each workspace |
| 137 | + │ |
| 138 | + ├─ You review diffs (hunk by hunk or file by file) |
| 139 | + ├─ Reject with feedback → Claude iterates |
| 140 | + └─ Accept → changes applied to your project |
| 141 | +``` |
| 142 | + |
| 143 | +## Limitations |
| 144 | + |
| 145 | +- Requires Claude Code CLI — this is not a standalone AI tool |
| 146 | +- Workspace copies can use significant disk space for large projects |
| 147 | +- No remote/cloud mode — it's a local desktop app |
| 148 | +- Hobby project — expect rough edges |
| 149 | + |
| 150 | +## License |
| 151 | + |
| 152 | +MIT |
| 153 | + |
| 154 | +--- |
| 155 | + |
| 156 | +<p align="center"> |
| 157 | + <sub>Built with curiosity and too many Claude API calls.</sub> |
| 158 | +</p> |
0 commit comments