index · all work
06 · AI orchestration

Forge

A menu-bar control room for AI media, coding agents, and Remotion renders.

Year2026
Statusshipped
RoleSolo · design + engineering
Built withTypeScript 5.9 · React 19 · Electron 41 · Vite 8 · Express 5 · +6
forge · media + agent studioopen ↗

Live demo. Click Run to load the real app and use it right here, or open it full-screen.

01Overview

Forge is a native macOS desktop app Pablo built as a personal AI orchestration center: one surface for generating media, running coding agents, and rendering demo videos. Instead of tab-hopping between provider dashboards and CLIs, everything runs through an Electron shell that spawns a local Express backend and streams progress to a React UI over WebSocket. It lives in the menu-bar tray and auto-launches hidden at login.

The centerpiece is the AI-to-Remotion pipeline. Describe a video in plain English and Forge asks Gemini for a schema-constrained component, writes a self-contained .tsx with an isolated entry that registers only that one composition, runs `remotion render`, and streams the log back to the UI without ever touching the source project's Root.tsx. Forge also mirrors its powers as an MCP server, so Claude or any agent can generate images, video, and voice, read repos, and manage templates headlessly. API keys never hit disk in plaintext: they are encrypted at rest with Electron safeStorage, with env fallbacks for headless dev.

02The problem

Producing AI media and demo videos means juggling provider dashboards, CLI tools, and one-off render scripts. Forge collapses that into a single macOS app: generate images, voice, and video, drive coding agents, and render Remotion demos from one window. Agents can reach the same media and repo tools over MCP.

03Highlights
  • AI-to-Remotion pipeline: a plain-English prompt becomes a JSON-schema-constrained Gemini component, written to a self-contained .tsx plus an isolated entry that registers only that one composition, then rendered with `npx remotion render` and streamed to the UI. The source project's Root.tsx is never mutated.
  • Built-in MCP server (JSON-RPC over stdio) exposing 11 tools so Claude or any agent can drive Forge headlessly: generate image, video, and voice, list and read managed repos, and list, create, and browse templates and media. (Image edit, upscale, and template-run are declared but still stubbed on the MCP surface.)
  • Four provider backends behind one surface: Gemini for image/video/speech/chat, ElevenLabs for voice, RunPod serverless GPU for Qwen-Edit / RealESRGAN / Qwen3-TTS, and the OpenAI Codex CLI run as a subprocess agent (`codex exec --json`).
  • Per-purpose Gemini key routing: a pool of named API keys where image, video, audio, chat, and agentTasks each pin to their own key and model, resolved at call time.
  • Live task and render streaming over WebSocket: agent output and Remotion render logs are pushed as they happen, each message tagged with its taskId so the UI can follow a specific run.
  • Native macOS shell: a menu-bar tray app that spawns the Express backend as a child process via ELECTRON_RUN_AS_NODE and encrypts every API key at rest with Electron safeStorage instead of writing secrets to config.
04By the numbers
11
MCP tools (JSON-RPC over stdio)
4
provider backends (Gemini, ElevenLabs, RunPod GPU, Codex CLI)
60+
REST endpoints
12-section desktop UI
What's inside8 parts
  • electron/main.tsapp

    macOS menu-bar shell that spawns the Express backend as a child process, holds the tray menu (show window, MCP status, copy LAN IP), and stores provider keys in the Keychain.

  • server/index.tsservice

    Express 5 API on port 3400 that routes media generation, agent tasks, Remotion templates, git repos, providers, and workspace files, with a WebSocket for live task and render progress.

  • server/mcp-server.tsmcp

    Standalone stdio MCP server that hands Claude Code eleven forge_* tools (generate, edit, and upscale media; list repos and media; run and create templates) by calling the Forge API.

  • src (Forge dashboard)app

    React 19 and Vite dashboard (templates, images, video, audio, gallery, editor, agents, repos, providers, workspace, settings) that drives every backend route and serves as the localhost:3400 browser view.

  • server/gemini-compose.tslibrary

    Asks Gemini for structured JSON plus relevant SKILL.md context to synthesize a self-contained Remotion component, then writes it under the active project's src/ai-generated/ folder.

  • server/remotion-templates.tslibrary

    Remotion template engine that scans a project's Root.tsx for literal Composition tags, tracks parameterized and standalone templates, and maps rendered videos into the shared media root.

  • server/providerslibrary

    Provider adapters for Gemini (Imagen, Veo, TTS), ElevenLabs voice, RunPod serverless GPU (Qwen-Edit, RealESRGAN, Qwen3-TTS), and Codex and Claude CLI subprocess launchers for agent tasks.

  • server/skills.tslibrary

    Skills bridge that indexes SKILL.md files across the Claude, Stitch, and Projects skill roots and loads raw content on demand for Gemini's system prompt.

·Tags
AI orchestrationdesktop appMCPmedia generationRemotionElectron
Full tech stack 11
TypeScript 5.9React 19Electron 41Vite 8Express 5RemotionGoogle Gemini (@google/genai)Tailwind 4WebSocket (ws)shadcn / base-uisimple-git