Open-Source AI Presentation Generator and API (Gamma, Beautiful AI, Decktopus Alternative)
✨ Why Presenton
No SaaS lock-in · No forced subscriptions · Full control over models and data
What makes Presenton different?
- Use Fully self-hosted in Web through Docker Package
- Or Download Desktop App (Mac, Windows & Linux)
- Works with OpenAI, Gemini, Vertex AI, Azure OpenAI, Amazon Bedrock, Fireworks, Together AI, Anthropic, LM Studio, Ollama, or custom models
- Comes with AI Presentation Generation API
- Fully open-source (Apache 2.0)
- Works with your own design/templates
- Fully editable PPTX export
[!TIP]
Star us! A ⭐ shows your support and encourages us to keep building! 😇
🎛 Features
💻 Presenton Desktop
Create AI-powered presentations using your own model provider (BYOK) or run everything locally on your own machine for full control and data privacy.
Available Platforms
Deploy to Cloud Providers
Presenton gives you complete control over your AI presentation workflow. Choose your models, customize your experience, and keep your data private.
- Custom Templates & Themes — Create unlimited presentation designs with HTML and Tailwind CSS
- AI Template Generation — Create presentation templates from existing Powerpoint documents.
- Flexible Generation — Build presentations from prompts or uploaded documents
- Export Ready — Save as PowerPoint (PPTX) and PDF with professional formatting
- Built-In MCP Server — Generate presentations over Model Context Protocol
- Bring Your Own Key — Use your own API keys for OpenAI, Google Gemini, Vertex AI, Azure OpenAI, Anthropic Claude, or any compatible provider. Only pay for what you use, no hidden fees or subscriptions.
- Ollama Integration — Run open-source models locally with full privacy
- OpenAI API Compatible — Connect to any OpenAI-compatible endpoint with your own models
- Multi-Provider Support — Mix and match text and image generation providers
- Versatile Image Generation — Choose from DALL-E 3, Gemini Flash, Pexels, or Pixabay
- Rich Media Support — Icons, charts, and custom graphics for professional presentations
- Runs Locally — All processing happens on your device, no cloud dependencies
- API Deployment — Host as your own API service for your team
- Fully Open-Source — Apache 2.0 licensed, inspect, modify, and contribute
- Docker Ready — One-command deployment with GPU support for local models
- Electron Desktop App — Run Presenton as a native desktop application on Windows, macOS, and Linux (no browser required)
- Sign in with ChatGPT — Use your free or paid ChatGPT account to sign in and start creating presentations instantly — no separate API key required
☁️ Presenton Cloud
Run Presenton directly in your browser — no installation, no setup required. Start creating presentations instantly from anywhere.
⚡ Running Presenton
Option 1: Electron (Desktop App)
-
Setup (First Time)
This installs Node dependencies, runs uv sync in the FastAPI
server, and installs Next.js dependencies.
-
Run in Development
-
Build Distributable (Optional)
To create installers for Windows, macOS, or Linux:
Option 2: Docker
⚙️ Deployment Configurations
The lists below match the environment variables forwarded in this repository’s docker-compose.yml (production, production-gpu, development, and development-gpu). Put values in a .env file next to the compose file, or export them before docker compose up. The Electron app backend can read the same names when run outside Docker.
Other optional variables exist in code (for example advanced Mem0 paths, LiteParse runners, or FAST_API_INTERNAL_URL when Next.js and FastAPI are not same-origin); they are not wired in docker-compose.yml. Supported names are discoverable from servers/fastapi/utils/get_env.py and the Next.js server utilities under servers/nextjs/.
LLM and API keys
- CAN_CHANGE_KEYS=[true/false]: Set to false if you want to keep API keys hidden and make them unmodifiable.
- LLM=[openai/google/vertex/azure/bedrock/anthropic/lmstudio/ollama/custom/codex]: Select the text LLM.
- OPENAI_API_KEY: Required if LLM is openai.
- OPENAI_MODEL: Required if LLM is openai (default:
gpt-4.1).
- GOOGLE_API_KEY: Required if LLM is google.
- GOOGLE_MODEL: Required if LLM is google (default:
models/gemini-2.0-flash).
- VERTEX_MODEL: Required if LLM is vertex (default:
gemini-2.5-flash).
- VERTEX_API_KEY: Optional auth path for LLM=vertex (Vertex Express).
- VERTEX_PROJECT / VERTEX_LOCATION: Optional auth path for LLM=vertex when using GCP project credentials (do not combine with
VERTEX_API_KEY).
- VERTEX_BASE_URL: Optional Vertex gateway/base URL override.
- AZURE_OPENAI_MODEL: Required if LLM is azure (deployment/model name).
- AZURE_OPENAI_API_KEY: Required if LLM is azure.
- AZURE_OPENAI_API_VERSION: Required if LLM is azure (for example
2024-10-21).
- AZURE_OPENAI_ENDPOINT / AZURE_OPENAI_BASE_URL: At least one is required if LLM is azure.
- AZURE_OPENAI_DEPLOYMENT: Optional deployment override for LLM is azure.
- BEDROCK_REGION: Optional if LLM is bedrock (default:
us-east-1).
- BEDROCK_MODEL: Required if LLM is bedrock. Use a standard model ID (e