
GitHub: https://github.com/anil-matcha/open-generative-ai
Muapi.ai 网关的官方开源 Studio 外壳,把 200+ 闭源商业生成模型(Veo 3 / Sora / Kling / Flux / Midjourney 等)统一打包成一个跨 Web、Electron 桌面、CLI、Agent 的自托管「生成式 AI Hugging Face Spaces」,MIT 协议,但底层网关始终走作者自家的 muapi.ai 计费通道。
sora-alternative / midjourney-alternative / uncensored 三个最强 SEO 钩子。packages/studio/src/models.js 把 200 个模型的参数差异抽象成单一数组 + 通用 schema 渲染,任何新模型只需 push 一个 JSON 即自动生成 UI——这是低代码 / 配置型 SaaS 前端的金标准模式。
— dark glassmorphism UI 下的 12 个 Studio Tab + 200+ 模型聚合实际体验

— Flux/Kling/Sora 等模型输出样例对比
Hero Demo Video — 端到端产品演示,从 API key 配置到生成图像/视频全流程
项目未提供 PNG/SVG 形式的架构图素材,目录树结构与两步异步 API 流程详见 README 内文字版。
维度 | 数据 |
|---|---|
GitHub | https://github.com/anil-matcha/open-generative-ai |
Star / Fork | 21,371 / 3,640(fork/star 比 ~17%,动手改造比例高) |
Watcher | 161 |
Open Issue / PR | 9 / 12(极低 issue 量) |
代码行数 | 53,199(JSON 42.9% + JavaScript 38.1% + JSX 18.2%,纯逻辑代码约 3 万行) |
文件数量 | 110 |
注释率 | 2.9%(快速迭代 demo 期特征) |
项目年龄 | 4.5 个月(首次提交 2026-02-10) |
总 commits | 236(每周 ~13 次) |
最近 commit | 2026-06-27 |
开发阶段 | 密集开发 |
开发模式 | 职业项目(周末占比 25%,夜间占比 26%) |
贡献模式 | 独立主导(Top 贡献者 84.5%,bus factor = 1) |
热度定位 | 大众热门 |
质量评级 | 代码 C+ 文档 B+ 测试 F CI/CD C- |
最新版本 | v2.0.0(共 13 个 tag,每月 ~3 个) |
License | MIT |
Anil Chandra Naidu Matcha(@anil-matcha,13 年 GitHub 老账号,1.5k followers),运营公司 Vadoo Internet Services Private Limited。作品矩阵围绕 muapi.ai 网关生态展开:Open-Generative-AI(21.4k stars,本仓旗舰)+ Seedance-2-API(318 stars)+ awesome-seedance-2.5-api-prompts(215 stars)+ AI-Youtube-Shorts-Generator(姊妹产品 vadoo.tv,自动化短视频发布)。
典型的「印度裔独立开发者 + 小型商业实体」组合,13 年技术积累(早于 Stable Diffusion 时代)+ 敏锐把握 2025 Q3 ~ 2026 Q1 闭源视频模型集中发布窗口期(Sora / Veo 3 / Seedance 2 同期上线,单家 UI 跟不上),聚合成了天然的套利点。
作者观察到两类并行痛点:
时机选择的关键判断:2025 Q4 起闭源视频模型密集发布 + 「uncensored」情绪反弹(MidJourney / ChatGPT 内容审核用户怨声载道),聚合 + 「无审查」是双窗口期机会。
明确选择的「做」与「不做」:
做: - 广度优先(200+ 模型 vs ComfyUI 的深度优先) - 易用性优先(Hosted / Web / Electron 三档门槛,安装零配置) - 商业聚合(开源外壳 + 自家 muapi 网关计费) - 跨形态覆盖(Web + Electron 桌面 + CLI + Agent + MCP)
不做: - 不做深度自定义(Workflow Studio 节点类型由服务端 schema 决定,不可写任意 Python) - 不做完全离线(云端模型必须 muapi key;sd.cpp / Wan2GP 仅 13 个本地补充引擎) - 不做学术可复现(这是 API 聚合项目,不是模型或算法创新) - 不做真开源理想主义(MIT 源代码 ≠ muapi credits 免费)
Vibe-Workflow(节点引擎拆分子模块)、Generative-Media-Skills(Claude Code/Codex 媒体管线 skills)、AI-Youtube-Shorts-Generator(端到端自动化)、Open-AI-Design-Agent(AI Agent 形态产品)——全链路围绕 muapi 网关锁定按新颖度 × 实用性 × 可迁移性综合排序:
packages/studio/src/models.js(10,600 行,自动生成)= 单一数组,每个 entry 含 id / endpoint / inputs {prompt, aspect_ratio: {enum, default, title}, ...},表单用 Object.entries(inputSchema.properties).map(...) 动态渲染,enum 渲染 <select>,默认渲染 <textarea> - Hugging Face 和 Replicate 都在做类似事,但本仓是前端完整闭环,schema 直接来自 models_dump.json 自动生成
middleware.js 用 NextResponse.rewrite() 把 /api/v1/... 直接重写到 https://api.muapi.ai/...(不是 redirect,是同源重写) - 自托管用户把整个 Next.js 部署到自己的域名,「统一计费网关 + 自托管 UI」叙事成立
electron/lib/localInference.js 持 sd.cpp 单一子进程 + 解析 stderr 进度 - electron/lib/wan2gpModelAvailability.js 在 probe 时拉 /info 拿到当前服务器注册的 api_name,把 catalog 里的 fn 重映射到实际可用名,Wan2GP 版本间 wan22_t2v → wan_2_2_t2v 改名就靠这层兜底
buildNanoBananaPrompt 镜头语言 schema 化(新颖度 6 / 实用性 6 / 可迁移性 7) - promptUtils.js 把相机/镜头/光圈/景深(CAMERA_MAP/LENS_MAP/APERTURE_EFFECT)映射为自然语言短语,注入到 prompt - 这种「领域 DSL → 自然语言」的解构模型可迁移到任何创意 prompt 工具
electron/lib/localInference.js 的 robust download(新颖度 6 / 实用性 8 / 可迁移性 7) - range-resume + redirect follow + 跨重试已知总量单调递增(let knownTotal = 0; ... if (newTotal > knownTotal) knownTotal = newTotal) - 避免重试/重定向时进度条倒退,Electron 写二进制/模型权重下载都该用
Object.entries(inputSchema.properties).map(prop => <Field prop={prop}/>),prop 决定渲染类型。任何「配置项会变多」的 SaaS 前端都用得上。
submitAndPoll(endpoint, payload, key, onRequestId, maxAttempts)——拆出 onRequestId 回调是关键,让 UI 在第一秒就有响应可显示。image 默认 60 次(~2 min),video / i2v / v2v 默认 900 次(~30 min)。
NextResponse.rewrite() 是被低估的工具。
/info → 重映射 catalog fn → 兼容多版本 Gradio server。所有用 Gradio 暴露的 AI 模型都该这么干。
model.provider 字段决定 IPC 路径,不引入抽象基类。比 AbstractProvider interface 更轻、更易测试。
OPEN_GENERATIVE_AI_LOCAL_AI_DIR 让大模型权重可挂载到独立磁盘,且 Settings → Local Models 面板显示已解析路径——把「用户配置」和「运行时解析」解耦。
pendingJobs.js 模式:localStorage 存 [{requestId, studioType, ...}],启动时扫描、UI 重新订阅。
packages/studio/src/models.js 单点真理;表单用 schema properties 动态渲染。export const t2iModels = [...] 整体导出 → Vite tree-shake 失效。muapi.ai 域名跨域调用 api.muapi.ai 受 CORS 限制。middleware.js 用 NextResponse.rewrite() 把 /api/v1/... 直接重写到 https://api.muapi.ai/...。set-cookie、不处理 SSE 流 / ❌ middleware.js 是单点,每个请求过一遍 Next.js runtime,比纯 Nginx 反代慢 5-10ms。POST /api/v1/{endpoint} 拿 request_id → 2s 间隔轮询 GET /api/v1/predictions/{request_id}/result。completed / succeeded / success / failed / error,其他新值会一直轮询到超时。localInferenceClient.js 根据 getLocalModelById(params.model)?.provider 决定走 window.localAI.generate(sd.cpp)还是 window.localAI.wan2gp.generate;Electron 主进程 localInference.js 持 sd.cpp 单一子进程,wan2gpProvider.js 走 Gradio HTTP。step/totalSteps/progress,Wan2GP 只给 progress/status)。src/lib/muapi.js class 模式 vs packages/studio/src/muapi.js 函数模式)——反面案例https://api.muapi.ai)和 Next.js 浏览器(走 /api 代理绕过 CORS)。src/lib/models.js(5 行)做 shim,export * from "studio/src/models.js",注释明确「don't touch every consumer」。generateI2I 的 imageField/lastImageField 处理)写了两遍,未来 drift 风险大 / ❌ monorepo 没真正「拆」,而是用 shim 文件 + workspace symlink 糊在一起——典型「还没拆完」的中间态。维度 | open-generative-ai | ComfyUI | Pinokio | AUTOMATIC1111 |
|---|---|---|---|---|
模型覆盖 | 200+ 闭源商业 + 13 本地 | 仅本地权重(SD/Flux/SDXL) | 任意(meta 运行环境) | 单一 Stable Diffusion |
用户门槛 | 零(Hosted/Web/Electron 三档) | 极高(Python/CUDA 配置) | 中(一键安装) | 中(Python 配置) |
节点式 pipeline | Workflow Studio 简化版 | 核心(自定义节点,极强) | 无 | 弱 |
内容审核 | 「unrestricted」营销钩子 | 自由 | 自由 | 自由 |
商业模式 | 开源外壳 + 商业网关 | 纯开源 | 平台抽成 | 纯开源 |
跨平台 | Web + Electron + CLI + Agent + MCP | Web | Web | Web |
活跃度 | 4.5 月 21k stars | 5+ 年 80k+ stars | 1+ 年 10k+ stars | 7+ 年 150k+ stars |
「消费级 AI 创作工具的 Hugging Face Spaces」——创作者用本仓,开发者用 muapi-cli / n8n-nodes-muapi / muapi-comfyui,中间是 muapi 网关。在「API 聚合 + 自托管 UI」这条赛道上,目前是 GitHub 独一份的最广度方案。
sora-alternative / midjourney-alternative / uncensored 是公众号 SEO 黄金钩子。muapi.js / models.js(monorepo 拆分未完成) - models.js 10,600 行 bundle 整体导出,Vite tree-shake 失效 - 注释率仅 2.9%、测试 0%、refactor 1%——「边做边修」阶段的典型特征 - StandaloneShell.js 千行「上帝组件」+ 12 个 Studio 各自重复上传/拖拽/设置逻辑console.log 无脱敏无级别控制 - webSecurity: false 关闭 Electron 沙箱(electron/main.js:27),为可用性牺牲部分安全 - 无 React ErrorBoundary,单个 Studio 崩溃会全白屏 - axios 在 package.json 依赖里但 muapi.js 改用 fetch(不一致) - reactflow 和 @xyflow/react 同时存在于 dependenciespackages/studio/src/models.js(200+ 模型 schema 单一来源真相)packages/studio/src/muapi.js(submitAndPoll 长任务模板)middleware.js(Next.js middleware 反代隐藏 CORS)electron/lib/localInference.js(sd.cpp 进程管理 + 健壮下载)electron/lib/wan2gpModelAvailability.js(Gradio fn 自动重映射)src/lib/promptUtils.js(buildNanoBananaPrompt 镜头语言 schema 化)models.js 拆成按需 chunk,启用 Vite tree-shakeStandaloneShell.js 上帝组件,按 Tab 切分已索引但内容未渲染 — https://deepwiki.com/anil-matcha/open-generative-ai