macOS app "Blitz" that lets AI agents handle everything from building iOS apps to submitting them to the App Store
Contents
Blitz, whose catchphrase is “Skip Xcode. Ship with AI.”, is a native macOS app that allows you to entrust the entire iOS development lifecycle to an AI agent. Starting and operating the simulator, CRUDing the database, managing screenshots, and submitting to App Store Connect can be executed all at once from Claude Code.
The repository is blitzdotdev/blitz-mac. It is open source under the Apache 2.0 license and released on March 10, 2026. As of March 23rd, Star 781, v1.0.29 has been released. The pace of development is extremely fast.
what can you do
The core of Blitz is the MCP server. Send instructions to Blitz via JSON-RPC from Claude Code (and other MCP clients) to automate every step of iOS development through over 35 tools.
graph LR
A[Claude Code] -->|stdio| B[MCP Bridge Script]
B -->|HTTP JSON-RPC| C[Blitz MCPサーバー<br/>localhost only]
C --> D[シミュレータ管理]
C --> E[デバイス操作]
C --> F[DB操作]
C --> G[App Store Connect]
C --> H[ビルド・テスト]
This is the main functional category.
| Category | Contents |
|---|---|
| Simulator management | Startup/shutdown/list acquisition. A wrapper for xcrun simctl, but AI can directly hit it |
| Device operation | Touch, swipe, and screenshot capture via iDB for the simulator and WebDriverAgent for the actual device |
| Screen capture | Capture the Simulator.app window with ScreenCaptureKit and render it with Metal |
| Database operations | Connection to Teenybase DB, schema viewing, CRUD operations |
| App Store Connect | Manage app information, upload screenshots, submit reviews, and get rejection feedback |
| Project setup | Initial construction of Blitz, React Native, Swift, and Flutter projects |
MCP server architecture
Blitz’s MCP server is implemented as a Swift actor. Start an HTTP server with a dynamic port on the local host and write the port number to ~/.blitz/mcp-port. Claude Code side connects with stdio via the bridge script (~/.blitz/blitz-mcp-bridge.sh).
As a mechanism to ensure safety, tools are classified into read-only and mutating. Read-only tools (get list, check status, etc.) run immediately, but mutating tools (run build, submit to App Store, etc.) ask for approval in a macOS native alert dialog. The ApprovalRequest model has a ToolCategory enumeration type, and the necessity of approval is defined for each tool.
graph TD
A[MCPToolRegistry<br/>ツール定義 35種以上] --> B[MCPToolExecutor]
B --> C{ToolCategory}
C -->|read-only| D[即座に実行]
C -->|mutating| E[ApprovalRequest生成]
E --> F[macOSアラート表示]
F -->|承認| G[実行]
F -->|拒否| H[エラー返却]
Two systems of device operation
When the AI operates the app’s UI (tap, swipe, check screen status, etc.), the path is different depending on whether the target is a simulator or a real device.
| Target | Operation tool | Mechanism |
|---|---|---|
| Simulator | iDB (idb CLI) | iOS automation tool developed by Facebook. Allows higher level UI operations than simctl |
| Actual machine | WebDriverAgent | Derived from Appium project. Start an HTTP server (port 8100) on the device and accept UI operations using REST API |
DeviceInteractionService provides a uniform interface as a Swift actor and internally dispatches to iDB or WDA clients.
App Store Connect Automation
Since v1.0.25, collaboration with App Store Connect has started in earnest. There are many things you can do.
- Creating/editing app information
- Bundle ID settings/guidance
- Manage and upload screenshots by track (
screenshots_add_asset,screenshots_set_track,screenshots_save) - Pricing
- In-app billing/subscription management (pagination supported, 200 items/page)
- Review submission
- Get rejection feedback (
get_rejection_feedback) - Timeline display of submission history
v1.0.26 added the ability to automatically deploy 21 App Store Connect operations as Claude Code skills to the project’s .claude/skills/. asc If CLI is not installed, it will be installed automatically.
v1.0.24 also supports Mac App, making it possible to import, create, and upload macOS apps to the App Store.
Security and privacy
It claims a design that does not transmit any telemetry or analysis.
- Network requests are limited to Apple’s App Store Connect API and GitHub’s release confirmation API.
- MCP server binds to
127.0.0.1and is not exposed to external networks - No access to contact information, photos, location information, etc. Screen capture limited to simulator window
A means of verifying release binaries is also provided. SHA256SUMS.txt is included in the GitHub release and can be verified with shasum -a 256 -c SHA256SUMS.txt. There is also scripts/verify-build.sh that builds from source and compares it. The CI build workflow is also publicly available.
Build and deployment
Requires macOS 14 or later, Xcode 16 or later, Node.js 18 or later. It’s a single-target SwiftUI app configured with Swift Package Manager and doesn’t use an Xcode project file.
# クローンしてビルド
git clone https://github.com/blitzdotdev/blitz-mac.git
cd blitz-mac
swift build -c release
# .appとしてバンドル
bash scripts/bundle.sh release
open .build/Blitz.app
The pkg installer is also distributed in the official release, and you can download Blitz-1.0.29.pkg and install it by double-clicking. An x86_64 build for Intel Macs is also available. If the app is already installed, it will be updated automatically within the app.
What’s going on on the Android/Google Play side?
While Blitz is making it possible to “entrust the entire iOS development lifecycle to AI,” there is currently no equivalent tool on the Android side.
As I previously tried in Automating emulator testing with Android MCP server, you can operate the emulator and take screenshots via MCP. You can also build and install via ADB directly from Claude Code. However, these are just a combination of separate CLI tools, and one application does not integrate all processes as an MCP server like Blitz.
Automation around Google Play Console is particularly weak
In the past, this blog has written several articles about implementations related to Google Play. Receipt verification API via service account, Billing implementation from Flutter WebView, Adjust management screen and Play Console developer registration concurrent setup, List of console key files required for Flutter apps There are many manual settings steps that involve going back and forth between multiple management screens such as Google Cloud Console, Google Play Console, and Firebase Console.
Seeing how Blitz makes App Store Connect operations all in one go via MCP, I would like to see the same thing on the Google Play Console side. Create a service account, grant permissions in the Play Console, register paid items, AAB upload to the test track, and set up a gradual rollout. Currently, these tasks are performed every time using the browser’s GUI.
Here’s a comparison of Blitz’s coverage with existing Android deployment automation tools.
| Process | iOS (Blitz) | Android (existing tools) |
|---|---|---|
| Emulator/simulator operation | Completed via MCP | Android MCP server + ADB |
| Build | Calling Xcode CLI from MCP | Gradle CLI (directly from Claude Code) |
| Store metadata management | App Store Connect API integrated | Possible with fastlane supply but no MCP integration |
| Screenshot management | Supports uploading by track | Can be obtained with fastlane screengrab |
| Store submission | Up to screening submission and rejection confirmation | Uploading with fastlane supply |
| Paid item management | Operation with App Store Connect API | Possible via Play Developer API, but manual setup is required |
| UI automatic operation | iDB + WebDriverAgent | Android MCP server (via ADB) |
Fastlane is a tool that has been used for many years to automate Android deployments, allowing AAB uploads to the Google Play Console and gradual rollouts using the supply action. However, since fastlane itself is not an MCP server, it is not suitable for use in which an AI agent instructs the user to take a screenshot, upload it to the store, update the metadata, and submit it for review in natural language.
Google Play Developer API has room to become an MCP server
Google Play Developer API v3 is a REST API and has the following endpoints.
| API | Operation details |
|---|---|
| Publishing API | Upload APK/AAB, edit listing information, track management (internal test, closed test, open test, production) |
| Subscriptions and In-App Products API | Creating, updating, and pricing billing items |
| Reviews API | Get and reply to user reviews |
| Reporting API | Download installs, crashes, and revenue reports |
Authentication is OAuth 2.0 via service account. The same service account you set up in Receipt Verification API article can also access the Publishing API (provided you grant the appropriate permissions in the Play Console). In other words, from an API perspective, it is technically possible to do the same thing as Blitz’s App Store Connect integration, but no one has yet created a tool that packages it as an MCP server.
Now that Blitz is solidifying its iOS side with a pace of 29 releases in two weeks, I’m curious to see if an Android version of Blitz-like tools (or Blitz itself compatible with Android) will be released. Flutter project setups are already supported by Blitz, so there are preparations for cross-platform support.