All in one app: iPhone, Android and the web

Your agent builds the app. Ploa ships it everywhere.

One project for iPhone, Android and the web. Ploa takes it to the App Store and Google Play, puts its website or web app online at a free ploa.app address, and runs its server and database. Your agent works through the CLI and MCP, and anything that can't be undone waits for you.

  • Preflight
  • Build
  • Beta
  • Review
  • Live

ploa release ios --submit

› Preflight (iOS)

✓ nothing to fix

› Signing: app.favey

✓ identity for team 7Q2FK3, 1 App Store profile(s)

› Xcode: archive Favey (build 42)

› Upload 1.4.0 (42) straight to App Store Connect · 38.2 MB

✓ 1.4.0 (42) is on TestFlight.

› Waiting for approval: 1.4.0 (42) to App Review

https://ploa.dev/app/approvals

✓ Submitted to App Review

ploa web build

✓ 1.4.0 (13): 214 files (6.8 MB), checked

✓ With testers at favey--13.ploa.app

Works with the agent you already use

  • Claude Code
  • Cursor
  • Codex
  • VS Code (Copilot)
  • any MCP agent

Ploa Aio · All in one app

One app, three platforms, one place to run it

Build it once with your agent, for iPhone, Android and the browser. The mobile apps go to the App Store and Google Play. The web goes up on Ploa: a showcase site for the app, the app itself as a web app, or both, with a server and a database when it needs them.

  • A showcase site about the app, with links to its store pages; a web app, the app itself in the browser from the same project; or both, the site at the address and the app under /app.
  • An address from the first day: a free one on ploa.app, or connect a domain you already own. Ploa doesn't sell domains.
  • Installable from the browser (a PWA) with one switch. An app can also be on the web alone, with no store apps.
  • Starts free: one app on all three platforms, with its showcase site, on the Free plan.

Platforms

Whatever your agent built it with

Apps for iPhone and Android

Ploa builds these itself, on your Mac, on GitHub or in your Google Cloud, then signs and ships them:

  • Expo
  • React Native
  • Flutter
  • Capacitor
  • Swift · Xcode
  • Kotlin · Gradle

Unity, .NET MAUI and anything else ship as they're built: an .ipa, .app or .xcarchive, or an .aab, and Ploa signs it for the stores.

Websites and web apps

Built with the framework's own command, then sent up as a version:

  • Expo web
  • Next.js
  • Vite
  • Astro
  • SvelteKit
  • Nuxt
  • Angular
  • Gatsby
  • Vue
  • Flutter web
  • Docusaurus
  • VitePress
  • Eleventy
  • Hugo
  • Jekyll
  • MkDocs

Or any build script. Sites are served as files; a project set to run its own server is told how to export it, and its back end runs as the app's server.

The server side

The app's own API, from a Dockerfile or as it is:

  • Node
  • Python
  • Go
  • Java
  • Ruby
  • PHP
  • .NET
  • Docker

With Postgres 16, scheduled jobs, secrets and logs, run on Google Cloud in Tel Aviv, or in your own Google Cloud.

One core, three ways in

You, your terminal and your agent, on the same release

A web dashboard for people, a CLI for developers and CI, and an MCP server for agents. All three act on the same data under the same rules, so whatever your agent starts, you see live, and whatever needs you waits in one place.

  • Dashboard. Apps, releases, the web and its server, approvals, the store page and the audit log, on desktop or as an app on your phone.
  • CLI. ploa builds on your Mac, checks the project and sends it. Built for CI too.
  • MCP. About a hundred tools your agent calls by itself, for the stores, the web and the server, with step-by-step briefs for the store page, screenshots and privacy.

A release, start to finish

Five stops from code to the store and the web

  1. 1

    Preflight

    Checks the project against what the stores reject: icons, permissions' wording, versions, privacy manifests, signing. Each finding with its fix.

  2. 2

    Build and sign

    iOS builds on your Mac with a certificate Ploa hands over for minutes. Android is signed on the server; the upload key never leaves it.

  3. 3

    Beta

    Straight to TestFlight and Play's internal testing, with testers, groups and what to test. The web gets a testing address of its own.

  4. 4

    Review

    Submitted to App Review with one tap of yours. If a store says no, Ploa shows why and what to fix.

  5. 5

    Live

    Production, staged rollouts, halts and promotions, each one approved by you. The web goes live at its address, and back in one step.

ploa preflight

Preflight · Favey 1.4.0 (iOS build 42 · Android 42)

! NSCameraUsageDescription still uses Expo's default text; App Review asks for a specific reason (Guideline 5.1.1)

Explain what the app does with it, e.g. "Favey uses the camera to scan a receipt"

Ready, with 1 to look at

ploa release android --version-code auto

› Gradle: bundleRelease

› Signed with the upload key on Ploa

✓ 1.4.0 (42) is on internal testing

ploa release android --release r_8f2 --promote production --rollout 10

› Waiting for approval: production, 10% rollout

✓ Approved by Dana · rolling out to 10%

Versions on every platform

The web gets versions too, the way the stores do

Every upload of the website or web app is a version, numbered like your store builds: the version from your project and a build number Ploa counts. So 1.4.1 is 1.4.1 on iPhone, Android and the web, and the dashboard shows the app's web beside its iOS and Android, with the same steps and approvals.

  • Testers first. Each version has its own testing address: open to anyone with the link, behind a password, or by an email code, and never indexed.
  • Checked, then released by you. Ploa reviews it, and it goes live once you approve, now or at a time you set. An autonomous agent's goes at once.
  • Back in one step. Every version is kept, and going back to an earlier one is immediate.
  • The site's own rules in ploa.json: redirects, rewrites and headers, kept with each version.

ploa web build

i Building it (Expo (web)): expo export -p web

i Sending the built files from dist to favey

✓ 1.4.1 (13): 214 files (6.8 MB), checked

✓ With testers at favey--13.ploa.app

ploa web release

› Asked for your approval to release 1.4.1 (13): approve it in Approvals on ploa.dev

✓ Approved by Dana · going live at https://favey.ploa.app

ploa web rollback

✓ favey goes back to 1.4.0 (12)

Server and database

An API and a database, with no servers to run

When the web app or the mobile apps need a back end, it's part of the same app in Ploa: send the server's folder, and Ploa builds it, runs it on Google Cloud and gives it its database. There's no machine to look after and nothing to buy on its own: it comes with Pro and Team, for each app.

  • Postgres 16, over SSL only, backed up every day and restorable to any point in the last 7 days.
  • Scheduled jobs, and a release command (migrations, say) that runs before a version goes live and stops it if it fails.
  • Secrets in the vault, given to the server as environment variables and never shown again.
  • Logs and SQL from the dashboard, the CLI and your agent, all through Ploa, with no SSH.
  • Or your own Google Cloud, on any plan, Free too, billed to you by Google.

ploa server create

✓ The server is being made. ploa server shows where it stands.

ploa server deploy

Sending server (0.4 MB)…

Version 7 is building.

✓ Version 7 is live.

On GitHub

From a pull request to a phone

Connect your repository once. Ploa checks every pull request against the stores' rules, builds on your GitHub Actions, and puts the build on TestFlight and Google Play's testing, with an install link on the PR. No key in your repo.

  • Connect once: install Ploa's GitHub App, and it finds the apps in your repositories.
  • Every pull request checked, the findings on their lines.
  • Build from a button, a label or your agent: Android on GitHub's Linux, iOS on your Mac or GitHub's.

Builds use your GitHub minutes, not Ploa's: free on a public repository, and none at all on your own Mac. How minutes count

Keys stay home

Your agent gets abilities, never your keys

App Store Connect keys, Play service accounts, upload keystores and distribution certificates live encrypted on Ploa's server. Every call to the stores leaves from there. An agent's token can draft and ask; it can't see a secret, approve, or make another token.

  • AES-256-GCM, a key per secret, bound to what it belongs to.
  • Tokens by tier: read, draft, submit, production.
  • The vault shows what each secret is for, never its value.

You stay in charge

Anything that can't be undone waits for you

Sending a version to App Review, going to production, a rollout, a new price, putting the web live: the agent asks, you approve in one tap, from the dashboard or a push notification on your phone. Or make an agent autonomous, and it's still recorded under its name.

  • Approve or reject with a reason, in place.
  • Push notifications for every request and every release that lands or fails.
  • The Agents board: what's working, waiting for you, stuck, or done this week.

The store page

Your agent writes the store page. You publish it.

Name, subtitle, description, keywords and what's new, in every language, checked against each store's limits as they're written. Screenshots and app previews checked against Apple's and Google's exact sizes before anything is uploaded.

  • The screenshot studio: replace, reorder, copy a set to other languages.
  • Drafts wait in Ploa, and you publish each language yourself.
  • Ratings and reviews from both stores, answered from one place.

Everything around the release

The rest of the store, handled too

Privacy forms

Answer once. Ploa sends Google Play's Data safety for you and walks you through Apple's App Privacy, with hints read from your code.

In-app purchases

Subscriptions and one-time products in both stores in one shape: names per language, prices, trials, offer codes, sent to review with the version.

Sales and analytics

Downloads, proceeds and the store page's funnel from both stores, per app, by day.

What the store said

Every rejection in one view with its reasons and guideline numbers, and next steps your agent can take.

Product pages and tests

The App Store's custom product pages and product page optimization tests, with their own screenshots and previews.

In-app events

Events on the App Store with their media, sent to review when they're ready.

On your phone

Install the dashboard from the Home Screen and approve from a notification.

Your team

A workspace per team, members by invite, passkeys for everyone, and the app's stores reached only through its own workspace's accounts.

Three commands

Set up once, then just ask your agent

Sign in and give your agent Ploa: it links the app by itself. From then on, "send it to TestFlight" is a sentence, not a weekend.

$ curl -fsSL https://ploa.dev/install.sh | sh

ploa login

Confirm this code in your browser: QXWT-7HKM

✓ Signed in to https://ploa.dev as dana@studio.dev (allowed up to submit)

ploa mcp install

✓ Claude Code added .mcp.json

✓ Cursor added .cursor/mcp.json

✓ Codex added ~/.codex/config.toml

Restart the agent to pick up Ploa. The project files hold no secrets.

Security

Every step on the record, and the record can't be rewritten

Every action by you, your team and every agent goes into an append-only log where each row's hash covers the one before. Once a day its head is anchored where the server itself can't change it.

  • Passkeys to sign in, no passwords.
  • Each workspace sealed off from every other.
  • Nightly backups, encrypted to a key that isn't on the server.
  • No builds kept: a build is deleted once the store has it.

Pricing

Start free. Pay when you ship more.

Free

$0

One app on iPhone, Android and the web, with all of Ploa.

  • 1 app: iPhone, Android and its website; 1 member
  • Its showcase site on Ploa, at a free address on ploa.app: 100 MB, 1 GB of traffic a month
  • App Review and production, the store page, purchases and sales
  • Autonomous agents, product pages and tests, PR previews
  • Builds on your Mac, GitHub or Google Cloud, free
  • Support by email
Start free

Starter

$9/ month

One app with room to grow, on a domain of your own.

  • 1 app: iPhone, Android and its website; 1 member
  • Its showcase site: 5 GB, 50 GB of traffic a month
  • Connect a domain you own, no Ploa badge
  • All of Ploa, as on Free
  • Full support: email and the support screen
Choose Starter

Most popular

Pro

$29/ month

For a developer or a small team with a few apps.

  • 3 apps, then $10 a month an app
  • 3 members
  • A website for each app: 10 GB, 100 GB of traffic a month
  • Connect up to 3 domains you own, no Ploa badge
  • For each app, its web app's server side: its own API, jobs and Postgres; and all of Ploa
  • Full support: email and the support screen
Choose Pro

Team

$99/ month

For a team or studio, with agents doing the work.

  • 20 apps, then $6 a month an app
  • Unlimited members
  • A website for each app: 50 GB, 500 GB of traffic a month
  • Connect any number of domains you own
  • For each app, its web app's server side with more room: its own API, jobs and Postgres; and all of Ploa
  • Priority support
Choose Team

Prices in US dollars. Where prices usually include VAT or GST (the EU, the UK, Australia and others), it's included; elsewhere, like the US and Canada, sales tax is added at checkout. Every part of Ploa is on every plan, Free too: plans differ in apps, members, the web's room, the server side and support. Builds on your own Mac, on GitHub or in your Google Cloud are free on every plan, on your own account there. Every site gets a free address on ploa.app; Ploa doesn't sell domains, you connect one you already own. Past its room, a site on Free or Starter stops until next month; on Pro and Team you choose: stop there, or turn on extra usage at $0.10 a GB of traffic and $0.20 a GB of storage a month. The server side (an app's own API, scheduled jobs and Postgres) comes with Pro and Team for each app, in Ploa's cloud in Tel Aviv; on any plan, Free too, it can run in your own Google Cloud instead, billed to you by Google. Paid plans open soon; until then every account starts free.

Questions

Asked often

Which apps does Ploa work with?

Any iOS or Android app, and its web. Ploa builds Expo, Flutter, React Native, Capacitor and native Swift or Kotlin apps itself; an app made with Unity, .NET MAUI or anything else ships as it's built (an .ipa, .app or .xcarchive, or an .aab), and Ploa signs it for the stores. For the web, any framework that builds to files: Expo, Next.js, Vite, Astro and many more. The stores need an Apple Developer account, a Google Play developer account, or both; the web needs neither.

Do I need a Mac?

Not for Android: it builds in your own Google Cloud or on GitHub's Linux, and on your own machine it needs only Java and the Android SDK. iOS needs a Mac with Xcode: your own, as it is or as a runner for your GitHub Actions, or GitHub's Macs if you allow it. An app built another way needs a Mac only when its .ipa isn't signed for the App Store yet, since Ploa signs it there.

Does Ploa charge for builds?

No. Builds on your own Mac, on your GitHub or in your Google Cloud are free on every plan, Free too, with no count: they run on your own account there, so GitHub's minutes and Google Cloud's build time are yours.

Do builds on GitHub Actions cost anything?

Not from Ploa. GitHub counts their minutes on your own GitHub account: free on a public repository, and on a private one they come out of your plan's free monthly minutes, where a minute on GitHub's Linux counts as one and a minute on GitHub's Macs as ten, so an iOS build there uses about 150 to 200. Builds on your own Mac as a runner use none. Past the free minutes, GitHub charges only if you've set it a budget; otherwise the builds wait for next month. You can see the minutes in GitHub's billing settings.

What can Ploa do in my repository?

It reads the repositories you choose when you install it. It changes something there only once you turn it on, and then only through a pull request, a check, an issue or a tag: preflight's findings on their lines, the next version and the store page as pull requests you merge, a tag and a GitHub Release when a version goes live, and issues for what the stores say. It runs only its own workflow and never pushes to your branches. You can remove it on GitHub at any time.

Can I use Ploa just for a website or a web app?

Yes. An app can be on the web alone, with no store apps: Ploa builds it, gives it a free address on ploa.app, keeps every version with its testers and releases, and on Pro and Team runs its server and database too. Add iPhone and Android later from the same project.

Does Ploa sell domains?

No. Every site gets a free address on ploa.app. On Starter you can connect one domain you already own, on Pro up to three and on Team any number: Ploa gives the DNS records to add, checks them, and gets the certificate by itself.

Where is my database, and is it backed up?

In Postgres 16 on Google Cloud: in Ploa's cloud in Tel Aviv, or in your own Google Cloud if you choose. It's reached over SSL only, backed up every day, and can be restored to any point in the last 7 days.

Can my agent publish without me?

Not unless you say so. App Review, production and anything else that can't be undone wait for your approval. You can make an agent autonomous, and everything it does is still logged under its name.

Where are my store keys?

Encrypted in Ploa's vault, on its server. They never reach your machine or your agent; the calls to Apple and Google leave from the server.

Is it instead of fastlane or EAS?

It covers the same road, from build to store, with the store page and approvals built in and made for agents. It calls the stores' own APIs directly.

Does Ploa keep my builds?

No. A build is deleted from Ploa as soon as the store has it.

Your next version, on its way to every screen

Get an account, link your app, and ask your agent.