No API keys. No accounts. No data leaves your machine.
PromptForge is a chatbot first, prompt generator in parallel. It runs entirely on your local machine via Ollama β open a conversation, explore ideas freely, then fire a single slash command to convert the whole thread into a production-quality prompt for any AI tool.
The insight it's built on: you already know what you want β you just need help saying it right.
You say: "a girl standing in a garden"
ββββ /image βββββΆ
PromptForge: A young woman with flowing auburn hair stands in a sun-drenched
English cottage garden at golden hour, wearing a white linen dress.
Soft bokeh roses in the foreground. Cinematic lighting, 50mm lens,
shallow depth of field, photorealistic, 8K UHD. Shot by Annie Leibovitz.
Negative: cartoon, anime, blur, watermark, lowres, flat lighting
Best for: Midjourney Β· Flux Β· Stable Diffusion
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 1. Chat freely β no setup needed β
β β
β "I want a login form in React" β
β "TypeScript, with JWT and CSRF protection" β
β "Should pass WCAG AA accessibility" β
β β back & forth β
β 2. Type a slash command when ready β
β β
β /code /image /video /project /brainstorm /prd β
β β
β 3. PromptForge reads the full conversation and synthesizes β
β a production-quality prompt β not just your last message β
β β
β The thread stays intact. Chat and prompts live together. β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Land in a chat interface with no mode selected, no forced setup. Talk freely β ask questions, think out loud, explore an idea. The AI is a fully capable local assistant powered by whichever Ollama model you have. Prompt generation is an option, never an obligation.
Type /brainstorm to enter a focused idea-exploration session. The assistant shifts into a dedicated mode: it asks one clarifying question per turn, surfaces constraints you haven't considered, and keeps responses tight (under 120 words) to maintain a productive back-and-forth rhythm. When you're ready, one slash command converts the whole conversation into a prompt.
Every mode uses a domain-specific system prompt engineered to produce genuinely useful output, not generic rewrites:
| Mode | Slash | What gets added to your idea |
|---|---|---|
| πΌοΈ Image gen | /image |
Subject, lighting, lens spec, art style, color palette, mood, negative prompt |
| π¬ Video gen | /video |
Camera movement, shot type, duration, frame rate, scene transitions, style ref |
| π» Coding | /code |
Language, architecture, validation, security, tests, edge cases, accessibility |
| π Project / PRD | /project |
Goals, personas, MoSCoW features, metrics, timeline, risks, out-of-scope |
| π Full PRD | /prd |
Complete Product Requirements Document β sections, OKRs, user flows, tech spec |
| π€ AI Agent | /agent |
Persona, capabilities, constraints, tool access, failure modes, few-shot examples |
| βοΈ Creative | /creative |
POV, tense, tone, pacing, sensory details, conflict arc, character depth |
| π Research | /research |
Scope, methodology, output format, citation style, sub-questions, counter-arguments |
| π£οΈ Chat Prompt | /chat |
Context, desired format, tone, audience, examples, constraints |
Tell PromptForge which tool you're targeting β by slash command or plain English β and it formats the output to match that platform's exact conventions:
/claude /midjourney /cursor /sora
/stable-diffusion /flux /opencode /runway
/nanobanana /copilot /windsurf /comfyui
... and 13 more
Or just say "give me a prompt for Cursor" β the app parses your intent automatically.
Attach files and PromptForge injects their content as context for enhancement:
| Type | What's extracted |
|---|---|
| Full text | |
| Images | Description via vision model |
Code files (.py .js .ts) |
Structure and function signatures |
| CSV / JSON | Schema and sample data |
| Markdown / TXT / DOCX | Full content |
Every enhanced prompt is auto-saved. Browse examples, filter by mode or platform, copy with one click, or load any saved prompt back into the chat to continue from where you left off.
Type / anywhere in the input to open a live-filtered command palette. Every mode, platform, and special command is one keystroke away:
/brainstorm Explore ideas collaboratively before committing to a prompt
/image Image generation prompt
/video Video generation prompt
/code Production-ready coding prompt
/project Project brief / PRD prompt
/prd Full Product Requirements Document
/agent AI agent system prompt
/creative Creative writing prompt
/research Structured research prompt
/chat Conversational prompt clarity
/search Web search with cited sources
/prompt Prompt it β enhance the current conversation now
/claude Target Claude Β· /midjourney Β· /cursor Β· /opencode ...
Every conversation auto-saves to a local .md file. Restart the app and resume exactly where you left off β message history, active mode, platform, and your notes, all preserved.
- Ollama installed and running
- Python 3.10+
- Node.js 18+
# Primary reasoning model β pick based on available VRAM
ollama pull hermes3:8b # 8 GB β excellent for prompt engineering
ollama pull qwen3:4b # 4 GB β solid fallback
# Coding specialist (recommended for /code and /prd modes)
ollama pull qwen2.5-coder:7b
# Embedding model (for semantic library search)
ollama pull nomic-embed-textcd backend
pip install -r requirements.txt
uvicorn main:app --reload --port 8000Windows:
py -m pip install -r requirements.txtΒ·py -m uvicorn main:app --reload --port 8000
cd frontend
npm install
npm run devOpen http://localhost:5173 β start chatting.
You: I want a cyberpunk cityscape for Midjourney
PromptForge: Neon-soaked rain streets or dry brutalist megacity?
You: Neon rain, Blade Runner feel, lone figure silhouette
PromptForge: Wide shot or closer β should the city feel huge around them?
You: Wide shot, city dwarfs them
You type: /image
PromptForge β¦ A lone silhouetted figure stands on a rain-slicked neon-lit
street at the base of towering brutalist skyscrapers. Glowing
holographic advertisements reflect in deep puddles. Cinematic
wide shot, anamorphic lens flare, Blade Runner 2049 palette
(deep teal + electric orange), 8K, sharp focus, film grain.
Negative: flat lighting, daytime, cartoon, blur, watermark
Best for: Midjourney Β· Flux Β· Stable Diffusion
Type: /code build a JWT login form in React with TypeScript
PromptForge β¦ Create a production-ready React login form using TypeScript
and React Hook Form. Requirements: email + password fields
with Zod validation, WCAG 2.1 AA accessible labels and error
messages, show/hide password toggle, loading state on submit,
JWT stored in httpOnly cookie (no localStorage), CSRF token
header support. Handle: 429 rate limiting, network errors,
expired token redirect. Include React Testing Library tests.
Use TailwindCSS for styling.
Type: give me a prompt for Cursor to build a REST API
β Detects "Cursor" β activates code mode
β Asks clarifying questions about the API
β "β¦ Prompt it" generates output in Cursor's preferred format
| Action | Shortcut |
|---|---|
| Send message | Enter |
| Enhance conversation | Ctrl+Enter |
| Open command palette | / |
| Switch to image mode | /image |
| Switch to code mode | /code |
| Start brainstorm | /brainstorm |
| Generate full PRD | /prd |
promptforge/
βββ backend/
β βββ main.py # FastAPI app, CORS, router registration
β βββ routers/
β β βββ enhance.py # POST /enhance, POST /enhance/chat
β β βββ library.py # Prompt library CRUD
β β βββ files.py # File upload + text extraction
β β βββ models.py # Ollama model list
β βββ services/
β β βββ meta_prompts.py # All system prompts per mode
β βββ requirements.txt
β
βββ frontend/
βββ src/
βββ App.jsx # Root β session state, enhance/chat logic
βββ components/
β βββ ChatArea.jsx # Message feed, enhanced prompt cards
β βββ InputBar.jsx # Textarea, slash commands, file attach
β βββ Sidebar.jsx # Mode nav, Ollama status
β βββ Topbar.jsx # Model picker, Library toggle
β βββ PromptLibrary.jsx # Saved + example prompt browser
β βββ CopyButton.jsx
β βββ PlatformTags.jsx
βββ lib/
β βββ ollama.js # Ollama API client, model picking, JSON parsing
β βββ providerIntent.js # "give me a prompt for X" detection
βββ hooks/
β βββ useModels.js # Model list + per-mode auto-selection
βββ constants/
βββ modes.js # Mode definitions, meta-prompts, slash commands
βββ platforms.js # 25 supported AI platforms
βββ platformGuides.js # Per-platform formatting guides
PromptForge knows the formatting conventions for 25 AI tools:
| Category | Platforms |
|---|---|
| Chat AI | ChatGPT, Claude, Gemini, Kimi, Perplexity, Grok, Meta AI, Ollama |
| Image | Midjourney, DALLΒ·E, Stable Diffusion, Flux, Nanobanana, Ideogram, Leonardo AI, ComfyUI |
| Video | Sora, Runway, Kling, Pika |
| Code | Cursor, GitHub Copilot, Antigravity, Windsurf, OpenCode |
Everything stays on your machine:
- Ollama runs models locally at
localhost:11434β no cloud calls - No telemetry, no accounts, no API keys required
- Uploaded files are processed in memory, never stored on disk
- Prompt library is in a local SQLite file (
backend/promptforge.db) - Session context saved to a local
.mdfile you own and control
| Layer | Technology |
|---|---|
| Frontend | React 18 + Vite + TailwindCSS |
| Backend | FastAPI (Python 3.10+) |
| LLM runtime | Ollama (local, any model) |
| Storage | SQLite for prompts Β· .md file for session context |
| Dev proxy | Vite β Ollama (/ollama) + FastAPI (/api) |
- MCP server β expose PromptForge as a tool inside Claude Desktop and other MCP clients
- Browser extension β "Enhance with PromptForge" button injected into ChatGPT, Claude, Midjourney, and Cursor
Built for people who know what they want but need help saying it right.