Addy

— ADE

Great products start
with strong opinions

Write less code and make yours with Addy

The IDE is over.
Long live the ADE.

The way software gets built has fundamentally changed. You spend your day talking to agents, reviewing their work, and steering what they build.

But the tools haven't caught up. You're still using code editors designed for manual editing, bolted onto terminal emulators designed for the 1980s, wrapped in Electron apps that eat your RAM for breakfast.

Addy is a different kind of tool. An Agentic Development Environment — built from scratch for the workflow you actually have now. Multiple agents working simultaneously. Plans being tracked. Servers being managed. Context being maintained across sessions.

How it started

How it's going

The Interface

+
startup-app
~/projects/startup
marketing-site
~/Sites/marketing
api-server
~/projects/api
Files
src
auth
session.ts
middleware.ts
routes
users.ts
onboarding.ts
views
Dashboard.tsx
OnboardingFlow.tsx
components
StepIndicator.tsx
db
migrations
001_users.sql
Chat
build the full onboarding feature — auth, API, database, tests, UI, and CI
I'll break this into 6 parallel tasks and spawn sub-agents for each:
Opus — Auth service & session middleware
Sonnet — API endpoints & validation
Opus — Database layer & migrations
Sonnet — Test suite
Haiku — UI components & animations
Haiku — CI pipeline
All 6 agents are running. I'll request code review when they finish.
Ask Claude about this project
Claude
8
Opus - Auth service
Building plan: Session Auth Middleware
Step 1/3: Create auth module
Write(src/auth/session.ts)
+ export async function createSession() {
Claude
1
Sonnet - API endpoints
Step 2/4: Add route handlers
Write(src/routes/users.ts)
+ router.get('/users', async (req, res) => {
+ const users = await db.query(...)
Claude
2
Opus - Database layer
Step 1/2: Create migration
Write(db/migrations/001_users.sql)
+ CREATE TABLE users (
+ id UUID PRIMARY KEY,
+ email VARCHAR(255) UNIQUE
Gemini
3
Sonnet - Test suite
Running existing tests...
PASS src/auth.test.ts (3 tests)
PASS src/routes.test.ts (7 tests)
Writing new test cases
Write(src/onboarding.test.ts)
Claude
4
Haiku - UI components
Step 3/3: Animate transitions
Edit(src/views/Dashboard.tsx)
+ const spring = useSpring({
+ from: { opacity: 0 },
+ to: { opacity: 1 },
Claude
5
Haiku - CI pipeline
Read(.github/workflows/ci.yml)
Write(.github/workflows/deploy.yml)
+ name: Deploy to Production
+ on: push: branches: [main]
Codex
6
feat/onboarding12 files modified
+
startup-app
~/projects/startup
marketing-site
~/Sites/marketing
api-server
~/projects/api
Files
src
auth
session.ts
middleware.ts
routes
users.ts
onboarding.ts
views
Dashboard.tsx
OnboardingFlow.tsx
components
StepIndicator.tsx
db
migrations
001_users.sql
Chat
build the full onboarding feature — auth, API, database, tests, UI, and CI
I'll break this into 6 parallel tasks and spawn sub-agents for each:
Opus — Auth service & session middleware
Sonnet — API endpoints & validation
Opus — Database layer & migrations
Sonnet — Test suite
Haiku — UI components & animations
Haiku — CI pipeline
All 6 agents are running. I'll request code review when they finish.
Ask Claude about this project
Claude
8
Opus - Auth service
Building plan: Session Auth Middleware
Step 1/3: Create auth module
Write(src/auth/session.ts)
+ export async function createSession() {
Claude
4
Sonnet - API endpoints
Step 2/4: Add route handlers
Write(src/routes/users.ts)
+ router.get('/users', async (req, res) => {
+ const users = await db.query(...)
Claude
2
Opus - Database layer
Step 1/2: Create migration
Write(db/migrations/001_users.sql)
+ CREATE TABLE users (
+ id UUID PRIMARY KEY,
+ email VARCHAR(255) UNIQUE
Claude
3
Sonnet - Test suite
Running existing tests...
PASS src/auth.test.ts (3 tests)
PASS src/routes.test.ts (7 tests)
Writing new test cases
Write(src/onboarding.test.ts)
Claude
2
Haiku - UI components
Step 3/3: Animate transitions
Edit(src/views/Dashboard.tsx)
+ const spring = useSpring({
+ from: { opacity: 0 },
+ to: { opacity: 1 },
Claude
1
Haiku - CI pipeline
Read(.github/workflows/ci.yml)
Write(.github/workflows/deploy.yml)
+ name: Deploy to Production
+ on: push: branches: [main]
Claude
1
feat/onboarding12 files modified
Opus - Auth service
Building plan: Session Auth Middleware
Step 1/3: Create auth module
Write(src/auth/session.ts)
+ export async function createSession() {
Claude
4
Sonnet - API endpoints
Step 2/4: Add route handlers
Write(src/routes/users.ts)
+ router.get('/users', async (req, res) => {
+ const users = await db.query(...)
Claude
2
Opus - Database layer
Step 1/2: Create migration
Write(db/migrations/001_users.sql)
+ CREATE TABLE users (
+ id UUID PRIMARY KEY,
+ email VARCHAR(255) UNIQUE
Claude
3
Sonnet - Test suite
Running existing tests...
PASS src/auth.test.ts (3 tests)
PASS src/routes.test.ts (7 tests)
Writing new test cases
Write(src/onboarding.test.ts)
Claude
2
Haiku - UI components
Step 3/3: Animate transitions
Edit(src/views/Dashboard.tsx)
+ const spring = useSpring({
+ from: { opacity: 0 },
+ to: { opacity: 1 },
Claude
1
Haiku - CI pipeline
Read(.github/workflows/ci.yml)
Write(.github/workflows/deploy.yml)
+ name: Deploy to Production
+ on: push: branches: [main]
Claude
1
vim — App.tsx
import React from "react"
import { useState } from "react"
 
export function App() {
const [count, setCount] = useState(0)
return <div>{count}</div>
}
Terminal — ssh
$ ssh deploy@prod
Last login: Mon Feb 24
deploy@prod:~$ docker ps
CONTAINER IMAGE STATUS
a8f2e1 app:3.1 Up 4 days
b3c7d9 redis Up 4 days
Terminal — python
>>> import pandas as pd
>>> df = pd.read_csv("data.csv")
>>> df.describe()
count mean std
score 1000 72.4 12.1
age 1000 28.7 6.3
Terminal — kubectl
$ kubectl get pods
NAME READY STATUS
api-7f8b9-x4k2n 1/1 Running
web-5c6d7-m9p3q 1/1 Running
db-3a4b5-r7s8t 0/1 CrashLoop
Terminal — psql
psql> SELECT count(*) FROM users;
count
-------
14,892
(1 row)
psql> \dt
Terminal — htop
CPU[|||||||| 42.1%]
Mem[|||||| 3.2G/16G]
Swp[ 0K/0K]
PID CPU% MEM% CMD
412 38.2 12.1 node
1023 2.4 0.8 nginx
Terminal — git log
$ git log --oneline -5
a8f2e1c fix: auth token refresh
b3c7d9f feat: add onboarding
1e4a6b2 chore: update deps
9d8c7e3 fix: memory leak in ws
f2a1b3c feat: plan review UI
Terminal — docker
$ docker compose up -d
[+] Running 3/3
✔ redis Started 0.4s
✔ postgres Started 0.8s
✔ app Started 1.2s
Terminal — eslint
$ npx eslint src/
src/api.ts
12:5 warn Unexpected any
34:1 err Missing return
✖ 2 problems (1 error, 1 warn)
Terminal — env
$ cat .env.local
DATABASE_URL=postgres://...
REDIS_URL=redis://localhost
API_KEY=sk_live_...
NODE_ENV=development
Terminal — bench
$ wrk -t12 -c400 -d30s
Running 30s test @ :3000
Avg Stdev Max
4.2ms 1.1ms 28ms
Requests/sec: 48,201
Terminal — npm
$ npm run dev
▲ Next.js 15.1.3
- Local: http://localhost:3000
✓ Ready in 1.8s
Terminal — zsh
$ git status
On branch feat/onboarding
Changes not staged:
modified: src/App.tsx
modified: src/index.css
Terminal — node
$ npm run build
> app@1.0.0 build
> next build
 
✓ Compiled successfully
Route Size First Load
/ 4.2kB 89kB
Terminal — tests
$ npm test
PASS src/App.test.tsx
PASS src/utils.test.ts
FAIL src/api.test.ts
● fetchUser › should handle 404
Tests: 1 failed, 12 passed
Terminal — logs
$ tail -f server.log
[INFO] GET /api/users 200 12ms
[INFO] POST /api/auth 200 45ms
[WARN] Rate limit approaching
[INFO] GET /api/users 200 8ms
[ERR] POST /api/upload 500
Terminal — cargo
$ cargo build --release
Compiling serde v1.0.193
Compiling tokio v1.35.1
Compiling app v0.1.0
Finished release [optimized]
Terminal — swift
$ swift build
Building for debugging...
[1/8] Compiling AppKit+Ext.swift
[5/8] Compiling PaneView.swift
[8/8] Linking Addy
Build complete! (4.21s)
vim — App.tsx
import React from "react"
import { useState } from "react"
 
export function App() {
const [count, setCount] = useState(0)
return <div>{count}</div>
}
Terminal — ssh
$ ssh deploy@prod
Last login: Mon Feb 24
deploy@prod:~$ docker ps
CONTAINER IMAGE STATUS
a8f2e1 app:3.1 Up 4 days
b3c7d9 redis Up 4 days

Addy's Principles

Simplicity

Addy isn’t a code editor. It’s where you orchestrate, review, and decide. Let the agents write the code — you focus on whether it’s the right code.

Quality

Every plan gets reviewed by design, product, and engineering agents before a line of code is written. Every code change gets reviewed before it ships.

Speed

Swift and AppKit. No Electron, no web views. Sub-millisecond latency, instant splits, smooth animations. A tool you live in all day has to feel instant.

Control

Terminals, browsers, plans, reviews — all in one window. Split panes any direction. Your workspace adapts to how you think, not the other way around.

Understanding

Addy gives your agent persistent memory and a sense of purpose. It knows why you’re building this project and makes better decisions because of it.

Memory & Intuition

In addition to structured, searchable memory, every project has a “Why”. When agents understand the intentions and philosophy of the project, they make better decisions and you spend less time iterating.

Why
why.md
Why Addy Exists
The Core Thesis

AI coding agents are becoming primary collaborators in software development, but the tools developers use — terminals, editors, browsers — were designed for a world where the human does everything. Addy is the first environment designed around the assumption that AI agents are active participants in the development workflow.

Addy is the first ADE: Agentic Development Environment.

What Problem It Solves

Today, working with AI coding agents means pasting context into chat windows over and over, agents that forget everything between sessions, no way for agents to control their own workspace, and terminal output that's invisible to the AI unless you copy-paste it.

Addy eliminates this friction by making the workspace itself AI-native.

The Philosophy
1. Projects are the organizing principle

Not tabs, not windows — projects. Everything in Addy is scoped to a project: terminals, git status, panes, memory, plans, file explorer. When you switch projects, your entire context switches.

2. The terminal is the foundation, not a feature

Addy doesn't replace the terminal — it wraps it. You still have your shell, your dotfiles, your muscle memory. AI tools layer on top of what already works.

3. Agents are workspace participants, not chatbots

Through the MCP server, AI agents can control the IDE: split panes, spawn sub-agents, start dev servers, open browsers, navigate files, switch projects.

4. Context accumulates, never resets

Memory system, plans, project context injection, session hooks. When a new agent session starts, it inherits everything: what was built, what was decided, what patterns to follow, what's in progress.

5. Native performance is non-negotiable

Swift + AppKit, all programmatic, no Electron, no web views for core UI. The app has to feel instant. Terminals can't lag. Splits can't stutter.

6. No hacks, no shortcuts

Use hardened, tested frameworks. If AppKit provides a native solution, use it — don't hand-roll a simulation. The upfront cost of doing it right always pays for itself.

7. Design taste matters

Custom chevrons instead of system defaults. WebGL shader on the browser start page. Thoughtful theming. This isn't a utilitarian wrapper — it's opinionated software with a point of view.

8. Multi-model, not locked in

Claude, Gemini, Codex — Addy supports multiple AI backends through a shared abstraction. The tool is about the workflow, not about any single AI provider.

The Why
Every project gets a living philosophy document. Agents consult it before making non-trivial decisions — keeping work aligned with intent.
Memory
8 types
Principles3 memories
Conventions12 memories
Architecture7 memories
Decisions5 memories
Patterns4 memories
Gotchas9 memories
Product2 memories
Workflows6 memories
Structured memory
Memories are typed — conventions, architecture, decisions, gotchas, and more. Agents store what they learn and recall it when it matters.

Sub-agents you can actually see.

An agent doing deep research that kicks off its own sub-agents? Those agents spawn into their own panes so you can see exactly what they're doing, in real time. Each one names itself so you always know which agent is doing what.

Opus - Orchestrator
Spawning 3 sub-agents...
addy_spawn_agent
task: "Refactor auth middleware"
✓ Agent started
addy_spawn_agent
task: "Add rate limiting"
✓ Agent started
addy_spawn_agent
task: "Write integration tests"
✓ Agent started
Waiting for sub-agents to complete...
Claude
8
Sonnet - Auth
Edit(src/middleware/auth.ts)
+ export async function verifyToken(req) {
Claude
3
Sonnet - Rate limit
Write(src/middleware/rateLimit.ts)
+ const limiter = new SlidingWindow({
Gemini
2
Haiku - Tests
Queued, waiting for auth refactor...
Codex
1

Chat or terminal. Your call.

Every agent pane can switch between a raw terminal and a rich chat interface. Same agent, same session. Pick whichever way you like to work.

Opus - Auth refactor
Refactor the auth module to use JWT tokens
I'll refactor the auth system to use JWTs. Let me read your current implementation first.
Done. Replaced the string-based auth with JWT validation across 3 files. All tests passing.
Ask Claude...
Claude
24
Chat mode
Maybe you prefer chat, maybe you're a little afraid of the terminal. Use the one that makes your heart happy.
Opus - Auth refactor
Claude Code v2.1.42
Opus 4.6 · ~/projects/startup
refactor the auth module to use JWT tokens
Reading src/auth/AuthManager.ts...
Reading src/auth/session.ts...
Editing AuthManager.ts
- function checkAuth(t: string) {
+ function validateSession(token: JWTToken) {
+ const decoded = jwt.verify(token, SECRET)
Writing 3 files...
All tests passing.
Claude
24
Terminal mode
Maybe you prefer the terminal, maybe you're afraid of chat. It's whatever, do whatever.

Plans are a first class citizen.
The better the plan, the better the outcome.

Addy gives your agent the tools to make plans that are more likely to result in one-shots.

Plans
Active3Completed12
Onboarding Integration Picker12m agoBuild
Auth Refactor to JWT2h agoBuild
Add Rate Limiting4h agoBuild
Add Rate Limiting to Auth Endpoints
Build
In ProgressCreated 12m ago

Add sliding-window rate limiting to login and signup endpoints using Redis. Limit to 5 attempts per minute per IP with exponential backoff on repeated violations.

Create Redis rate limiter utility
Add rate limit middleware to login endpoint
Add rate limit middleware to signup endpoint
Add exponential backoff for repeat offenders
Write integration tests for rate limiting
Files
src/middleware/rateLimit.ts
src/routes/login.ts
src/routes/signup.ts

Automatic commit handling

Let the robots manage version control. They can speak to themselves in their bleep blorps. You can still control things easily, if you really want, I guess.

Git
?src/tests/integration.test.ts
Asrc/views/IntegrationPicker.tsx
Msrc/views/OnboardingFlow.tsx
Msrc/api/integrations.ts
Add onboarding integration picker2m ago
Refactor auth flow to JWT1h ago

Automated plan reviews & code reviews

Plans and code are automatically reviewed by separate agents. Plans are critiqued by a classic EPD team, and code is gone over with a fine-toothed comb by an engineering focused agent.

Plan Review
1724
Design Agent1 warning
Missing error handling for Redis connection failure
Product Agent2 info
Consider adding rollback step for session migration
Add estimated duration for each step
Engineering Agent1 critical
Step 3 depends on Redis 7.x stream features — verify cluster version before deploying
Plan review
Every plan is reviewed by an EPD team. Agents that are given personas just like a team at a typical tech company.
Code Review
152230
Bugs & Logic3 critical
Memory pane type implemented but completely inaccessible from UI
Missing Memory pane spawn wiring in TerminalContainerVC
Missing spawnMemoryPane() method in SplitPaneViewController
SecurityNo issues
Code Quality1 info
Consider extracting pane factory into a dedicated coordinator
Code review
When code is written, an engineering agent automatically reviews it for bugs, security issues, and code quality.

Browser AND console

Addy has its own browser, and the console is separated from it so it doesn't clutter over your site. Your agents understand what's happening in the console by default — if they build something and it throws an error, they just fix it.

Built for macOS.
Not ported to it.

Addy is a real Mac app. Not a web app in a wrapper. You can feel the difference the moment you open it.

Swift + AppKit

Built from scratch in Swift with AppKit. No web views rendering your workspace. No JavaScript runtime managing your terminals.

Instant everything

Pane splits are instant. Project switching is instant. There is no loading spinner anywhere in this app.

System integration

Native menus, native key bindings, native window management. Cmd+Tab, Stage Manager, Spaces, full screen — it all works like you expect.

Lightweight

No Electron. No Chromium. No 500MB of bundled browser. Addy uses a fraction of the memory and starts in under a second.

Everything has a shortcut.

Every action in Addy is reachable from the keyboard. Split panes, spawn agents, switch projects, run reviews — without ever reaching for the mouse. Power users stay in flow. Everyone else discovers shortcuts naturally.

Split Left
D
Split Right
D
Split Up
D
Split Down
D
File explorerE
Open browserB
Toggle plansP
Toggle tasksT
Open notepadN
Toggle chat mode
Navigate panes←→
Switch project1–9

19 pane types. One workspace.

Agent, Sub-agents, Browser, Console, Plans, Code Review, Plan Review, Architecture Graph, Test Runner, Git, Tasks, Memory, File Explorer, Notepad, Design Tokens, Server, Figma.

Files
src
views
Dashboard.tsx
Settings.tsx
Onboarding.tsx
components
Button.tsx
Card.tsx
App.tsx
package.json
Notepad
Auth Refactor Notes
Decisions
Use sliding-window rate limiting
Redis for session store
Migrate existing sessions
> Key insight: refresh tokens should rotate on every use
Open questions
How to handle active sessions during migration?
Design Tokens
Colors
--color-accent#e4ff54
--color-bg#0d0d0d
--color-success#59c77a
--color-error#ff6b6b
Spacing
--space-sm8px
--space-md16px

Tools for Agents

All MCP tools, at a glance.

Create a new plan.

create_plan

List plans by status.

list_plans

Read full plan details.

get_plan

Update step state.

update_plan

Start a sub-agent.

spawn_agent

Run a dev server.

start_server

Stop a running server.

stop_server

Split pane layout.

split_pane

List open panes.

list_panes

Open a page in browser.

open_url

Jump to a project.

switch_project

Add project to workspace.

add_project

Read project activity.

get_activity

Switch git branches.

git_checkout

List git branches.

git_branches

Read git status.

git_status

Apply workspace template.

apply_template

Send text to terminal.

send_text

Run code review.

request_code_review

Features

Everything in one workspace. Nothing hidden.

52 MCP tools

Agents control the entire workspace through a structured API. Spawn agents, start servers, open browsers, manage plans, run reviews, search memory.

Multi-model

Claude Code, Gemini CLI, and Codex CLI. Switch per-pane. One workspace, any model.

Model quick change

Switch between models quickly with one button.

Automatic architecture docs

Addy scans your codebase and generates a dependency graph, module clusters, and file summaries. Always up to date.

Bug fix loops

Agents detect errors in the console, trace the cause, fix the code, and verify the fix. Automatic feedback loops.

Figma pane

Link Figma frames directly in your workspace. Inspect nodes, extract tokens, export assets, and diff against your UI.

Detailed plans

Structured plans with steps, file lists, and lifecycle tracking. Draft, review, approve, build, complete.

Automatic reviews

Code and plan reviews run automatically when agents finish. Iterative fix loops until clean.

Built-in browser

Preview localhost, inspect elements, read console errors, and take screenshots. Agents see what you see.

Design tokens

Extract colors, typography, spacing, and radii from Figma frames. Build a design system from your designs.

Project-based

Everything is scoped to a project: terminals, git, panes, memory, plans. Switch projects and your entire context switches.

Test runner

Auto-detects swift test, npm test, pytest, and more. Multi-run history with per-suite summaries and failure details.

LSP integration

Compiler diagnostics, go-to-definition, find references, hover docs, and symbol search. Supports Swift, TypeScript, Rust, Go, Python.

Git integration

Branch switching, modified/untracked/ahead/behind counts, inline diffs, background polling. Agents run real git workflows.

File explorer

Fast, lazy-loaded tree with drag-drop into terminals. Drop folders from Finder to add projects.

Workspace templates

7 built-in layouts: Single Terminal, 2-Up, 3-Column, Terminal+Chat, Terminal+Browser, IDE Layout. Save your own.

Split panes

Infinite recursive splits in any direction. Navigate with Cmd+Opt+arrows, focus by index with Opt+1-9.

Session persistence

Layouts, projects, shells, and pane state restored on relaunch. Switch projects and come back to everything.

Sub-agent cascade

Connector lines between parent and child. Auto-naming. Close cascade: when a parent dies, its children die too.

Handoff button

Transfer full context to a fresh agent session. No re-explaining the project.

Notepad

Markdown notes directly in your workspace. Quick text editing without leaving the IDE.

Tasks pane

Task management built into the workspace. Track work alongside your agents.

Dark and light theme

System-aware theming that follows your macOS appearance.

Auto-start model

Optionally launch your default AI backend in every new pane.

AGENT-FIRSTNATIVE MACOSSPLIT PANESMCPMULTI-MODELGIT CONTROLPLANNINGPROJECT CONTEXTBROWSERMULTI-PROJECTMEMORYCHAT MODESWIFT + APPKITCONSOLEICLOUD SYNCTEMPLATESAGENT-FIRSTNATIVE MACOSSPLIT PANESMCPMULTI-MODELGIT CONTROLPLANNINGPROJECT CONTEXTBROWSERMULTI-PROJECTMEMORYCHAT MODESWIFT + APPKITCONSOLEICLOUD SYNCTEMPLATES

Questions

Let them cook.

Be the first to know when Addy is ready.