Banana Pro AI is a high-performance image generation platform designed for creative professionals. It integrates Gemini and OpenAI standard API capabilities, supporting high-resolution (up to 4K) text-to-image and image-to-image generation, available in both Desktop and Web formats.
[!NOTE] The application supports English internally and allows language switching in the settings.



🆕 v2.8.0 Updates: - 🤖 Dedicated OpenAI Image Generation: New
openai-imageprovider type supporting/v1/images/generationsstandard API (gpt-image-2 model). - 🎨 Image Card Refactor: Smart thumbnail/full-size switching, improved drag-and-drop, better loading experience.💡 Recommended: For the best generation experience and cost-effectiveness, we recommend using Yunwu API.
Resolution Yunwu API Price Google Official Price (Ref) 1K (1024x1024) ¥0.08 / Image ≈ ¥0.94 / Image 2K (2048x2048) ¥0.08 / Image ≈ ¥0.94 / Image 4K (4096x4096) ¥0.14 / Image ≈ ¥1.68 / Image
gemini (/v1beta), openai (/v1/chat/completions multimodal), and openai-image (/v1/images/generations) with configurable Base URL and Model ID.Gemini(/v1beta), OpenAI(/v1) multimodal, and OpenAI Image(/v1/images/generations) modes in settings.tips and clickable source links.minRefs and note for required reference images.Template data is maintained in:
- backend/internal/templates/assets/templates.json
{
"meta": {
"version": "2024.12.01",
"updated_at": "2024-12-01T12:00:00Z",
"channels": ["Community", "Social", "Xiaohongshu"],
"materials": ["Poster", "PPT", "Cover"],
"industries": ["Education", "Life Services"],
"ratios": ["1:1", "3:4", "16:9"]
},
"items": []
}
{
"id": "tpl-001",
"title": "Cat Meme Template",
"channels": ["Community", "Entertainment"],
"materials": ["Poster"],
"industries": ["Life Services"],
"ratio": "1:1",
"preview": "https://.../thumb.jpg",
"image": "https://.../full.jpg",
"prompt": "Optional: Template prompt...",
"prompt_params": "Optional: Prompt usage instructions (reserved)",
"tips": "Optional: Usage tips/tricks",
"source": {
"name": "@Contributor",
"label": "GitHub",
"icon": "github",
"url": "https://example.com/templates/tpl-001"
},
"requirements": { "minRefs": 2, "note": "Requires one cat photo as reference" },
"tags": ["cat", "meme", "funny"]
}
requirements.note: Prompt text when reference images are needed.requirements.minRefs: Minimum number of reference images required.tips: Usage tips/notes (displayed in preview).prompt_params: Prompt usage instructions (reserved field, not rendered).tags: For searching and aggregation.materials: Can include PPT tag (suggested for 16:9) for presentation filtering.meta.version / meta.updated_at: For versioning and cache comparison.github, xhs, wechat, shop, video, print, gov, meme, finance, food, local.graph TD
subgraph "Frontend Layer (React + Zustand)"
UI[User Interface]
State[Zustand State Management]
AssetProtocol[asset:// Protocol]
end
subgraph "Desktop Container (Tauri 2.0 / Rust)"
TauriBridge[Rust Bridge]
IPC[IPC Optimization]
FS[Local File Access]
end
subgraph "Backend Layer (Go Sidecar)"
GoServer[Gin API Server]
WorkerPool[Worker Pool]
GeminiSDK[Google GenAI SDK]
OpenAIProvider[OpenAI Provider]
OpenAIImageProvider[OpenAI Image Provider]
SQLite[(SQLite Storage)]
end
UI <--> State
State <--> IPC
IPC <--> TauriBridge
TauriBridge <--> GoServer
GoServer <--> WorkerPool
WorkerPool <--> GeminiSDK
WorkerPool <--> OpenAIProvider
WorkerPool <--> OpenAIImageProvider
WorkerPool <--> SQLite
GeminiSDK <--> |Imagen 3.0| Cloud[Google AI Cloud]
OpenAIProvider <--> |/v1/chat/completions| OpenAI[OpenAI Compatible API]
OpenAIImageProvider <--> |/v1/images/generations| OpenAIImg[OpenAI Image API]
GoServer -.-> |Save Images| FS
FS -.-> |Map Resource| AssetProtocol
AssetProtocol -.-> |Fast Display| UI
The project uses a "three-layer architecture" to balance performance and scalability: 1. Frontend (React + Zustand): Handles responsive UI and state management. 2. Desktop Container (Tauri): Acts as a Rust bridge for window control and local resource access. 3. Inference Engine (Go Sidecar): Communicates with AI providers (Gemini, OpenAI, OpenAI-Image) and manages task pools.
asset:// protocol.├── backend/ # Go Backend (Sidecar)
│ ├── cmd/server/ # Entry point
│ └── internal/ # Core logic (Gemini, Worker, DB)
├── desktop/ # Tauri Desktop Project (React + Rust)
│ ├── src/ # Frontend logic
│ └── src-tauri/ # Rust & System permissions
├── frontend/ # Independent Web Frontend (Reference)
└── assets/ # Presentation resources
If you encounter a "Damaged" error on macOS due to Gatekeeper, run:
sudo xattr -r -d com.apple.quarantine "/Applications/Banana Pro AI.app"
cd backend
# Configure config.yaml with your API Key
go run cmd/server/main.go
Or use Makefile:
make build # Compile backend
make run # Run backend
cd desktop
npm install
npm run tauri dev
cd frontend
npm install
npm run dev
Push a version tag to trigger CI:
git tag v2.8.0
git push origin v2.8.0
Integrated Tauri Updater for one-click updates.
1. Generate keys: npm run tauri signer generate -- -w ~/.tauri/banana-updater.key
2. Add public key to tauri.conf.json.
3. Configure GitHub Secrets for CI.
| Item | Description |
|---|---|
AI Provider |
gemini (/v1beta), openai (/v1/chat/completions), or openai-image (/v1/images/generations). Each uses its own Base URL and model. |
API Base / Key |
Standard OpenAI format compatibility. |
Image Model |
Primary model for image generation (e.g., gemini-2.0-flash-exp, gpt-4o, gpt-image-2). |
Vision Model |
Model for reverse prompt extraction. Inherits Image Model's Base URL and API Key by default. |
Chat Model |
Model for prompt optimization. |
Storage Dir |
Default to system AppData (Win) or Application Support (Mac). |
Templates Remote URL |
Remote template JSON URL (defaults to GitHub Raw). |
asset:// |
Custom protocol for fast local image access. |
Only for Backend + Web Frontend deployment.
# 1. Copy environment template and configure API Key
cp .env.example .env
nano .env # Add your GEMINI_API_KEY or OPENAI_API_KEY
# 2. Start services (must use docker compose)
docker compose -p banana-pro up -d
# 3. Access the application
# Browser: http://localhost:8090
For complete deployment guide, configuration, and troubleshooting, see: DOCKER_DEPLOY.md
0.0.0.0 (Tauri uses 127.0.0.1)./data/storageWe welcome all forms of contribution!
This project is licensed under the MIT License.
$ claude mcp add Nano_Banana_Pro_Web \
-- python -m otcore.mcp_server <graph>