{"slug": "show-hn-nanoui-a-small-native-macos-app-for-generating-images-with-openrouter", "title": "Show HN: NanoUI – A small native macOS app for generating images with OpenRouter", "summary": "Dexter Lagan released NanoUI, a free, open-source native macOS app for Apple Silicon that generates images via OpenRouter's Image API, supporting 16 models including Nano Banana 2, GPT Image 2, and FLUX.2 Pro. The SwiftUI app offers per-model resolution, aspect ratio, quality controls, reference-image uploads (up to 14 for Nano Banana 2), multi-image generation (up to 10), and 1:1 zoom, with an unsigned build available on GitHub.", "body_md": "A small native macOS app (Apple Silicon) for generating images with OpenRouter's\n[Image API](https://openrouter.ai/docs/features/multimodal/image-generation).\nWritten in SwiftUI, no external dependencies.\n\n**16 image models**— Nano Banana 1 / 2 / Pro / Lite, GPT Image 1 / 2, GPT-5 Image, GPT-5.4 Image 2, FLUX.2 Pro, Seedream 4.5, Grok Imagine 2.0, Qwen Image 3, Recraft V4, Riverflow V2.5 Pro, MAI Image 2.5 Pro, Krea 2 Large**Per-model controls**— resolution (`512`\n\n–`4K`\n\n), aspect ratio, and quality pickers appear only when the selected model supports them**Reference images**— image-to-image editing with a per-model upload cap (up to 14 for Nano Banana 2); thumbnails with one-click removal** Multi-image generation**—`n`\n\nstepper for models that support it (up to 10)**Zoom toggle**— results are fitted to the window by default; click an image to switch to 1:1 pixel zoom (scrollable), click again to fit back**Save as…**— per-image save panel with the correct file extension** API key**— read from`OPENROUTER_API_KEY`\n\nwhen set; otherwise a key can be pasted in-app and optionally saved with**Remember on this Mac**(stored in plaintext under`~/Library/Preferences/local.nanoui.app.plist`\n\n; unchecking the toggle deletes it)\n\nDownload the latest `NanoUI-macos-arm64.zip`\n\nfrom\n[Releases](https://github.com/DexterLagan/NanoUI/releases), unzip, and drag\n`NanoUI.app`\n\nto your Applications folder.\n\nThe build is **unsigned** — on first launch, right-click the app in Finder and\nchoose **Open**, then confirm. Launching it from the terminal also works:\n\n```\nOPENROUTER_API_KEY=sk-or-... open /Applications/NanoUI.app\n```\n\n- Pick a model from the dropdown (defaults to\n**Nano Banana 2**). - Optionally set resolution, aspect ratio, and quality for the selected model.\n- Click\n**Add** to upload up to 14 reference images (the counter shows the model's limit). - Type a prompt and hit\n**Generate**. - Click the result to toggle between fit-to-window and 1:1 zoom. Use\n**Save Image…** to export.\n\nRequirements: macOS 14+, Xcode Command Line Tools (`xcode-select --install`\n\n),\nApple Silicon.\n\n```\n# Run directly (debug build, opens a window)\nswift run\n\n# Build a double-clickable NanoUI.app (release)\n./build-app.sh\n```\n\nThe app targets the dedicated Image API (`POST /api/v1/images`\n\n). Parameters\nused: `model`\n\n, `prompt`\n\n, `n`\n\n, `resolution`\n\n, `aspect_ratio`\n\n, `quality`\n\n, and\n`input_references`\n\n(base64 data URLs). Per-model capabilities (allowed\nresolution/aspect values, reference limits, max `n`\n\n) are hardcoded in\n`Sources/NanoUI/OpenRouterService.swift`\n\nfrom OpenRouter's\n[Image Models API](https://openrouter.ai/api/v1/images/models) discovery data.\n\n| Model | Resolution | Max refs | Max n | Quality |\n|---|---|---|---|---|\nNano Banana 2 (`google/gemini-3.1-flash-image` ) |\n512, 1K, 2K, 4K | 14 | 1 | — |\nNano Banana (`google/gemini-2.5-flash-image` ) |\n— | 3 | 1 | — |\nNano Banana Pro (`google/gemini-3-pro-image` ) |\n1K, 2K, 4K | 14 | 1 | — |\n| Gemini 3.1 Flash Lite Image | 1K | 14 | 1 | — |\nGPT Image 2 (`openai/gpt-image-2` ) |\n— | 16 | 10 | auto/low/medium/high |\n| GPT Image 1 | — | 16 | 10 | auto/low/medium/high |\n| GPT-5 Image | — | 16 | 10 | auto/low/medium/high |\n| GPT-5.4 Image 2 | — | 16 | 10 | auto/low/medium/high |\n| FLUX.2 Pro | — | 8 | 1 | — |\n| Seedream 4.5 | 1K, 2K, 4K | 14 | 10 | — |\n| Grok Imagine 2.0 | 1K, 2K | 3 | 1 | low/medium |\n| Qwen Image 3 | 1K, 2K | 4 | 6 | — |\n| Recraft V4 | — | 1 | 6 | — |\n| Riverflow V2.5 Pro | 1K, 2K, 4K | 10 | 1 | — |\n| MAI Image 2.5 Pro | — | 1 | 1 | — |\n| Krea 2 Large | 1K | 1 | 1 | — |\n\nFull parameter set for the default model, per OpenRouter's discovery API:\n\n`resolution`\n\n:`512`\n\n,`1K`\n\n,`2K`\n\n,`4K`\n\n`aspect_ratio`\n\n:`1:1`\n\n,`1:4`\n\n,`1:8`\n\n,`2:3`\n\n,`3:2`\n\n,`3:4`\n\n,`4:1`\n\n,`4:3`\n\n,`4:5`\n\n,`5:4`\n\n,`8:1`\n\n,`9:16`\n\n,`16:9`\n\n,`21:9`\n\n`input_references`\n\n: 0–14 images`n`\n\n: 1`seed`\n\n: boolean (not exposed in the UI)\n\n```\nPackage.swift                      Swift package definition\nSources/NanoUI/NanoUIApp.swift     App entry point\nSources/NanoUI/ContentView.swift   UI: model picker, references, prompt, results\nSources/NanoUI/OpenRouterService.swift  Image API client + model catalog\nbuild-app.sh                       Builds the release .app bundle\nicon.svg                           App icon source (vector)\nicon-512x512.png / Icon.icns       App icon raster and macOS icon bundle\n```\n\n[MIT](/DexterLagan/NanoUI/blob/main/LICENSE) © 2026 Dexter Santucci", "url": "https://wpnews.pro/news/show-hn-nanoui-a-small-native-macos-app-for-generating-images-with-openrouter", "canonical_source": "https://github.com/DexterLagan/NanoUI", "published_at": "2026-09-03 09:24:14+00:00", "updated_at": "2026-09-03 09:53:01.769986+00:00", "lang": "en", "topics": ["ai-products", "generative-ai", "developer-tools"], "entities": ["Dexter Lagan", "NanoUI", "OpenRouter", "Nano Banana 2", "GPT Image 2", "FLUX.2 Pro", "SwiftUI", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/show-hn-nanoui-a-small-native-macos-app-for-generating-images-with-openrouter", "markdown": "https://wpnews.pro/news/show-hn-nanoui-a-small-native-macos-app-for-generating-images-with-openrouter.md", "text": "https://wpnews.pro/news/show-hn-nanoui-a-small-native-macos-app-for-generating-images-with-openrouter.txt", "jsonld": "https://wpnews.pro/news/show-hn-nanoui-a-small-native-macos-app-for-generating-images-with-openrouter.jsonld"}}