Today we are covering a piece from Walid SASSI, author of AI Driven Swift Architecture. This article stood out to us because it looks beyond the usual “AI will write your apps” narrative and focuses instead on how AI-assisted development workflows themselves are evolving.
In this article, originally published on Swift Tribune, Walid explores how multi-agent systems and Claude-powered workflows are beginning to reshape iOS development. Rather than treating AI as a simple autocomplete layer, he looks at how specialized agents can coordinate coding, debugging, reviews, and research in parallel, pushing development workflows toward orchestration instead of isolated assistance.
More importantly, the article raises a broader question many teams are starting to confront: if AI tools can now coordinate parts of the development process itself, how does that change the way engineers build apps?
TL;DR
Multi-agent workflows allow AI systems to split development tasks across specialized agents
Claude agents can coordinate coding, reviews, debugging, and research in parallel
These workflows are starting to influence how iOS developers approach app development
AI-assisted development is moving beyond autocomplete toward orchestration and task management
Faster development is only part of the equation; shipping and growing apps remains equally important
Major updates from Google I/O: Google I/O showcased 17 major updates for Android developers, covering AI-powered development tools, expanded ecosystem support, and agentic workflows. Highlights include the stable Android CLI, native app building in Google AI Studio, Jetpack Compose becoming the UI standard, and new capabilities across XR, cars, TV, and the upcoming Android 17.
Announcements at Kotlin Conference 2026: KotlinConf’26 celebrated Kotlin’s 15th anniversary with major announcements including the unified Kotlin Toolchain, stable Koog 1.0 AI agent framework, and a deeper Anthropic-JetBrains partnership bringing Claude natively into IntelliJ IDEA and Android Studio. Kotlin Multiplatform continues its rapid growth, with top app adoption more than doubling and companies like PayPal, Sony, and Duolingo already using it in production.
Flutter 3.44 is out: Flutter 3.44 arrives with major updates including Hybrid Composition++ for smoother Android native views, Swift Package Manager as the new iOS/macOS default, and Agentic Hot Reload for seamless AI-assisted development. The release also expands Flutter’s reach into embedded systems, with the 2026 Toyota RAV4 multimedia system and the upcoming LG webOS SDK now powered by Flutter.
-
Apple teases generative AI expansion ahead of WWDC 2026: Ahead of WWDC 2026, Apple has quietly registered the subdomain genai.apple.com, hinting at a broader generative AI push alongside expected announcements for iOS 27, iPadOS 27, and macOS 27. The upcoming releases are anticipated to bring significant Apple Intelligence upgrades, including a redesigned conversational Siri app, enhanced accessibility features, and deeper AI integration across native apps.
This month Anthropic shipped a new iteration of multi-agent workflows inside Claude Code. The official name in the documentation is agent view, opened with the claude agents command, I will use both “agent view” and “Claude Agents” in this article since the community has already started using the second term.
Multi-agent is not a brand new topic for CLI coding tools, Claude Code and Codex have both been experimenting with it for months, but the way Anthropic exposes it now is genuinely different, and worth a careful look from anyone who runs more than one AI session at a time on an iOS codebase.
A quick bit of history first. Back in February 2026, Anthropic shipped what I would call the per-session multi-agent model: each agent ran in its own Claude Code session, and you switched between them from the outside, typically with tmux .
That workflow works, but it puts the burden of orchestration entirely on you. We covered exactly that pattern in Chapter 8 of our book AI-Driven Swift Architecture, including how to spin up several agents in parallel tmux panes and route attention between them manually.
Claude Agents replaces that. The agents now live inside Claude Code itself, in a dedicated view. You switch between them, monitor their state, and follow their full lifecycle without ever leaving the CLI. No more tmux gymnastics, no more “which pane is the test agent in again?”, you just select the agent.
Before anything else, you need a recent enough Claude Code build. (If you are setting Claude Code up from scratch on Apple Silicon, the Claude Code for Xcode 26 guide walks through install, authentication, and pricing first.)
The agents view is a research preview and it requires Claude Code v2.1.139 or later. A simple claude update is usually enough to get you on the right version. If claude --version reports something older, the new view will not appear and nothing in this article will line up with what you see on screen. Once installed, you open it with:
claude agents
Once you are on the right version and Opus 4.7 is selected as the model, agent view shows up as a first-class panel inside Claude Code.
This is the entry point. Each row in that panel will represent an agent. Submitting a prompt to it spawns a new agent that immediately enters a working state on the task you described, independently from whatever you are doing in the main session.
The reason this matters more than the older tmux setup is the lifecycle. Claude Code now treats each agent as a real long-running unit with a state you can observe at a glance. The documentation defines six states, each with its own icon signal:
Working, the agent is actively running tools or generating a response. The row shows an animated icon, the kind that signals “I’m still chewing on it, don’t interrupt.” This is the default state right after you submit a prompt.
Needs input, the agent is blocked waiting on you, usually because a tool call needs explicit authorisation, or because the prompt hit an ambiguous decision the agent does not want to make alone. The icon goes yellow. Until you act, the agent does not advance.
Idle, the session has nothing to do and is ready for your next prompt. The icon is dimmed. This is the resting state of an agent you have attached to but not yet given a task.
Completed, the task finished successfully. The icon goes green. The summary the agent produced is now available for you to read.
Failed, the task ended with an error. The icon goes red. Failures stay visible in the list so you do not miss them under a pile of completed sessions.
Stopped, you killed it. The icon goes grey. To trigger this state, select the agent and press Ctrl + X . Useful when a run has clearly gone off the rails and you would rather restart with a tighter prompt than babysit it. A second Ctrl + X within two seconds deletes the session entirely, along with its worktree, so be deliberate.
Those six states are the whole API surface of orchestration. Once you internalise them, multi-agent workflows stop feeling like a juggling act.
To put this into practice I picked a small, deliberately under-architected project: a Swift to-do list iOS app. The kind of codebase a lot of teams actually have lying around, a few view controllers, persistence wired in directly from the UI layer, no DI, no tests. It is the perfect playground because the work decomposes very naturally into two independent streams:
Stream A, migrate the legacy code toward Clean Architecture. Extract a domain layer, introduce protocols, move persistence behind a repository, kill the implicit singletons.
Stream B, backfill the unit tests. Cover the domain logic that Stream A is producing, with proper fakes and deterministic assertions.
I want these two streams to run at the same time, with two different agents, on two different worktrees, and I want to see how Claude Code handles the synchronisation between them. That is the actual subject of this article, the agent UI is just the entry point.
A small prompting trick
One thing I have settled into over the last few months: I no longer write the prompt for an architectural agent directly. I describe what I want in plain language to ChatGPT first, let it shape a structured, intent-rich prompt, and then I paste that into Claude Agents.
ChatGPT is, in my experience, particularly strong at prompt shaping, it pushes back, asks clarifying questions, and produces prompts that age well. Claude, on the receiving end, is excellent at executing those prompts inside a real codebase. Using the two together is, frankly, the most productive workflow I have found.
So both prompts, the Clean Architecture refactor one and the unit-testing one, were authored by ChatGPT and handed to Claude Agents. Then I hit submit on both, back to back.
Within seconds the agents panel shows both of them in the working state, animated icons running side by side.
Notice that nothing about your main Claude Code session is blocked. You can keep working in the main thread, ask questions, read files, plan the next step, while the two agents grind in the background. This is the part the tmux workflow could never give you cleanly: a shared, in-process control plane for your agents.
A few minutes in, one of the agents flips to yellow.
This is the part of the lifecycle that is the most underrated. The agent has hit a permission boundary, typically a tool call that requires explicit authorisation, or a destructive action it refuses to take on its own.
Until you select the agent (with ↑ / ↓ ), peek into it with Space and answer, it sits there. No silent fallback, no “I’ll just do something simpler.” That sounds annoying, but in practice it is the single biggest safety improvement over the old tmux model, where an agent could quietly take a wrong turn and you would only discover it three minutes later.
Agent view is entirely keyboard-driven. You move between rows with ↑ and ↓ , press Space to open the peek panel (a quick read on the agent’s most recent output, or the question it is waiting on).
Press Enter or → to attach, that is, to take over the agent’s full conversation in your terminal, exactly as if you had run claude against that session. Pressing ← on an empty prompt detaches you back to the list.
This is where the UX win compared to tmux becomes obvious. Switching between agents used to mean Ctrl-B + a pane number and rebuilding context in your head every time.
Now it is two keystrokes, ↓ then Space , and you are reading the agent’s state. The “where was I again?” cost essentially goes to zero.
Eventually the architecture agent finishes its first checkpoint, the domain protocols are in place, the legacy view models redirected, the build is green on its branch. The icon turns green.
A completed agent has handed you a summary you can act on. This is also where review discipline matters: a green agent is not a merged PR. It is a proposal sitting on a branch, waiting for human review and integration.
Here is the part that quietly does most of the heavy lifting. Before any background session edits files, Claude Code moves it into an isolated Git worktree under .claude/worktrees/ . Each agent gets its own worktree (and its own branch) automatically, you never type git worktree add yourself.
The agent does its writing in that worktree only and never touches your main checkout while it is running. (Two caveats from the docs: this isolation is skipped if the working directory is not a Git repository, or if the session is already running under .claude/worktrees/ .)
For this experiment that means two worktrees and two branches were created automatically. In my screenshot the branches are named after the prompts I dispatched, Claude Code auto-names a session from its prompt, and that name flows into the branch:
worktree-clean-arch-refactor , the architecture agent’s branch
worktree-add-unit-tests , the testing agent’s branch
Those exact names are just what came out of my prompts; yours will look different. What is guaranteed is that each agent gets a separate worktree and branch, not that the branches follow any particular naming convention.
This is what makes parallel agents safe on a real iOS project. They share a .git object database, so they see the same history and can pull from each other’s branches at well-defined checkpoints, but they cannot accidentally overwrite the same Package.swift or .xcodeproj , they are not even on the same filesystem view.
A word of caution here, and it is the one operational rule I would beg you not to skip:
the worktree workflow only pays off if your prompt explicitly tells the agent to push its work to review, and then to merge once review passes.
If you forget that line in your prompt, you end up with two beautiful green agents and a stack of orphan worktrees that nobody integrates.
The review and merge workflow, including how we wire it into SonarQube as a quality gate before merge, is exactly what we walk through end-to-end in Chapter 8 of AI-Driven Swift Architecture. If you want the full pipeline, that is the place to go.
Occasionally an agent goes off-script, usually because the prompt was too vague or because it picked a path that is going to be expensive to undo. In that case, select it with ↑ / ↓ and hit Ctrl + X . The state flips to stopped and the icon turns grey.
The worktree is still there, the partial work is still there, nothing is destroyed. You just regain control.
From there, you can either resume with a tighter prompt, or remove the worktree and start over. This is significantly less stressful than killing a tmux pane and hoping you committed recently enough.
Eventually both agents settle. The refactor agent has carved out a domain layer; the testing agent has produced a Swift Testing suite against it.
At that point my job as the human starts: review the two branches, merge them onto an integration branch in the right order (architecture first, tests on top), let SonarQube run, and only then open a pull request against main . Again, that pipeline is the subject of Chapter 8 of the book; the article you are reading is intentionally focused on the agent runtime itself.
If I had to summarise, three things change compared to the February 2026 tmux workflow:
The orchestrator is in-process. You no longer need an external multiplexer to keep track of N agents. The agents view is the orchestrator.
State is explicit. Working, Needs input, Idle, Completed, Failed, Stopped, six states, each visible, each actionable. You stop guessing whether an agent is “stuck” or “thinking.”
Isolation is automatic. Every agent gets its own worktree and branch without you typing git worktree add once. That alone removes a whole category of “two agents overwrote the same file” incidents.
What does not change is the engineering discipline around it. The agents still produce branches you have to review. The synchronisation between two agents working on the same domain still requires you to tell them, in their prompts, where the contract lives and when to rebase.
Multi-agent AI does not remove the need for an architect, it just lets one architect direct three or four streams of work at once.
Claude Agents is, to me, the first time the multi-agent story inside a CLI coding tool feels operationally honest. The tmux era worked for early adopters who did not mind being the human router; this new version works for teams.
The fact that it is still flagged as a research preview should not stop you from trying it, but it should remind you that the surrounding workflow (review, merge, quality gates, CI integration) is still very much your responsibility.
If you want to go deeper into how we run that surrounding workflow on a real Swift codebase, including the review process, the SonarQube hookup, and the way we structure prompts so that two agents can synchronise without stepping on each other, that is the entire subject of Chapter 8 of AI-Driven Swift Architecture. The book picks up exactly where this article stops.
In the meantime: claude update , open the agents view, and try spawning two agents on a small project. Pick something boring, a to-do list, a notes app, a weather screen, and watch how the lifecycle plays out. Half an hour with the new view is worth more than any blog post about it, including this one.
If you’re exploring how AI-assisted workflows are reshaping real-world software engineering, AI-Driven Swift Architecture by Walid SASSI and Dave Poirier offers a practical look at building modern iOS systems with AI-assisted development, architecture patterns, concurrency, and production-ready engineering practices.
🧑💻 Master Clean Architecture, TDD, and modernization with Claude Code support
🛠️ Build SwiftUI apps powered by Apple Foundation Models and on-device intelligence
📱 Apply MCP workflows to create AI-driven feature agents in real projects
Buy now at 44.99
How often do you actually update your paywall after shipping it?
Reply and let me know — curious how teams approach iteration.
Interested in sponsoring this newsletter and reaching a highly engaged audience of tech professionals? Simply reply to this email and our team will get in touch with next steps.