Ship mobile releases with proof—not vibes.
Gantry checks the exact iOS or Android candidate you intend to ship, explains what is blocking it, records who accepted the remaining risk, and exports a portable release packet. It runs locally or in your CI, keeps its state in your repository, and requires no Gantry account.
Website · Download v0.5.2 · Getting started · GitHub Action
The installer detects your platform, downloads the latest prebuilt CLI, verifies its
published SHA-256 checksum, and installs it as ~/.local/bin/gantry without sudo:
curl --proto '=https' --tlsv1.2 -LsSf \
https://raw.githubusercontent.com/trygantry/gantry/main/install.sh | shPin a release or choose another install directory when reproducibility requires it:
curl --proto '=https' --tlsv1.2 -LsSf \
https://raw.githubusercontent.com/trygantry/gantry/main/install.sh | \
GANTRY_VERSION=0.5.2 GANTRY_INSTALL_DIR="$HOME/bin" shHomebrew users can install the CLI through Gantry's tap:
brew install trygantry/tap/gantryRun this in PowerShell. It installs to your user profile and updates your user PATH;
administrator access is not required:
irm https://raw.githubusercontent.com/trygantry/gantry/main/install.ps1 | iexDownload the DMG for Apple Silicon or Intel from GitHub Releases. The desktop app supports macOS 14 or newer; Linux and Windows are CLI-only today.
The current v0.5.2 DMGs are intentionally unsigned and not notarized, so macOS requires Control-click → Open on first launch. Automatic desktop updates are not included in unsigned releases.
These are development paths, not the recommended evaluator install:
cargo install --git https://github.com/trygantry/gantry gantry-cliSee CONTRIBUTING.md for full source-build prerequisites.
From an iOS, Android, Flutter, or React Native repository:
gantry mobile detect
gantry init --mobile
gantry mobile auditWhen the signed candidate exists, bind the decision to its exact bytes:
gantry mobile audit \
--artifact build/app/outputs/bundle/release/app-release.aab \
--ciGantry records the Git commit, artifact SHA-256, packaged identity and version, signature-verification result, policy version, every finding, and the evidence still required from a human or external system.
If you want to evaluate the interface before opening a real repository, install the macOS app and choose Explore a mobile release sample. The sample is in memory and does not write to your project.
- The source configuration and the packaged IPA/AAB/APK disagree.
- The release uses the wrong bundle ID, version, SDK target, signing state, permission, privacy declaration, or production policy.
- Required tests, operational evidence, or accountable human review are missing.
- A waiver has expired or applies to a different candidate.
- Someone tries to approve a changed or unaudited artifact.
Every result is reported as Go, At Risk, or No-Go, with the exact evidence and remediation behind it.
The first-party Action downloads a verified prebuilt Gantry binary; it does not compile Rust inside your repository.
name: Gantry release gate
on: [pull_request]
jobs:
gantry:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v5
- uses: trygantry/gantry@v1
with:
workspace: "."
fail-on-no-go: true
comment: trueFor artifact-bound mobile audits, durable releases, packet uploads, cache identity, and all Action inputs, see docs/github-action.md.
This repository is the complete Gantry Community distribution under Apache-2.0. The paid boundary is organizational authority and operated infrastructure—not an arbitrary cap on local releases, audits, users, or repositories.
| Available now in Community | Founder-led release audit | Gantry Cloud — coming soon |
|---|---|---|
| Local macOS desktop and cross-platform CLI | Policy and workflow review | Authenticated organization identity |
| Source and exact-candidate audits | CI integration help | Central policy authority |
| Local policy, evidence, decisions, and history | Observation of a real release | Cross-app portfolios and approval routing |
| GitHub Action and public schemas | Validation report and recommendations | Hosted retention, managed integrations, and SLA |
| Portable JSON, Markdown, and HTML packets | Separately contracted service | Separate commercial product and repository |
Community does not require an account and does not silently upload source, artifacts, release metadata, or identity to Gantry. Read the human-readable licensing boundary and machine-readable edition contract.
To request a founder-led release audit, visit gantryapp.com/#pilot or email hi@gantryapp.com.
- Local sign-off identities are declared identities. Use protected branches, code review, signed commits, or an external identity provider when authenticated identity is required.
gantry verifydetects changes to Gantry's local snapshot chain; it does not make Git history immutable. Retain packets in an independent trusted system when independent audit retention is required.- A local hook can be bypassed. Make
gantry validate --cia required check when the decision must be enforced. - Gantry verifies the platform signature only when the appropriate authority tool is
available (
codesign,apksigner, orjarsigner). Unavailable verification is never reported as a pass.
- Getting started
- Mobile release governance
- CLI reference
- GitHub Action
- User and administrator manual
- Architecture
- Security policy
- Open/paid engineering boundary
Contributions are welcome under CONTRIBUTING.md and the Code of Conduct. Report vulnerabilities privately according to SECURITY.md, not through a public issue.
Gantry Community is licensed under Apache License 2.0.