From commit to store.

Build, sign, and ship Flutter to the App Store and Google Play from build agents you own.

A FlightStack pipeline run streaming live job logs

Works with the tools your release already runs through.

Everything in the box

One platform, from the first commit to the store listing.

Visual pipeline editor

Drag steps onto a canvas. The YAML stays in sync in both directions, and every past run draws itself on the same graph.

The FlightStack dashboard showing recent pipeline runs

MCP server

Point Claude Code at your organization. It reads runs, edits pipelines, and triggers builds under scopes you approve.

How it connects

Build agents you own

One binary on macOS, Linux, or Windows. It polls outward for work, so nothing on your network needs an inbound port.

Registered FlightStack build agents and their status

Step marketplace

Steps, templates, and toolchains, versioned as publisher/name@1.0.0. Keep them private to your organization, share them with named orgs, or publish them for sale and take payouts through Stripe.

Code signing vault

Eight credential types, from Android keystores to App Store Connect keys, scoped per repository or per organization.

Cloud runners

Rent an Apple Silicon macOS VM by the minute when you would rather not own a Mac. M1 at $0.60/hr, M2 at $1.20/hr.

Live build progress

Runs stream over SignalR, and progress lands on the iOS Lock Screen and the Android notification shade while the app is closed.

Model Context Protocol

Run FlightStack from your coding agent

FlightStack ships a remote MCP server. Connect it once and your agent can read builds, edit pipelines, and ship a release without leaving the editor. Self-hosting? Point it at your own host instead.

claude mcp add --transport http flightstack https://api.flightstack.voostack.com/mcp

Sign in from the browser

OAuth 2.1 with PKCE. The first tool call opens a consent screen where you pick the organization and approve each scope. No secret ever lands in a config file.

Or send an API key

For cron jobs and scripts that cannot complete a sign-in, send a key as a bearer token to the same URL. The key acts as the person who created it.

Scopes and setup
Pipeline steps

Seventeen steps in the box, a registry behind them

The first-party set covers the whole Flutter release path. Anything else installs from the marketplace and shows up in the editor without a restart.

The notification step posts to Slack, Discord, Microsoft Teams, or any webhook, with a full embed builder on Discord.

From install to first build

The agent picks the job up, matches it against its toolchain, and streams the log back while it runs.

  1. 1

    Install the CLI

    brew install voostack/flightstack-cli-tap/flightstack
    case "$(uname -m)" in x86_64|amd64) ;; *) echo "No published build for $(uname -m)"; exit 1 ;; esac
    url=$(curl -fsSL https://api.github.com/repos/voostack/flightstack-releases/releases | grep -o 'https[^"]*flightstack-[0-9][^"]*linux-x64\.tar\.gz' | head -1)
    [ -n "$url" ] || { echo "No build found. See https://github.com/voostack/flightstack-releases/releases"; exit 1; }
    curl -fsSL "$url" | tar xz && sudo install flightstack flightstack-agent /usr/local/bin/
    $asset = (irm https://api.github.com/repos/voostack/flightstack-releases/releases).assets |
      Where-Object name -like 'flightstack-[0-9]*-windows-x64.zip' | Select-Object -First 1
    if (-not $asset) { throw "No build found. See https://github.com/voostack/flightstack-releases/releases" }
    
    $dest = "$env:LOCALAPPDATA\FlightStack"; $zip = "$env:TEMP\flightstack.zip"
    irm $asset.browser_download_url -OutFile $zip
    Expand-Archive $zip $dest -Force
    
    # Read the User scope, not $env:Path: that is Machine + User merged, and
    # writing it back to "User" copies every machine entry into your user PATH.
    $user = [Environment]::GetEnvironmentVariable("Path","User")
    if ($user -notlike "*$dest*") {
      [Environment]::SetEnvironmentVariable("Path", ($user.TrimEnd(';') + ";$dest"), "User")
    }
    # then open a new terminal
  2. 2

    Sign in

    flightstack login
  3. 3

    Register this machine as an agent

    flightstack agent register --name "build-01" --org YOUR_ORG_ID

    Leave --org off and the agent is public, meaning any organisation can use it.

  4. 4

    Start it

    flightstack agent start --daemon
  5. 5

    Connect a repository and create a pipeline

    In the dashboard: Repositories, Connect Repository, then Pipelines, Create Pipeline.

  6. 6

    Push

    git push origin main
How you run it

Your iron, or our control plane

Self-hosted

Free

Everything on hardware you already pay for.

  • Unlimited builds, agents, pipelines, and repositories
  • Your own PostgreSQL and object storage
  • Secrets and signing keys never leave the network
  • Docker Compose, Kubernetes, or a single box
Self-hosting guide

Cloud

From $0

We run the control plane, you keep the build agents.

  • Nothing to operate, upgrade, or back up
  • Monthly run allowance, never a per-minute meter
  • Apple Silicon runners on demand when you need one
  • Mix cloud runners and your own machines freely
See pricing

Common questions

Can I really self-host all of it?

Yes. The control plane runs on your own infrastructure with Docker Compose, Kubernetes, or a single server, backed by your own PostgreSQL. Build agents run wherever you put them.

Which platforms can it build and ship?

iOS, Android, and web. iOS builds need a macOS agent with Xcode; Android and web build anywhere. The agent itself runs on macOS, Linux, and Windows, and FlightStack routes each job to an agent that has the toolchain it needs.

How is this different from Codemagic or Bitrise?

Those meter your build minutes. FlightStack runs on hardware you already own, so a two-hour iOS build costs you nothing beyond electricity. The visual editor and the YAML are the same artifact rather than two things to keep in sync.

Do I need a Mac?

Only for iOS. Register any Mac as an agent and it handles the iOS half while a Linux box takes Android and web. If you would rather not own one, rent an Apple Silicon runner by the minute.

What does the cloud tier actually cost?

Starter is free and covers 500 pipeline runs a month against your own agents. Team is $49 per organization per month for 10,000 runs. There is no per-minute meter on either.

What happens to my pipelines if VooStack disappears?

Export everything in one shot: pipelines, re-encrypted secrets, repositories, and run history. Then point the same agents at a self-hosted control plane and keep going.

Is there a CLI and an API?

Both. The CLI covers builds, agents, pipelines, organizations, templates, and publishing. The REST API is documented, and there is a remote MCP server if you would rather drive it from a coding agent.

Can I write my own steps?

Yes. A step is a small spec with typed inputs, outputs, and a shell body. Publish it to the marketplace as private, shared with named organizations, or public, and reference it from any pipeline as publisher/name@version.

Your next build, on your own machine.

Free to start, no credit card, and no per-minute meter at any tier.