An AI studio for forging swipeable social media carousels from a single idea — powered by the Claude Agent SDK, authed through your existing Claude Code login (no API key wrangling).
Describe your idea, set the slide count, format and tone, and PostForge designs a full carousel — a cover hook, the substance slides, and a closing CTA. Pick from six themes and switch them live, flip through the deck, edit, then export every slide as a PNG (or the whole set as a zip).
Same stack as Squadron: an Express backend wrapping the Claude Agent SDK, a Vite + React frontend, all shipped as a local Electron desktop app with auto-update.
- Idea → carousel — Claude writes structured slides (cover · point · list · quote · cta) plus a ready-to-post caption.
- Live theming — six themes (Midnight, Paper, Mono, Vibrant, Ocean, Forest); switch instantly without regenerating.
- Formats — Portrait 4:5 and Square 1:1, exported at 1080px.
- PNG export — per-slide or the whole deck zipped, rendered exactly as previewed.
- Auto-update — installed apps update themselves from GitHub Releases.
Grab the latest AppImage from the Releases page:
chmod +x PostForge-*.AppImage
./PostForge-*.AppImageIt checks for updates on launch and installs new versions in the background.
electron/ Electron shell (starts the backend, opens the window, auto-update)
server/ Express API + Claude Agent SDK wrapper (the carousel designer)
web/ Vite + React frontend
assets/ Logo + marketing images
npm run setup # install root + web deps
npm run dev # server (5174) + web (5173) with API proxyOpen http://localhost:5173. Add ?demo to explore the UI against canned data
with no backend or Claude login required: http://localhost:5173/?demo
npm run electron # run the shell against the built web bundle
npm run dist # build the AppImage installer + update metadataGET /api/health— livenessGET /api/version— app versionGET /api/meta— formats, tones, slide range, versionPOST /api/generate—{ topic, slideCount, format, tone, handle?, audience?, cta?, brandVoice?, model? }→{ title, slides[], caption, hashtags[] }
