Skip to content

trygantry/gantry

Gantry Logo

Gantry

The launch-readiness control room for AI-native teams.

Gantry turns any project folder into a launch operating room. AI agents maintain a structured .gantry/ vault; humans get a plain-language dashboard that answers one question: "Are we ready to launch?"

CI License: Apache-2.0 Built with Tauri GitHub Stars Discussions

Gantry Launch Dashboard




What is Gantry?

Product launches are coordinated across scattered markdown notes, QA checklists, app store metadata, issue trackers, telemetry, and chat threads. AI coding assistants can help maintain all of it — but they need predictable files, schemas, and a way to understand launch state without guessing.

Gantry is a local-first desktop app (Tauri + Rust) with two equal interfaces over one source of truth:

  • AI interface — a structured .gantry/ vault of markdown + YAML frontmatter + JSON, governed by a file contract (AGENTS.md), JSON schemas, a generated index.json, and a CLI with stable exit codes for CI.
  • Human interface — a desktop dashboard that translates raw launch files, code changes, and telemetry into a plain-language Go / At Risk / No-Go readiness view, complete with a live timeline of recent commits and Git-attributed activity.

Everything lives in your repo. It stays readable in any editor and portable through Git. No proprietary cloud account required.

Why Gantry

  • Verification over vibes. Every readiness indicator traces back to files, checklist state, source changes, or integration data.
  • AI-native, not AI-only. Agents are first-class collaborators; the workspace stays clear to non-technical humans.
  • Plain language. "A critical issue is still open" instead of "P0 blocker unresolved."
  • Git-integrated attribution. Toggling checklist items or gates automatically writes a signature comment (e.g., <!-- @owner YYYY-MM-DD by:@author -->) directly into the markdown source, attributing changes using your local git config to maintain an offline audit trail.
  • CI-ready. gantry validate --ci returns 0 (Go) or 1 (blocked) so launches can be gated in any pipeline.

Gantry vs. Alternatives

Feature Gantry 🚀 Linear / Jira Custom CI Scripts Notion / Wiki
Source of Truth In-repo, Git-tracked .gantry/ Centralized Cloud Database Custom CI Configs / Logs Cloud Workspace Docs
AI Agent-Native Yes (schemas, JSON/YAML, stable API) No (complex HTTP APIs, lacks context) No (structured stdout parsing only) No (unstructured page editing)
Change Attribution Git-Native (uses local git config & git log) Centralized account logs CI run trigger account Browser edit history (unstructured)
Human Interface Local Desktop Dashboard Heavy Web Interface CLI Logs only Document editor
CI/CD Gateable Yes (gantry validate --ci) Hard (requires webhooks + custom logic) Yes (requires script maintenance) No
Out-of-sync risk Zero (lives inside your git branch) High (issues aren't tied to branch state) Medium (scripts get out of sync) Extreme (manually maintained)

Installation

Download a prebuilt binary from Releases (gantry-macos-aarch64, gantry-linux-x86_64, gantry-windows-x86_64.exe), put it on your PATH, and you're done.

Or install the CLI directly via Cargo:

cargo install --git https://github.com/trygantry/gantry gantry-cli

Or build from source (requires Rust stable):

git clone https://github.com/trygantry/gantry.git
cd gantry
cargo build --release -p gantry-cli
# binary is at target/release/gantry

Desktop app — download the installer from Releases or build with:

npm install && npm run tauri build

Quickstart

1. Initialize Gantry in your project

Gantry detects your tech stack and creates a starter .gantry/ vault:

gantry init --auto

2. Add validation to your CI pipeline

Gate releases — exits 0 only when all launch checks pass:

gantry validate --ci

3. Open the desktop dashboard (optional)

The desktop app reads the .gantry/ vault from your current working directory, so launch it from inside your project:

# From within your project folder:
cd ~/your-project
open /Applications/Gantry.app          # packaged install

# Or run in dev mode from within the Gantry source tree:
npm install && npm run tauri dev

Or drive the CLI directly during development:

npm run gantry:summarize
npm run gantry:validate

CLI

Command Purpose Exit codes
gantry init --auto [--dry-run] [--json] [--force] Automatically detect stack and initialize starter .gantry/ vault 0 / 2
gantry validate [--ci] [--report-url <url>] Validate docs, schemas, links, freshness, and gates 0 Go · 1 blocked · 2 error
gantry impact [--base <ref>] [--json] Show summary of modified files and impact on blockers/QA 0 / 2
gantry index Rebuild .gantry/index.json 0 / 2
gantry summarize Print a plain-language launch summary 0 / 2
gantry audit [--dry-run] [--json] [--format markdown] [--output <path>] Score readiness, generate repair tasks, or output PR markdown reports 0 / 2
gantry mcp Launch Gantry's stdio read-only Model Context Protocol (MCP) server 0 / 2
gantry tasks [--json] List pending repair tasks 0 / 2
gantry task complete <id> / gantry task ignore <id> <reason> Update a repair task 0 / 2

Gate launches in CI

Use Gantry's first-party composite GitHub Action (.github/actions/gantry-validate) to block a release when it isn't ready and post launch-readiness comments on pull requests:

# .github/workflows/launch-gate.yml
name: Launch Gate
on: [pull_request]
jobs:
  gantry:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write # required to post PR comments
    steps:
      - uses: actions/checkout@v4
      - name: Gantry Launch Readiness check
        uses: trygantry/gantry@v1
        with:
          workspace: "."
          fail-on-no-go: true
          comment: true

See docs/github-action.md for inputs and details.

The .gantry/ vault

.gantry/
├── AGENTS.md          # contract for AI agents editing the vault
├── config.json        # vault settings, release target, integrations
├── index.json         # generated machine-readable launch index
├── tasks.md           # shared human + AI launch task queue
├── README-launch.md   # plain-language launch overview
├── go_no_go.md        # final readiness gates and sign-offs
├── blockers/*.md      # individual launch blockers
├── qa/*.md            # QA plans and checklists
└── schema/*.json      # JSON schemas for validation

Data Contracts

Gantry validates frontmatter metadata inside the vault using schemas located in .gantry/schema/*.json. Below are the primary file specifications:

Blocker Frontmatter (.gantry/blockers/*.md)

Blocker files track individual release-blocking issues:

---
type: blocker
id: BLK-101
title: App crashes during monthly subscription purchase
severity: P0
status: blocked
owner: "@dev_jane"
source_files:
  - src/purchases/paywall.ts
sentry_issue: https://sentry.io/issues/55812
last_verified: 2026-05-27
created_at: 2026-05-27
---

QA Document Frontmatter (.gantry/qa/*.md)

QA files define test plans with standard markdown checklists:

---
type: qa
id: QA-REGRESSION
title: Release Regression Plan
owner: "@qa_bob"
platforms:
  - ios
  - android
last_verified: 2026-05-27
---

Checklist items in the markdown body use the format:

- [ ] Verify checkout completes in sandbox. <!-- owner:@qa_bob priority:P0 -->

Go/No-Go Frontmatter (.gantry/go_no_go.md)

The final readiness gate configuration and release target settings:

---
type: go_no_go
release: 1.0.0-beta.3
target_date: 2026-06-15
required_crash_free_rate: 99.5
required_qa_completion: 100
status: at_risk
---

How Gantry Scores Launch Readiness

Gantry's gantry audit command computes a weighted Readiness Score from 0 to 100 based on four primary pillars:

Pillar Weight Description
Engineering 30% Based on open blocker severity (P0: -50, P1: -25) and presence of blocker source files (-15 per missing file).
QA 30% Direct percentage of completed checklist tests (e.g., 49/49 passes = 100%).
Product Docs 20% Quality and validity of core markdown files (-15 per schema/frontmatter validation error, -10 per broken wiki link).
Go/No-Go Gates 20% Percentage of stakeholder sign-off gates checked in go_no_go.md.

Automated Score Deductions

Gantry also tracks minor operational categories (Monitoring, Store, Support, etc.). These don't directly drag down the primary weighted score unless overridden, but they help identify gaps:

  • Monitoring: -30 if Sentry integration is not configured in config.json.
  • Support: -50 if the runbook.md launch day runbook is missing, and -20 if it has formatting errors.
  • Store: -25 per App Store metadata validation error.

Blocking Overrides & Capping

To ensure safety over sheer averages, Gantry applies a Blocking Override Cap:

  • If the launch status is marked as No-Go or has unresolved showstoppers, the overall score is hard-capped at 49%, regardless of how high other categories score.

Desktop views

Launch Dashboard · Docs Health · Critical Issues · QA Readiness · Go/No-Go Room · What's New (Timeline) · Vault Editor.

Tech stack

Tauri 2 · Rust backend · vanilla HTML/CSS/JS frontend · local markdown + JSON storage · JSON Schema validation · Rust filesystem watcher.

Contributing

Contributions are welcome. Start with CONTRIBUTING.md and look for issues labeled good first issue. Please also read our Code of Conduct.

License

Gantry's core — the desktop app, CLI, and file contract — is licensed under Apache-2.0. The hosted Gantry CI Gate (org-wide launch policy enforcement, cross-repo dashboards, audit trail) is a separate commercial product. See LICENSING.md.