◉ANTIGRAVITY LABJP
Articles/Agents & Manager
◈ Agents & Manager/2026-05-18Advanced

Splitting Daily Crashlytics Triage Across Five Antigravity Sub-Agents

Running six indie iOS and Android apps, the morning Crashlytics triage was draining me. I split the workflow across five Antigravity sub-agents (Fetcher, Classifier, Repro, Patch, PR) and locked their input and output to JSON schemas. Two weeks of production data shows where the human review boundary belongs.

antigravity461agents144crashlytics5firebase11ios38android30multi-agent50indie-dev20

✦ Premium Article

Opening the Crashlytics console every morning and chasing the top ten crashes one by one was the most draining part of running six apps in parallel. As an indie developer running six iOS and Android apps on my own, the morning backlog of crash reports had stopped being something I could handle in a single sitting. For a while I thought handing everything to a single Antigravity agent would solve it, but production use convinced me that a single all-purpose agent is the wrong structure.

So I split the work across five sub-agents. Each one owns a single responsibility, accepts a JSON payload from the previous stage, and emits a JSON payload that the next stage can validate. After two weeks of production use, the morning triage time dropped from 89 minutes to 14, and the false positive rate on suggested patches fell from 18 percent to 6. This is the design, the rationale, and the things I would tell an indie developer who wants to build the same pipeline.

Why a single agent could not carry the whole pipeline

The first attempt was the obvious one: paste the Crashlytics stack trace into a single Antigravity agent and ask it to find the root cause and produce a patch. It works for a week. It breaks within two weeks for three reasons.

First, the context window inflates beyond the agent's ability to prioritize. The crash payload, the surrounding codebase, similar crashes from the past 90 days, the release notes, the dependency diffs — concatenated, this easily exceeds 20K tokens, and the agent starts treating the tail end of the stack trace carelessly. With four or more apps flowing through the same workflow, this got worse.

Second, you cannot decide where humans should step in. Asking yourself "do I trust this agent's patch enough to merge it to main right now?" rarely yields a confident yes. The handful of my apps where AdMob revenue is significant cannot tolerate even a single regression that ripples into a two-digit percent monthly swing. No-review merges were never on the table.

Third, you cannot roll back at the boundary that broke. Was the root cause analysis wrong? Was the repro script too thin? Was the patch applied at the wrong layer? A single-agent log makes that question impossible to answer retroactively.

Splitting into five sub-agents that exchange validated JSON solves all three at once. Each boundary is logged, each stage's failure is identifiable, and each agent's prompt can be tuned without touching the others.

Five sub-agents and their explicit responsibilities

The design is straightforward. Each agent receives a JSON payload conforming to a schema, executes only within its own domain, and emits a JSON payload that the next stage can parse and validate.

  1. Fetcher Agent — pulls crashes from Crashlytics, normalizes them, and outputs structured JSON
  2. Classifier Agent — labels each crash as regression, known-open, external, or device-specific, with a priority score
  3. Repro Agent — drafts repro scripts for the top priority crashes and runs them in a simulator
  4. Patch Agent — produces a minimal patch and a regression test for any successfully reproduced crash
  5. PR Agent — opens a Draft PR, assigns reviewers, and posts a Slack notification

Each agent has an explicit allow list and deny list for what it may include in its output. The Fetcher Agent may forward raw stack traces, but PII fields like user emails or internal user IDs must be stripped at normalization time. This is not just a privacy nicety. It keeps PII out of every downstream log, which matters when you operate apps on both the App Store and Google Play and want to keep audit trails small.

Here is an excerpt from the agents.md that captures the pipeline declaratively for Antigravity to read.

# Crashlytics Triage Pipeline
 
## Agents
 
### fetcher
- role: pull last 24h fatal crashes from Crashlytics, emit normalized JSON
- inputs: { app_ids: string[] }
- outputs: schema://crash-batch-v1.json
- tools: gcp-bigquery, firebase-crashlytics-rest
- constraints:
  - strip PII (user_email, custom_keys.user_id) before output
  - cap at 50 crashes per run
 
### classifier
- role: label crashes into 4 buckets and score priority
- inputs: schema://crash-batch-v1.json
- outputs: schema://crash-triaged-v1.json
- tools: codebase-search, git-log-since
- constraints:
  - when labeling as regression, attach the suspected commit hash
 
### repro
- role: draft repro scripts for top 5 priority crashes and run them in simulator
- inputs: schema://crash-triaged-v1.json
- outputs: schema://crash-reproduced-v1.json
- tools: xcodebuild-test, gradle-test, simctl
- constraints:
  - if not reproduced in 5 minutes, record the skip reason

Keeping the pipeline declarative in a single agents.md file lets Antigravity load the whole graph as one document. Pairing that with explicit JSON schemas means every stage's output can be validated before the next stage sees it.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦Declarative responsibility split across five sub-agents with locked JSON schemas
✦Scoring logic that decides which patches require human review and which can be auto-flagged
✦Two-week numbers: triage time dropped from 89 to 14 minutes, false positive rate from 18 to 6 percent
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Antigravity Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $15 for lifetime access
View Membership →

Related Articles

◈ Agents & Manager2026-05-26
Splitting Pre-release QA Across Four Antigravity Subagents — A Design Note from a Solo Mobile Developer
A design note from a solo indie developer running six iOS / Android apps in parallel, sharing how Antigravity subagents are split into four parallel paths for pre-release QA. Covers the boundary decisions, prompt templates, termination rules, and merge logic with concrete examples.
◈ Agents & Manager2026-05-12
What I Delegated to an AI Agent — And What I Should Have Kept
Delegating production work to an Antigravity agent taught me where the line sits between what an agent should own and what I have to decide myself. Here's the framework — and the gate script — I now use before handing off any task.
▣ App Dev2026-05-24
Running iOS Push Notification A/B Tests Weekly With Antigravity Agent — A Self-Improving Loop For Copy, Timing, And Segments
Drawing on years of indie iOS development across wallpaper and wellness apps, this article walks through a weekly Push Notification A/B loop powered by Antigravity Agent — the FCM bridge, BigQuery measurement, segment design, a D7 retention recovery story, and a dependency-free simulation that made me cut the number of arms and add a significance rule before declaring any winner.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links