AI-Powered Blender Assistant
Transform your 3D workflow with AI-powered Blender automation. Create, modify, and enhance your Blender projects through natural conversation.
Features • Quick Start • Documentation • Contributing • Support
ModelForge is a comprehensive platform that brings AI capabilities to Blender through four integrated components:
- Gemini 2.x Orchestration: ReAct-style planner with per-step validation and fallback heuristics
- Smart Material Application: Automatic material assignment and validation
- Scene Auditing: Ensures lighting, camera, and base materials exist with auto-correction
- Component Tracking: Post-plan review cards with checklists, asset usage, and material assignments
- User Authentication: Secure NextAuth.js v5 authentication with Google OAuth support
- Project Management: Organize and track multiple Blender projects
- Asset Integration Toggles: Per-project controls for Hyper3D Rodin and Sketchfab
- Conversation History: Persistent chat history across web and desktop
- Native MCP Connectivity: Electron wrapper for seamless Blender integration
- Unified Experience: Same features as web dashboard with native performance
- Configuration Bridge: Simplified MCP server setup
- Socket Bridge: Executes generated Python directly in Blender
- Real-time Communication: Live feedback from Blender operations
- External Integration: Works with the open-source blender-mcp project
| Frontend | |
| Backend | |
| Authentication | |
| UI Components | |
| Desktop | |
| AI Integration |
- Node.js 18+
- PostgreSQL 14+
- Blender 3.0+ (for MCP integration)
- Python 3.10+ (for Blender MCP server)
uvpackage manager
-
Clone the repository
git clone https://github.com/Ker102/ModelForge.git cd ModelForge -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env
Edit
.envand configure:# Database DATABASE_URL="postgresql://user:password@localhost:5432/modelforge" # NextAuth NEXTAUTH_URL="http://localhost:3000" NEXTAUTH_SECRET="<run: openssl rand -base64 32>" # LLM Provider GEMINI_API_KEY="your-gemini-api-key" # Blender MCP bridge BLENDER_MCP_HOST="127.0.0.1" BLENDER_MCP_PORT="9876"
-
Set up PostgreSQL database
createdb modelforge psql -U postgres -d modelforge -c "CREATE EXTENSION IF NOT EXISTS vector;" -
Run database migrations
npm run db:generate npm run db:push
-
Start development server
npm run dev
-
Open http://localhost:3000 in your browser
npm run test:userThis creates test@modelforge.dev / TestPass123! with an active subscription.
Configure external asset providers on a per-project basis:
- Poly Haven: Enabled by default (no API keys required)
- Hyper3D Rodin: Disabled by default (requires API credentials)
- Sketchfab: Disabled by default (requires API credentials)
Environment variables:
BLENDER_MCP_HOST/BLENDER_MCP_PORT– MCP socket target (defaults to127.0.0.1:9876)MODELFORGE_DESKTOP_START_URL– Entry point for Electron shell
Free-tier accounts can use locally hosted LLMs:
Supported Providers:
- Ollama: Lightweight local runtime
- LM Studio: Desktop UI with OpenAI-compatible server
Setup:
- Open Settings → Local LLM Configuration
- Select your provider and enter base URL
- Test connection and save
- Create OAuth client ID in Google Cloud Console
- Add authorized redirect URIs:
- Development:
http://localhost:3000/api/auth/callback/google - Production:
https://your-domain.com/api/auth/callback/google
- Development:
- Add credentials to
.env:GOOGLE_CLIENT_ID="your-client-id" GOOGLE_CLIENT_SECRET="your-client-secret"
Enable Firecrawl for web research capabilities:
- Set
FIRECRAWL_API_KEYin.env.local - Restart development server
- Enable per-project in dashboard
ModelForge connects to Blender through the blender-mcp project.
-
Install
uvpackage manager:# Linux/macOS curl -LsSf https://astral.sh/uv/install.sh | sh # macOS (Homebrew) brew install uv # Windows (PowerShell) powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
-
Install Blender addon:
- Download from
/downloads/blender-mcp-addon.py - Install via Blender → Preferences → Add-ons → Install
- Download from
-
Start MCP server:
uvx blender-mcp
-
Connect ModelForge: The web and desktop clients automatically connect using configured host/port
⚠️ Only run one MCP instance at a time (Cursor, Claude, or ModelForge) to avoid port conflicts.
Main tables:
- users: User accounts and authentication
- projects: Blender projects
- conversations: AI conversation history
- messages: Individual chat messages
- project_snapshots: Scene state snapshots
- subscription_plans: Pricing tiers
- usage_logs: API usage tracking
View complete schema in prisma/schema.prisma.
NextAuth.js v5 with multiple providers:
- Credentials: Email/password authentication
- Google OAuth: Social login
- Protected Routes: Dashboard and settings require authentication
Passwords are hashed using bcryptjs with 10 salt rounds.
The orchestration system in lib/orchestration/ includes:
- Planner (
planner.ts): Component-level plan generation with material guidelines - Executor (
executor.ts): MCP command execution with validation - Heuristics: Guardrail scripts for common scenarios
- Telemetry (
monitor.ts): Logging tologs/orchestration.ndjson - UI Integration: Plan summaries and execution results in chat
Electron wrapper in the desktop/ folder:
# Terminal 1: Web app
npm run dev
# Terminal 2: Desktop app
cd desktop
npm install # first run only
npm run devThe desktop app loads MODELFORGE_DESKTOP_START_URL (defaults to http://localhost:3000/dashboard).
ModelForge/
├── app/ # Next.js app directory
│ ├── (auth)/ # Auth routes (login, signup)
│ ├── api/ # API routes
│ ├── dashboard/ # Protected dashboard
│ └── page.tsx # Homepage
├── components/ # React components
│ ├── ui/ # shadcn/ui components
│ ├── landing/ # Landing page sections
│ ├── dashboard/ # Dashboard components
│ └── auth/ # Auth forms
├── lib/ # Utility libraries
│ ├── orchestration/ # AI orchestration logic
│ ├── mcp/ # MCP client
│ ├── auth.ts # NextAuth config
│ ├── db.ts # Prisma client
│ └── utils.ts # Helper functions
├── prisma/ # Database schema
├── desktop/ # Electron application
├── public/ # Static assets
├── scripts/ # Build and utility scripts
└── .github/ # GitHub templates and workflows
# Development
npm run dev # Start dev server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
# Database
npm run db:generate # Generate Prisma client
npm run db:push # Push schema to database
npm run db:migrate # Run migrations
npm run db:studio # Open Prisma Studio
# Testing & Analysis
npm run test:user # Create test user
npm run analyze:orchestration # Analyze orchestration logsModelForge implements enterprise-grade security:
- ✅ No secrets in Git
- ✅ Environment variable isolation
- ✅ Password hashing (bcryptjs)
- ✅ Protected API routes
- ✅ CSRF protection (NextAuth)
- ✅ SQL injection prevention (Prisma)
- ✅ Dependency scanning (Dependabot)
- ✅ Code scanning (CodeQL)
See SECURITY.md for reporting vulnerabilities.
- 5 AI requests per day
- 1 active project
- Basic MCP commands
- Community support
- 500 orchestrated requests/month
- 10 active projects
- All MCP commands
- Viewport analysis
- Email support
- Unlimited requests
- Unlimited projects
- Priority model access
- Asset library integration
- Priority support
- API access
# Test PostgreSQL
psql -U postgres -d modelforge -c "SELECT version();"
# Verify pgvector
psql -U postgres -d modelforge -c "SELECT * FROM pg_extension WHERE extname = 'vector';"# Reset database (WARNING: deletes all data)
npm run db:push -- --force-reset
# Regenerate client
npm run db:generate- Gemini-backed conversational planning
- Detailed plan auditing (components, materials, lighting)
- Electron desktop shell
- MCP orchestration logging
- Conversation memory with vector embeddings
- Viewport screenshot analysis
- Production desktop app packaging
- Team collaboration features
- Contributing Guide
- Code of Conduct
- Security Policy
- Setup Guide
- Blender MCP README
- Orchestration Details
We welcome contributions! Please read our Contributing Guide to get started.
- Fork the repository
- Create a feature branch (
git checkout -b feat/amazing-feature) - Make your changes
- Run tests and linting
- Commit your changes (
git commit -m 'feat: add amazing feature') - Push to your fork (
git push origin feat/amazing-feature) - Open a Pull Request
See the issue templates for reporting bugs or requesting features.
This project is licensed under the terms specified in the LICENSE file.
- Next.js - The React Framework
- Blender MCP - Blender integration
- shadcn/ui - Beautiful UI components
- Prisma - Next-generation ORM
- Google Gemini - AI orchestration
If you find ModelForge useful, please consider starring the repository!
Built with ❤️ by the ModelForge community
Website • Documentation • Discord • Twitter