Back to Directory/Developer Tools

io.github.gbatistuta0/appfactory

Lets your coding agent ship a SwiftUI iOS subscription app from idea to TestFlight.

Developer ToolsPythonv0.1.5

AppFactory

Let your coding agent ship an iOS subscription app, from idea to TestFlight.

An open-source MCP server for Claude Code, Codex CLI, Gemini CLI and Cursor. It validates the idea with real App Store data, builds the SwiftUI app, sets up the backend and the store, and stops at every step that matters so you stay in control.

PyPI CI License: MIT Python 3.12+ MCP

claude mcp add appfactory -s user -- uvx appfactory@latest

A real session, sped up. That first step needs no accounts. From there, the same agent can take the idea all the way to a TestFlight build.

What it does

flowchart LR
    A[πŸ’‘ Idea<br/>real App Store data] --> B[🎨 Design<br/>competitor research]
    B --> C[πŸ“± SwiftUI app<br/>from a tested template]
    C --> D[☁️ Backend<br/>Supabase]
    D --> E[πŸ’³ Store<br/>IAPs + RevenueCat]
    E --> F[🌍 Localize<br/>+ ASO + screenshots]
    F --> G[πŸš€ TestFlight]
    G -.you submit.-> H[App Store]
StageWhat the agent does with AppFactory
IdeaHarvests rising and chart-proven apps, scores niches by search demand, competition and staleness, estimates competitor revenue, checks the name is free
DesignDownloads category leaders' screenshots and icons, writes a differentiated design brief, designs every screen
AppScaffolds a SwiftUI app (iOS 17.5+, iPhone) with onboarding, paywalls, settings, analytics hooks and tests
BackendSupabase project, auth, edge functions, server-side usage limits, optional AI proxy (keys never ship in the app)
StoreApp Store Connect app, subscriptions with trials and local prices, RevenueCat offerings, StoreKit config kept in sync
Launch assetsLocalized metadata, ASO keywords, legal pages, branded screenshots, preview videos, custom product pages
ShipSigning, archive, TestFlight upload. You press "Submit for Review".

Every stage has a gate: the agent can't mark it done until checks pass (the build compiles, the store matches the spec, screenshots follow the rules...). When something needs you, the run stops with a clear NEEDS_HUMAN.md.

Quickstart

Requirements: a Mac and uv (brew install uv). Xcode and the other tools are only needed for the services you turn on.

1. Add it to your agent

AgentCommand
Claude Codeclaude mcp add appfactory -s user -- uvx appfactory@latest
Codex CLIcodex mcp add appfactory -- uvx appfactory@latest
Gemini CLIgemini mcp add appfactory uvx appfactory@latest
Cursor~/.cursor/mcp.json: {"mcpServers": {"appfactory": {"command": "uvx", "args": ["appfactory@latest"]}}}

2. Say "Set up AppFactory"

The agent asks which services you want, one by one, and tells you exactly which keys are missing. Keys are environment variables on the MCP entry, like any other MCP server. They never go through the chat:

claude mcp add appfactory -s user \
  -e APPFACTORY_ASC_KEY_ID=ABC123DEFG \
  -e APPFACTORY_ASC_ISSUER_ID=00000000-0000-0000-0000-000000000000 \
  -e APPFACTORY_ASC_KEY_FILEPATH=~/keys/AuthKey_ABC123DEFG.p8 \
  -e APPFACTORY_TEAM_ID=TEAMID1234 \
  -- uvx appfactory@latest

Every variable is listed in docs/SETUP.md.

3. Run it

Run AppFactory

Before any work the agent asks you about every optional part of the app: free trial or not, hard paywall, discounted offer, onboarding quiz, mascot, languages, screenshots, preview video, analytics, ratings, Sign in with Apple... Anything you turn off is skipped, in the app code too.

Choose what you use

Everything except research is optional. A disabled service's tools do nothing and its stages are skipped, and the generated app doesn't include its SDK.

ServiceWhat it enablesNeeds
researchIdea harvesting and validation, ASO researchnothing
appleApp Store Connect: apps, subscriptions, metadata, TestFlightASC API key, asc CLI
xcodeLocal builds, simulator, archivesXcode, xcodegen
supabaseBackend: database, auth, edge functions, usage limitsaccess token, supabase, deno
revenuecatSubscriptions and entitlements (without it: StoreKit 2 only)RevenueCat secret key
aiAI features through a server-side proxy (needs supabase)provider keys, optional
firebaseFirebase Analyticsfirebase CLI
githubA private repo and issue workflow per appgh
designScreen design through the claude-design MCP (without it: design locally)claude-design MCP
maestroEnd-to-end UI tests on the simulator (needs xcode)Maestro, Java 17+
lottieLottie animationsnode

Safety

Agents make mistakes and read untrusted web content, so AppFactory assumes they will.

  • Human approval for anything irreversible. Store writes, backend deploys, database changes, GitHub pushes, uploads and signing don't run when the agent calls them. They wait until you run appfactory approve <id> in your own terminal. The agent can't approve on your behalf.
  • You submit. App Store review submission is always done by you.
  • Dry run by default for deploys, repo creation and uploads. Destructive SQL always needs approval.
  • Secrets stay on your machine and are masked in every tool result.
  • Third-party text is data. App Store listings and reviews are labelled so the agent doesn't follow instructions hidden in them.

Threat model and limits: SECURITY.md.

FAQ

Does it need Claude? No. It is a standard MCP server. The run playbook is served by the server itself (tool playbook(), prompt run, resource appfactory://playbook), so any MCP-capable agent can follow it.

Why a Mac? The app is built and tested with Xcode on your machine. Research works anywhere.

Is my data sent anywhere? Only to the services you turn on, with your own keys. There is no AppFactory server and no telemetry.

Can I change the rules? Yes. The defaults (subscription with a free trial, hard paywall plus a discounted offer, a quiz onboarding, 6 app and 8 store languages) are recommendations. You answer each one before a run.

How do I update? @latest in the MCP command picks up new releases when your agent restarts.

Docs

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md. If AppFactory saves you time, a ⭐ helps other people find it.

License

MIT

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
uvx appfactory

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-gbatistuta0-appfactory": {
      "command": "uvx",
      "args": [
        "appfactory"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

appfactorypypi

Compatible MCP Clients

io.github.gbatistuta0/appfactory works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More