Cirrus CI is shutting down June 1st - migrate to Zag’s macOS runners. Learn more →

AI review agents that build, test, and run your code on every PR.

Zag runs AI agents in real macOS and Linux environments - Xcode, Node, Postgres, and your complete toolchain. Describe agents in TypeScript or Swift that do code review, QA, security, or compliance, and run them on every PR.

Y
Backed by Y Combinator
zag - PR #47 - 2 agents running
qaAgent
session.build() - succeeded (14.2s)session.install() - iPhone 17 Prosession.launch() - runningsession.codexWithSimulator()Button clipped on iPhone SENo overlapping viewsDynamic Type scales correctly
securityAudit
session.build() - succeededScanning Keychain usage...kSecAttrAccessible set correctlyHTTP endpoint in Config.plistCertificate pinning enabledNo hardcoded API keys
Agents

Describe agents for your project.

Write agents in TypeScript or Swift that review your code, test your UI, audit your security, or check App Store compliance. Each one runs in a real staging sandbox, building and running your app.

Pen TestLaunches your app and actively tries to break it. Intercepts network traffic, probes authentication, and attempts to access protected data.
zag[bot] - penTestPen Test - 1 vulnerability CRITICAL: /api/user/profileUnencrypted request with auth tokenover HTTP. Replay attack successful. Certificate pinning verifiedNo data leakage in bg snapshot
Database MigrationRuns your migration against a real database, then hits your API routes with test data. Catches broken queries, missing columns, and type mismatches before they take down production.
zag[bot] - dbMigrationDatabase Migration - 1 issue foundMigration 004_add_billing appliedPOST /api/webhooks/stripe ... 200GET /api/users/profile ... 500column "plan_type" not found in select 12 other routes passed
QA AgentBuilds your app, launches it on every device size, and navigates your key flows. Catches layout issues, clipped text, and broken navigation before users do.
zag[bot] - PR #47 - qaCheckQA Check - 2 issues found PaymentView.swift:47Button clipped on iPhone SE OnboardingView.swift:12Text truncated at Dynamic Type XXL 14 other flows passed
App StoreChecks your app against Apple's review guidelines before you submit. Catches the things that get your app rejected and cost you a week.
zag[bot] - appStoreComplianceApp Store - 1 issue foundInfo.plistMissing NSCameraUsageDescription Privacy manifests presentNo deprecated APIsMin deployment target met
Code ReviewBuilds your project, resolves types, runs your tests, and reviews with full context. Not just reading the diff. Understanding your codebase.
zag[bot] - codeReviewCode Review - 3 commentsPaymentManager.swift:23Closure captures self strongly.Creates a retain cycle. Use [weak self] NetworkClient.swift:41Force-unwrap will crash on 404.
Environment

Create environments with your entire stack.

Zag agents run in real Linux and macOS sandboxes with a local database, queue, server, and other services. Define what you need, and Zag environments boot in milliseconds with cached silicon and Firecracker VMs.

env.ts
import { type Environment } from "@zag/sdk" export const env: Environment = { machine: "ubuntu:24.04", apt: ["node:22", "postgresql@16", "redis"], npm: ["./package.json", "playwright"], setup: async ($) => { await $`npx supabase start` await $`npm run db:migrate` await $`npm run build` }, secrets: ".env.encrypted",}
env.swift
import Zag let env = Environment( machine: .m4, apps: [.xcode(.v16_2)], brew: [.postgresql(16), .redis], setup: { $ in try await Simulator.create(.iPhone16, os: .iOS18_2) try await Simulator.create(.iPadPro13, os: .iPadOS18_2) try await $("createdb testdb") try await $("xcodebuild -resolvePackageDependencies") }, secrets: ".env.encrypted")

Zag agents collaborate with Claude Code.

Every Zag session is a live stream. Your coding agents subscribe, react, and spin up new agents on the fly. Install the GitHub App and they run on every PR.

stream - qaCheck - PR #47build() - succeeded (14.2s)install() - iPhone 17 Prolaunch() - runningButton clipped on SE14 flows passed
01StreamsEvery Zag session produces a live stream. Claude Code and Codex subscribe to it, react in real time, and see what actually happened instead of a flaky test result.
10 sessions - running
iPhone SEiPhone 16iPhone 16 ProiPhone 16 MaxiPad miniChrome 124
02EnvironmentsLet Claude Code create Zag sessions for a feature it's working on to QA test on 10 devices at once.
zag[bot] reviewed just nowQA Check passedSecurity Audit passedCode Review - no issues
03CollaborationInstall the Zag GitHub App. Every pull request triggers your agents automatically on real Apple Silicon or fast Firecracker microVMs.

Merge agent-driven changes with confidence.

We’ll set up Zag on your project in 30 minutes.

Or email us at founders@zag.dev

Y
Backed by Y Combinator
Next.jsSupabaseSwiftUIUIKitSPMCocoaPodsXcode CloudFastlane