by fancyboi999
Open-source AI canvas design agent — alternative to Lovart / CapCut Video Studio / Canva AI. Chat-driven image & video generation on an infinite canvas.
# Add to your Claude Code skills
git clone https://github.com/fancyboi999/LoomicLast scanned: 6/27/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-06-27T06:53:25.308Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}Loomic is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by fancyboi999. Open-source AI canvas design agent — alternative to Lovart / CapCut Video Studio / Canva AI. Chat-driven image & video generation on an infinite canvas. It has 100 GitHub stars.
Yes. Loomic passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/fancyboi999/Loomic" and add it to your Claude Code skills directory (see the Installation section above).
Loomic is primarily written in TypeScript. It is open-source under fancyboi999 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh Loomic against similar tools.
No comments yet. Be the first to share your thoughts!
CapCut 刚推出了 Video Studio——基于画布的 AI 视频制作空间,Lovart 做的是 AI 设计 Agent,Canva 也在往 AI 方向猛推。这类产品的共同点:闭源、数据不在你手里、定价你说了不算。
Loomic 做的是同一件事,但完全开源。你在无限画布上跟 AI 对话,它直接生成图片、视频,摆好位置,调好样式。不需要时间轴,不需要模板,不需要学 prompt 工程。说"把左边那张换成暖色调",AI 就懂了。
从构思、角色设定、故事板、场景生成、细节打磨到导出——整个创作流程在一个画布上完成。底层是 LangGraph 驱动的 Agent,接了 Google Gemini / Vertex AI / OpenAI / Replicate 十几个模型(包括 Veo 3.1、Kling、Seedance、Sora 等),图片视频都能生。
开源,可以自己部署,数据全在你手里。
🗣️ 对话式画布设计
🖼️ 图片生成(15+ 模型)
🎬 视频生成
🎨 无限画布
🏷️ Brand Kit
💰 积分 & 付费
🧩 可扩展技能系统
┌─────────────┐ WebSocket / REST ┌─────────────────┐
│ Next.js │ ◄──────────────────────► │ Fastify API │
│ Frontend │ │ + LangGraph │
│ (Vercel) │ │ Agent (Railway) │
└─────────────┘ └────────┬────────┘
│ PGMQ
┌────────▼────────┐
│ Worker(s) │
│ Image / Video │
│ Generation │
│ (Railway) │
└────────┬────────┘
│
┌────────▼────────┐
│ Supabase │
│ PostgreSQL │
│ Auth / Storage │
└─────────────────┘
| Component | Tech | Role |
|---|---|---|
| Frontend | Next.js 15 + React 19 + Tailwind CSS 4 | Canvas UI, chat panel, workspace |
| API Server | Fastify 5 + LangGraph | Agent runtime, WebSocket, REST API |
| Worker | Node.js poll-based consumer | Async image/video generation jobs |
| Database | Supabase (PostgreSQL) | Data, auth, storage, job queue (PGMQ) |
| Canvas | Excalidraw 0.18 | Infinite canvas rendering |
| AI | LangChain + LangGraph | Agent orchestration, tool calling |
| Queue | PGMQ | Reliable async job processing |
| Layer | Technology |
|---|---|
| Monorepo | Turborepo + pnpm |
| Frontend | Next.js 15 (App Router), React 19, Tailwind CSS 4 |
| Canvas | Excalidraw |
| Backend | Node.js, Fastify 5, TypeScript |
| AI Framework | LangChain 1.2, LangGraph 1.2 |
| LLM Providers | OpenAI, Google Gemini, Google Vertex AI |
| Image Generation | Imagen, DALL-E, Replicate (13+ models) |
| Video Generation | Google Veo 3.x, Replicate (Kling, Sora, Seedance, etc.) |
| Database | PostgreSQL (Supabase) |
| Auth | Supabase Auth (Magic Link + OAuth) |
| Storage | Supabase Storage (S3-compatible) |
| Queue | PGMQ (PostgreSQL native) |
| Payments | LemonSqueezy |
| Linting | Biome |
| Testing | Vitest |
npm install -g pnpm)brew install supabase/tap/supabase)git clone https://github.com/fancyboi999/Loomic.git
cd Loomic
pnpm install
Create a Supabase project at supabase.com, then apply migrations:
supabase link --project-ref YOUR_PROJECT_REF
supabase db push
This creates all required tables, RLS policies, storage buckets, and the PGMQ job queue.
cp .env.example .env.local
Edit .env.local with your credentials:
# ── Required: Supabase ──────────────────────────────────────
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
SUPABASE_DB_URL=postgresql://postgres:pw@db.your-project.supabase.co:5432/postgres
SUPABASE_PROJECT_ID=your-project-ref
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
# ── Required: At least one AI provider ──────────────────────
LOOMIC_AGENT_MODEL=google:gemini-2.5-flash # or openai:gpt-4o
GOOGLE_API_KEY=your-google-api-key # for Gemini + Imagen + Veo
# OPENAI_API_KEY=your-openai-key # alternative: OpenAI provider
# ── Optional: More generation providers ─────────────────────
# REPLICATE_API_TOKEN= # 13+ image/video models
# GOOGLE_VERTEX_PROJECT= # Vertex AI (service account)
# GOOGLE_VERTEX_LOCATION=global # global for image/LLM
# GOOGLE_VERTEX_VIDEO_LOCATION=us-central1 # us-central1 for video
# GOOGLE_APPLICATION_CREDENTIALS= # path to SA JSON
Note: See Environment Variables Reference for the full list.
自部署后,跑一下种子脚本就能直接体验各套餐功能,不需要接支付:
pnpm seed
脚本会在你自己的 Supabase 中创建 4 个测试账号:
| Password | Plan | Credits | |
|---|---|---|---|
free@test.loomic.com |
opensourceloomic |
Free | 50 |
starter@test.loomic.com |
opensourceloomic |
Starter | 1,200 |
pro@test.loomic.com |
opensourceloomic |
Pro | 5,000 |
ultra@test.loomic.com |
opensourceloomic |
Ultra | 15,000 |
These accounts are created in YOUR Supabase instance.
pnpm dev
This starts all services simultaneously:
| Service | URL | Description |
|---|---|---|
| Web | http://localhost:3000 | Next.js frontend |
| API Server | http://localhost:3001 | Fastify API + WebSocket |
| Worker | — | Background job processor |
Open http://localhost:3000 and start creating!
# Connect your repo to Vercel, then set:
# Build Command: pnpm --filter @loomic/shared build && pnpm --filter @loomic/web build
# Output Directory: apps/web/out
# Environment Variables: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, NEXT_PUBLIC_SERVER_BASE_URL
The backend runs as two services from a single Docker image, differentiated by SERVICE_MODE:
API Service:
SERVICE_MODE=api
LOOMIC_SERVER_PORT=3001
Worker Service:
SERVICE_MODE=worker
WORKER_ID=railway-w1
Both services share the same environment variables (Supabase, AI keys, etc.).
The Dockerfile at apps/server/Dockerfile handles the multi-stage build.
# Apply all migrations
supabase db push
# Generate TypeScript types (after schema changes)
supabase gen types typescript --linked > packages/shared/src/supabase-types.ts
Each worker polls PGMQ and processes jobs concurrently. PGMQ guarantees exactly-once delivery.
# Local: start multiple workers
pnpm --filter @loomic/server dev:workers:2 # 2 workers (6 concurrent jobs)
pnpm --filter @loomic/server dev:workers:3 # 3 workers (9 concurrent jobs)
| Variable | Default | Description |
|---|---|---|
WORKER_CONCURRENCY |
3 |
Jobs per worker instance |
WORKER_IMAGE_CONCURRENCY |
3 |
Image generation slots |
WORKER_VIDEO_CONCURRENCY |
2 |
Video generation slots |
WORKER_POLL_INTERVAL_MS |
2000 |
Queue poll interval (ms) |
WORKER_ID |
random | Worker instance identifier |
On Railway, scale by adding more worker service replicas.
Loomic/
├── apps/
│ ├── web/ # Next.js 15 frontend
│ │