ANTIGRAVITY LABJP
Articles/Antigravity Basics
Antigravity Basics/2026-07-03Intermediate

Riding Two Release Lines — Splitting Antigravity's 2.0 and 2.1 Tracks Between Unattended and Interactive Work

On July 1, Antigravity published 2.0-line and 2.1-line builds side by side. Here is a version policy that keeps unattended automation on the stable line and interactive work on the feature line, with a declaration file and drift detection.

Antigravity 2.011version managementrelease linesunattended automationoperations design3

Premium Article

On July 1, the Antigravity releases page listed 2.1.4, 2.0.11, 2.0.10, 2.0.6, 2.0.1, and 2.0.0 — all published at once. If you paused in front of the update dialog, you were not alone. Move to the 2.1 line and you get the new features. Stay on the 2.0 line and behavior stays put. So which one should the scheduled runs that fire at 2 a.m. be riding?

If you make that call by mood each time the dialog appears, an unattended run will eventually break in silence. This article lays out how I manage the two lines now that they ship in parallel: a declared policy per workload, a small reconciliation script, and a promotion procedure between the lines — shared with the actual files I use.

Choosing Not to Keep Everything on the Latest

Start with what the July 1 release actually signals: the 2.0 line is being stabilized while the 2.1 line carries new features, and both are maintained in parallel. That hands users two things at once — the freedom to choose a line, and the responsibility to manage that choice.

As an indie developer I hand a good share of my daily work — content updates across several sites, app build verification — to agents running unattended. What I fear most in that kind of operation is not missing features. It is behavior shifting slightly with every update. In interactive use, a shift is a shrug: you notice, you adapt. In unattended runs, nobody notices, and the next steps keep stacking on top of the changed behavior.

Line up the requirements per workload and the choice of line falls out naturally.

AspectInteractive (IDE, chat)Unattended (CLI, scheduled runs)
Top priorityNew features, speedReproducibility, unchanged behavior
Tolerance for behavior shiftsHigh — a human absorbs it on the spotLow — detection lags and failures cascade
Update cadenceFollow releases earlyMove only when you decide to
Suitable line2.12.0

The conclusion is simple: environments where I am hands-on ride the 2.1 line and absorb new features early; environments that run without me stay pinned to the 2.0 line. Between the two sits an "observe, then promote" procedure. The rest of this article turns that stance into working machinery.

version-policy.json — One Place That Declares the Lines

Managing line assignments in your head, or as a note in a README, collapses the moment you have more than two machines. I declare the intended line for each surface-and-workload pair in a single JSON file.

The problem this file solves: making "which environment should be riding what" checkable by any person and any script, without archaeology.

{
  "$comment": "version-policy.json — single source for release-line policy",
  "updated": "2026-07-02",
  "policies": [
    {
      "surface": "desktop",
      "workload": "interactive",
      "line": "2.1",
      "range": ">=2.1.4 <2.2.0",
      "note": "Interactive development. Absorb new features early"
    },
    {
      "surface": "cli",
      "workload": "unattended",
      "line": "2.0",
      "range": ">=2.0.11 <2.1.0",
      "note": "Scheduled runs. Never moves except by explicit decision"
    },
    {
      "surface": "cli",
      "workload": "interactive",
      "line": "2.1",
      "range": ">=2.1.4 <2.2.0",
      "note": "Local verification. Always ahead of the unattended line"
    }
  ]
}

The detail that matters is writing range with an upper bound on the line: >=2.0.11 <2.1.0 accepts point releases within the 2.0 line while rejecting any accidental hop to 2.1. An update within a line and a migration across lines are operations with risks of a different order, so the declaration keeps them distinct from the start.

Pinning the exact version a scheduled run executes with — reproducibility at the run level — is a separate layer I covered in pinning the Antigravity CLI version for reproducible scheduled runs. The policy in this article sits one level above: deciding which line you pin to in the first place.

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
Decision criteria for splitting release lines between unattended and interactive workloads, managed declaratively through a version-policy.json file
A drift-detection script that reconciles actual desktop, CLI, and multi-machine versions against the declared policy every morning
A promotion procedure that safely feeds observations from the 2.1 line into 2.0-line unattended operations, with a real incident it prevented in late June
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 $10 for lifetime access
View Membership →

Related Articles

Antigravity2026-07-01
When Your MCP Servers Vanish From the Chat App in Antigravity 2.0
After Antigravity 2.0 split into an IDE and a separate chat-style agent app, an MCP server I had set up in the IDE stopped showing up on the chat side. Here is why the settings scopes are separate, and how to fix it by making a single workspace-level source of truth that both apps read.
Antigravity2026-06-24
Antigravity 2.0, CLI, IDE, SDK — Weaving All Four Surfaces Through a Real Project
Antigravity ships as a desktop app, a CLI, an IDE, and a Python SDK. Beyond picking one, this guide shows how to weave all four across a single project — with a headless-execution wrapper for automation, plus the cost and migration traps to sidestep.
Antigravity2026-06-23
When the Default Model Changes Underneath You: Pinning and Diff-Gating Scheduled Runs
Antigravity 2.0 promoted Gemini 3.5 Flash to the default fast model. It is a welcome upgrade, but any scheduled run that leaned on the default starts producing subtly different output one morning. Here is how I pin the model explicitly, fingerprint the output, and gate drift, sized for a solo developer's pipeline.
📚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
See all →