Model or dataset
Code-with-Beto/snapai avatar
Code-with-Beto/snapai

SnapAI: A CLI That Turns Prompts Into App Icon Artwork and Play Store Banners

AI-powered icon generation CLI for React Native & Expo developers. Generate stunning app icons in seconds using OpenAI's latest models.

1,932 stars123 forksTypeScriptMIT

At a glance

What is it?
SnapAI is a TypeScript command line tool that sends icon and feature graphic prompts to OpenAI or Google Gemini image models and writes the results to disk. It is aimed at React Native and Expo developers who want to skip design tooling for placeholder or first-pass assets.
Who is it for?
Adopt SnapAI if you are a React Native or Expo developer who needs first-pass icon artwork or a Play Store banner and already holds an OpenAI or Google AI Studio key, since the npx snapai icon and npx snapai fg commands write straight to ./assets with no account or backend involved.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 57 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap SnapAI fills between a prompt and an assets folder

Mobile developers routinely need two pieces of artwork before a store listing can go live: a 1024x1024 app icon and a 1024x500 Google Play feature graphic. Neither is hard to produce, but both interrupt work that has nothing to do with design. SnapAI makes both reachable from a terminal command. The README frames the audience explicitly: the tool is built for React Native and Expo developers, though the generated files work with any mobile stack. The output size for each asset type is fixed and documented, so there is no guessing about whether a generated file will pass store review dimensions. The project also states that it runs with no SnapAI account, no backend, no telemetry, and no tracking, which matters if you are wiring it into a build pipeline where an external service call would be unwelcome.

How the CLI routes a prompt to OpenAI or Gemini

SnapAI is a thin orchestration layer rather than a model host. It reads a prompt, optionally rewrites it, selects a provider model, sends the request, and saves the returned image. The README lists six model options behind one interface. The default is gpt-2, which maps to OpenAI's gpt-image-2; gpt-1.5 and gpt-1 map to earlier OpenAI generations. On the Gemini side, banana maps to gemini-2.5-flash-image, banana-2 maps to gemini-3.1-flash-image-preview, and banana --pro maps to gemini-3-pro-image-preview. The README also notes that the official gpt-image-2 model ID and its gpt-image-2-2026-04-21 snapshot are accepted directly. Two behavioural differences are documented in the model table: gpt-2 does not support transparent backgrounds, and the Gemini banana and banana-2 entries return one image each while banana --pro supports multiple images and 1K/2K/4K quality. That last point is the practical reason the variations flag interacts differently depending on provider. Prompt enhancement sits between your text and the model, and the README describes it as tuned for mobile app artwork, with a --prompt-only flag to inspect the rewritten prompt before any credits are spent.

Getting from zero to a saved icon file

The README requires Node.js 18 or newer and an API key from OpenAI or Google AI Studio. Nothing needs to be installed to try the help output: npx snapai --help lists every command. Key storage is a local config write, not an environment variable by default. For OpenAI, the command is npx snapai config --openai-api-key "sk-your-openai-api-key". For Gemini, it is npx snapai config --google-api-key "your-google-ai-studio-key". A first icon is then npx snapai icon --prompt "minimalist weather app with sun and cloud", and images land in ./assets by default. A Gemini run adds --model banana to the same command. Feature graphics use a separate subcommand, snapai feature-graphic or the short form snapai fg, and accept --app-name for text branding and --logo with --logo-position for compositing an existing mark onto the banner. Global installation via npm install -g snapai is documented for anyone who would rather not go through npx each time. The README also points to a GitHub Actions section in docs/CONFIGURATION.md for CI use, which implies custom endpoints and key handling are configurable beyond the two flags shown in the quick start.

Where SnapAI stops being the right tool

The most concrete limitation is stated in the project's own model table: the default gpt-2 model has no transparent background support. If your icon design depends on a cutout shape sitting on the launcher's own background, the default path will not give you that, and the README does not say which of the remaining models do. Second, every documented output is a raster image at a fixed size. There is no vector export, so anything that needs to scale to a billboard or a favicon set will require a separate pipeline. Third, the tool depends entirely on a third-party image API. If OpenAI or Google changes a model ID or retires a snapshot, the CLI's model aliases are the layer that has to absorb it, and the README does not describe a fallback when a named model is unavailable. Fourth, cost is per generation and invisible until you check your provider dashboard. The README addresses this only indirectly, through the --prompt-only flag and prompt previews, which tells you the authors expect users to burn credits by iterating blindly. Finally, the variations flag is not uniform across providers. Asking for -n 3 with a model that returns one image per call is a mismatch the documentation flags but does not resolve.

SnapAI against reaching for the provider SDK directly

The obvious alternative is skipping the wrapper and calling the OpenAI Images API or the Gemini image endpoint from a short script. That approach gives you full control over request parameters and lets you log exactly what was sent. What you give up is the parts SnapAI adds on top: a consistent flag surface across two providers, prompt enhancement tuned for app artwork, built-in and custom styles, and the feature graphic command that handles the 1024x500 banner case with optional logo compositing. If your workflow is one provider and one asset type, a twenty-line script is genuinely competitive. If you are switching between OpenAI and Gemini to compare outputs, or you want the banner command, the CLI earns its place. A second alternative is a design tool with an AI generation feature. That keeps a human in a visual editing loop, which matters if the icon needs to match an existing brand system. SnapAI's README positions the tool as prompt-driven with no editing surface, so the two approaches solve different problems rather than competing directly.

Version history, licence, and what upgrades cost you

The repository is MIT licensed, which permits commercial use and modification, though the README does not restate the licence terms and nothing here is legal advice. Version history shows v0.6.0 in February 2026, v0.9.0 in July 2026, and v1.0.0 on 2026-07-20, the same day as the most recent push. That is a compressed release window: the project moved from 0.6 to 1.0 in roughly five months. For adopters, the cost of that pace is that model aliases and flags may shift between minor versions, and the README's model table is the document most likely to go stale first. The maintenance burden on your side is small if you pin a version in CI and read the CHANGELOG before bumping, since the tool holds no state beyond a local config file. There is no server component to patch, and no data leaves your machine except the prompt and image payload sent to the chosen provider. That is a genuinely low operational surface for a tool in this category.

The agent skill path and who it actually suits

SnapAI ships an alternative entry point aimed at coding agents rather than humans. The README documents a one-line install, npx skills add https://github.com/code-with-beto/skills --skill app-icon, which registers a Code with Beto App Icon skill with Codex, Claude Code, or another skills-compatible agent. From there the workflow is natural language: you describe the app and the mood, and the skill generates the artwork, prepares the Expo icon assets, and updates the iOS and Android configuration in app.json. That is a meaningfully different product from the CLI. The CLI produces an image file; the skill produces a configured Expo project. If you already drive an agent for scaffolding work, this removes the manual step of copying generated files into the right asset paths and editing app.json by hand. If you do not use a skills-compatible agent, the skill is irrelevant and the CLI is the whole tool. The README documents both routes without ranking them, and the choice comes down to whether configuration edits are part of what you want automated.

Editorial conclusion

Adopt SnapAI if you are a React Native or Expo developer who needs first-pass icon artwork or a Play Store banner and already holds an OpenAI or Google AI Studio key, since the npx snapai icon and npx snapai fg commands write straight to ./assets with no account or backend involved. Skip it if you need a transparent-background icon, since the README states the default gpt-2 model does not support transparency, or if you need vector output, which no documented command produces. Before committing, verify the current model mapping in docs/ICON_GENERATION.md, run npx snapai icon --prompt "test" --prompt-only to confirm prompt enhancement behaviour without spending credits, and check whether your chosen model returns one image or several, because the model table lists banana and banana-2 as single-image options.

Official sources

  1. Code-with-Beto/snapai on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes