Skip to content

pradhankukiran/pipeline-kit

Repository files navigation

PipelineKit

AI-orchestrated Blender production pipelines.

Type a brief, get a real scene. Render product visualizations, lighting setups, and turntables with typed Blender operations driven by your choice of LLM.

Latest release CI MIT License

TypeScript React Tauri Rust Vite Tailwind CSS shadcn/ui Node.js pnpm Blender


Overview

PipelineKit is a desktop app that orchestrates Blender via AI. It uses LLMs to plan, dispatch, and review production work — not to replace your creative tools, but to drive them with typed operations and a real scheduler.

A pipeline run takes a prompt, plans a DAG via Groq, executes per-lane (Groq for fast structured work, OpenRouter for creative/vision review, Codex SDK for tool-heavy production, Blender MCP for actual scene/render operations), and surfaces every step with live progress, approvals, and render previews.

Features

  • Typed Blender operations — 8 first-class ops (create_scene, studio_set, apply_material, lighting_rig, camera_rig, render_shot, inspect_scene, save_checkpoint) with Zod-validated parameters.
  • Real Blender Python codegen — recipe IDs (white-sweep, softbox-three-point, turntable-orbit, matte-clay, preview-1080p) compile to working bpy scripts that Blender executes via MCP.
  • DAG pipeline executor — lane-aware scheduler with dependsOn support, real-time SSE event stream, and per-step approval gating.
  • Multi-lane orchestration — Groq (planning), OpenRouter (creative/review), Codex SDK (production), Blender (execution). API keys configured via Settings modal, persisted locally.
  • Project & approval entities — full CRUD with persistence, URL-driven routing (/projects/:id/{overview,blender,runs,review,assets}), live activity feed.
  • Asset library — search Poly Haven CC0 assets + procedural recipes; one-click import HDRIs and materials directly into the running Blender scene.
  • Render capture — every render_shot is saved to ~/.pipelinekit/renders/<runId>/<opId>.png, served via /renders/* and shown as thumbnails in-app.
  • Live scene state — polls Blender every 5 s and shows scene name, engine, frame range, object counts, active camera.
  • Single-command release — push a v* tag, GitHub Actions builds Linux/Windows/macOS native installers in parallel and attaches them to a draft release.

Architecture

┌─────────────────────────────────────────────────────────────────────────┐
│  Tauri 2 desktop  (Rust shell + React 18 + Vite + shadcn/ui)            │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  Topbar · Sidebar · routed views (Welcome / Project)               │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                  ▲                                      │
│                                  │  HTTP + SSE  (127.0.0.1:4317)        │
│                                  ▼                                      │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  Sidecar (Node, esbuild-bundled, spawned by Rust at app start)     │ │
│  │  ─ HTTP server  (~25 routes: projects, approvals, runs, blender)   │ │
│  │  ─ Pipeline orchestrator  (DAG, lanes, events, approval gating)    │ │
│  │  ─ Providers  (Groq, OpenRouter, Codex SDK)                        │ │
│  │  ─ Asset resolver  (procedural · Poly Haven · local fs)            │ │
│  │  ─ JSON persistence  (~/.pipelinekit/state.json, atomic writes)    │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                  ▲                                      │
│                                  │  MCP stdio  (uvx blender-mcp)        │
│                                  ▼                                      │
│  ┌────────────────────────────────────────────────────────────────────┐ │
│  │  Blender + MCP add-on  (executes generated bpy Python)             │ │
│  └────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘

Workspace

apps/
  desktop/              Tauri + React app
    src-tauri/          Rust shell + Tauri config
    src/                React UI (views, panels, layouts, shadcn primitives)
packages/
  core/                 Domain types, Zod schemas, pipeline contracts
  recipes/              Procedural recipe registry
  assets/               Asset resolver (procedural · Poly Haven · local fs)
  sidecar/              HTTP server, orchestrator, Blender bridge, providers
tools/
  sync-version.mjs      Keep root, Cargo.toml, tauri.conf in lockstep
.github/workflows/
  ci.yml                Typecheck, library build, cargo check on every push
  release.yml           Native installers on tag push (Linux + Windows + macOS)

Quick Start

Run from source

git clone https://github.com/pradhankukiran/pipeline-kit.git
cd pipeline-kit
pnpm install
pnpm dev                     # starts Vite + Tauri shell on :1420
# in another terminal:
pnpm --filter @pipelinekit/sidecar dev   # starts sidecar on :4317

Configure API keys

Open the gear icon in the topbar → paste your Groq and (optional) OpenRouter keys → Save. Settings persist to ~/.pipelinekit/state.json.

Connect Blender

  1. Install the Blender MCP add-on in Blender.
  2. Enable it from Edit → Preferences → Add-ons.
  3. Open the N-panel in the 3D viewport, click "Connect to Claude / MCP".
  4. In PipelineKit's Blender page, click Connect Blender, then List Tools.

Installation

Users

Download a build from Releases:

Platform File
Linux (Debian/Ubuntu) PipelineKit_x.y.z_amd64.deb
Linux (RPM) PipelineKit-x.y.z-1.x86_64.rpm
Linux (portable) PipelineKit_x.y.z_amd64.AppImage
Windows PipelineKit_x.y.z_x64-setup.exe or _x64_en-US.msi
macOS (universal) PipelineKit_x.y.z_universal.dmg

Requires Node 20+ on the system PATH. The app spawns the bundled sidecar via node. Install Node from nodejs.org before launching.

The sidecar log lives at ~/.pipelinekit/sidecar.log.

Developers

Prerequisites: Node 20+, pnpm 10+, Rust stable (for Tauri builds).

pnpm install

Useful scripts

Command What it does
pnpm dev Tauri dev (Vite + native shell, hot reload)
pnpm --filter @pipelinekit/sidecar dev Run sidecar in TS watch mode on :4317
pnpm -r typecheck Workspace-wide TypeScript check
pnpm -r build Build all packages (libraries to dist/, sidecar to dist-bundle/)
pnpm --filter @pipelinekit/sidecar bundle esbuild the sidecar to a single CJS file
pnpm sync:version Propagate root version → Cargo.toml, tauri.conf.json

When the sidecar is running on :4317 (e.g., from pnpm sidecar dev), the Tauri app detects the open port and skips spawning its bundled copy — your dev sidecar stays in charge.

Tauri Build

Build native installers locally:

cd apps/desktop
pnpm tauri build

Produces:

  • apps/desktop/src-tauri/target/release/bundle/deb/*.deb
  • apps/desktop/src-tauri/target/release/bundle/rpm/*.rpm
  • apps/desktop/src-tauri/target/release/bundle/appimage/*.AppImage

The beforeBuildCommand chain runs prebuild:desktop which builds libraries → bundles the sidecar via esbuild → builds the Vite frontend, in that order.

Releasing

# 1. Bump root package.json version
# 2. Sync into Cargo.toml + tauri.conf.json
pnpm sync:version

# 3. Commit + tag + push
git add -A && git commit -m "release: v0.x.y"
git tag v0.x.y
git push origin main --follow-tags

The release.yml workflow fires on the tag push and builds all three platforms in parallel (~7-15 min). Installers are attached to a draft GitHub release named after the tag — review and click Publish when ready.

To dry-run without releasing: GitHub Actions → release workflow → Run workflow → leave the tag input blank.

CI

Every push and PR to main runs:

  • pnpm -r typecheck — workspace-wide TS check
  • Library build for core, recipes, assets, sidecar
  • Sidecar esbuild bundle
  • Vite production build for the desktop
  • cargo check for the Tauri Rust shell

Status: CI

Roadmap

  • Multi-turn Codex SDK lane wired into a real scene-driving flow
  • Live render thumbnails as they finish (currently shown post-completion)
  • Drag-and-drop asset import
  • Project import/export
  • Code signing for Windows + macOS installers
  • Auto-update channel via Tauri updater
  • Optional Node SEA bundle so users don't need Node on their system

License

MIT — Copyright © 2026 Kiran Kumar Pradhan