ima2-gen là ứng dụng tạo ảnh cục bộ dành cho những ai muốn trải nghiệm quy trình tạo ảnh ChatGPT/Codex trên ứng dụng web giống desktop.
Cài toàn cục, đăng nhập bằng ChatGPT OAuth hoặc Grok OAuth, và bắt đầu tạo ảnh và video. Tối ưu với lịch sử, ảnh tham chiếu, nhánh node, lô multimode, Canvas Mode để chỉnh sửa, và tạo video Grok. Không cần API key — ChatGPT OAuth miễn phí và gói SuperGrok subscription bao gồm tất cả.
- Classic mode: tạo, chỉnh sửa, tái sử dụng ảnh hiện tại, dán ảnh tham chiếu, và tiếp tục từ lịch sử.
- Node mode: phân nhánh một ảnh tốt thành nhiều hướng mà không mất ảnh gốc.
- Multimode batches: khởi tạo nhiều kết quả Classic từ một prompt, theo dõi tiến trình từng slot, và tiếp tục từ kết quả tốt nhất.
- Tạo video: tạo video ngắn từ văn bản, một ảnh, hoặc nhiều ảnh tham chiếu qua mô hình video Grok. SSE streaming hiển thị lập kế hoạch → đã gửi → tiến trình % → hoàn thành.
- Storyboard mode: duy trì sự liên tục nhân vật và cảnh qua các frame liên tiếp cho sản xuất video.
- Canvas Mode: zoom, pan, đánh dấu, xóa, làm sạch nền, xem trước trong suốt, và xuất phiên bản alpha hoặc matte-backed.
- Gallery cục bộ: lịch sử theo session với metadata thời gian tạo và nỗ lực suy luận.
- Ảnh tham chiếu: kéo, thả, dán, tối đa 5 ảnh tham chiếu (ảnh) hoặc 7 ảnh (video); ảnh lớn được nén trước khi tải lên.
- Thư viện prompt: import pack prompt cục bộ, thư mục GitHub, và gợi ý prompt GPT-image.
- Di động: app bar, compose sheet, và toggle cài đặt trên màn hình nhỏ.
- Observable jobs: job đang hoạt động và gần đây được theo dõi với log an toàn và request IDs.
- SSE Multiplexing: kênh
GET /api.eventsduy nhất loại bỏ giới hạn kết nối 6 của trình duyệt khi tạo đồng thời.
npm install -g ima2-gen
ima2 setup
ima2 serveSau đó mở http://localhost:3333.
Để tạo video từ CLI:
ima2 video "mèo chơi đàn piano" --duration 5 --resolution 720p
ima2 video "animate this scene" --ref photo.png --duration 10Nếu 3333 đã bị chiếm, ima2-gen sẽ tự động chọn port tiếp theo và ghi URL thực tế vào ~/.ima2/server.json. Sử dụng ima2 open hoặc URL hiển thị trên terminal thay vì giả định port.
macOS:
curl -fsSL https://lidge-jun.github.io/ima2-gen/install-mac.sh | bashWindows (PowerShell):
irm https://lidge-jun.github.io/ima2-gen/install-windows.ps1 | iexLinux / WSL:
curl -fsSL https://lidge-jun.github.io/ima2-gen/install-linux.sh | bashMỗi script sẽ kiểm tra nvm/fnm/brew/winget, cài Node LTS qua phương pháp khả dụng tốt nhất, và tự động xử lý dọn dẹp tiến trình cũ.
npx ima2-gen serveXem docs/NPX_QUICKSTART.md cho quy trình npx đầy đủ.
- Node.js >= 20 (khuyến nghị LTS)
- npm (đi kèm Node.js)
- Tài khoản ChatGPT (cho GPT OAuth) hoặc tài khoản xAI/Grok (cho Grok OAuth)
npm install -g ima2-genima2 setupBốn lựa chọn:
- GPT OAuth — đăng nhập bằng tài khoản ChatGPT (miễn phí, chỉ tạo ảnh)
- Grok OAuth — đăng nhập bằng tài khoản xAI/Grok (ảnh + video)
- Cả hai — GPT OAuth + Grok OAuth (truy cập đầy đủ tính năng)
- Thiết lập Web — cấu hình mọi thứ trong giao diện web
Tạo video yêu cầu Grok OAuth (lựa chọn 2 hoặc 3). Chạy ima2 grok login riêng nếu bạn đã có GPT OAuth và muốn thêm hỗ trợ video.
ima2 serveima2 status
ima2 pingnpm install -g ima2-gen@latestCtrl+C thực hiện tắt sạch — đóng database, dừng tiến trình con, và giải phóng khóa tệp.
Ưu tiên cấu hình:
biến môi trường > ~/.ima2/config.json > giá trị mặc định
File cấu hình nằm tại ~/.ima2/config.json. Các khóa có thể chỉnh sửa:
imageModels.default imageModels.reasoningEffort
apiProvider.defaultImageModel apiProvider.defaultReasoningEffort
grokProvider.plannerModel grokProvider.plannerTimeoutMs
grokProvider.defaultImageModel
log.level features.cardNews
storage.generatedDir server.port
server.host server.bodyLimit
oauth.proxyPort limits.maxRefCount
limits.maxGeneratedImages limits.maxParallel
Quản lý từ CLI:
ima2 config ls --effective # hiển thị config hiệu lực
ima2 config get log.level # đọc một khóa cụ thể
ima2 config set imageModels.reasoningEffort high
ima2 config keys --json # liệt kê tất cả khóa có thể ghi- Bình thường:
ima2 serve— yên lặng theo mặc định (URL khởi động, cảnh báo, lỗi hiển thị) - Chế độ dev:
ima2 serve --devhoặcnpm run dev— chi tiết nâng cao với request IDs, OAuth streams, node generation phases - Rõ ràng:
IMA2_LOG_LEVEL=debug ima2 serve
| Provider | Xác thực | Tính năng | Ghi chú |
|---|---|---|---|
oauth |
ChatGPT OAuth | Ảnh (tạo, chỉnh sửa, multimode, node) | Đường dẫn mặc định, không cần API key |
api |
OPENAI_API_KEY |
Ảnh (tạo, chỉnh sửa, multimode, node) | OpenAI Responses API |
grok |
Grok OAuth (progrok) | Ảnh + Video | xAI Web Search bắt buộc + planner grok-4.3 |
grok-api |
XAI_API_KEY |
Ảnh + Video | xAI API trực tiếp, cùng pipeline với grok |
agy |
Antigravity CLI login | Chỉ ảnh | Cố định 1024x1024 JPEG, tối đa 3 refs |
gemini-api |
GEMINI_API_KEY hoặc Vertex AI JSON |
Chỉ ảnh | Mô hình: nano-banana-2, nano-banana-pro |
gpt-5.4— lựa chọn cân bằng được khuyến nghịgpt-5.4-mini— mô hình mặc định hiện tại, draft nhanh hơngpt-5.5— tùy chọn chất lượng mạnh nhất (yêu cầu Codex CLI hỗ trợ)
- Viết prompt.
- Đính kèm hoặc dán ảnh tham chiếu nếu cần.
- Chọn mô hình, chất lượng, kích thước, định dạng, và kiểm duyệt.
- Tạo một ảnh, hoặc bật multimode để tạo nhiều ứng viên.
- Sao chép, tải xuống, tiếp tục từ kết quả, hoặc gửi vào Canvas Mode.
Xem hướng dẫn Prompt Studio cho các điều khiển chi tiết.
Mỗi node giữ prompt và kết quả riêng. Node gốc có thể đính kèm ảnh tham chiếu cục bộ; node con sử dụng ảnh cha làm nguồn. Job hoàn thành được ghép nối lại với node qua request ID.
Zoom, pan, đánh dấu, xóa, multiselect, grouping, undo/redo, và sticky notes. Phát hiện ảnh trong suốt, xem trước checkerboard, và xuất với alpha được bảo trì hoặc màu matte.
Ba chế độ tự động phát hiện từ số lượng ảnh tham chiếu:
- Text-to-video (0 refs): 1–15s
- Image-to-video (1 ref): 1–15s
- Reference-to-video (2–7 refs): 1–10s
SSE events: planning → submitted → progress → done hoặc error.
Import từ tệp cục bộ, thư mục GitHub, nguồn đã tuyển chọn, và gói gợi ý prompt GPT-image. Prompt đã import được lập chỉ mục cục bộ.
Danh sách endpoint đầy đủ tại docs/API.md. Các endpoint chính:
| Phương thức | Đường dẫn | Mô tả |
|---|---|---|
GET |
/api/health |
Sức khỏe server, phiên bản |
GET |
/api/providers |
Tình trạng nhà cung cấp |
POST |
/api/generate |
Tạo ảnh từ văn bản |
POST |
/api/edit |
Chỉnh sửa ảnh |
POST |
/api/generate/multimode |
Tạo multi-image SSE |
POST |
/api/node/generate |
Tạo node-mode |
POST |
/api/video/generate |
Tạo video (SSE) |
GET |
/api/events |
Kênh SSE multiplex |
GET |
/api/history |
Liệt kê ảnh đã tạo |
GET |
/api/inflight |
Job đang hoạt động |
GET |
/api/quota |
Quota/billing nhà cung cấp |
Tất cả endpoint tạo hỗ trợ chế độ async: true:
{
"async": true,
"requestId": "req_xxx",
"...": "các trường route khác"
}Trả về 202 { requestId } ngay lập tức. Sự kiện tiến trình đến qua GET /api/events.
| Lệnh | Mô tả |
|---|---|
ima2 serve [--dev] |
Khởi chạy server web cục bộ |
ima2 setup |
Cấu hình lại xác thực đã lưu |
ima2 status |
Hiển thị trạng thái config và OAuth |
ima2 doctor |
Chẩn đoán Node, package, config, và auth |
ima2 open |
Mở giao diện web |
ima2 reset |
Xóa config đã lưu |
Tham khảo đầy đủ: docs/CLI.md.
FROM node:20-slim
RUN apt-get update && apt-get install -y \
python3 make g++ ffmpeg \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install -g ima2-gen
ENV IMA2_HOST=0.0.0.0
ENV IMA2_PORT=3333
EXPOSE 3333
CMD ["ima2", "serve"]version: "3.8"
services:
ima2:
build: .
ports:
- "3333:3333"
volumes:
- ima2-data:/root/.ima2
environment:
- IMA2_HOST=0.0.0.0
- IMA2_PORT=3333
- OPENAI_API_KEY=${OPENAI_API_KEY}
- GEMINI_API_KEY=${GEMINI_API_KEY}
restart: unless-stopped
volumes:
ima2-data:docker compose up -d
# hoặc
docker build -t ima2-gen .
docker run -p 3333:3333 -v ima2-data:/root/.ima2 ima2-gen- Mount
~/.ima2sebagai volume để lưu trữ ảnh đã tạo và config qua các lần khởi động lại container. - Đặt
IMA2_HOST=0.0.0.0để server có thể truy cập từ bên ngoài container. - Để xác thực OAuth, hoàn thành
ima2 setuptrước khi khởi động container, hoặc mount thư mục~/.ima2hiện có. - Grok proxy tích hợp (progrok) chạy bên trong container trên
127.0.0.1:18645theo mặc định.
ima2-gen có thể được tích hợp vào CreatorHub làm backend tạo ảnh/video.
# Tạo ảnh qua API
curl -X POST http://localhost:3333/api/generate \
-H "Content-Type: application/json" \
-d '{"prompt": "a futuristic city skyline", "provider": "oauth", "model": "gpt-5.4"}'
# Tạo video qua API
curl -X POST http://localhost:3333/api/video/generate \
-H "Content-Type: application/json" \
-d '{"prompt": "camera pans across the city", "provider": "grok", "duration": 5}'
# Kiểm tra sức khỏe
curl http://localhost:3333/api/healthKết nối với GET /api/events để nhận tiến trình tạo real-time:
const events = new EventSource("http://localhost:3333/api/events");
events.addEventListener("phase", (e) => {
const data = JSON.parse(e.data);
console.log(`Job ${data.jobId}: ${data.phase}`);
});
events.addEventListener("done", (e) => {
const data = JSON.parse(e.data);
console.log(`Hoàn thành: ${data.filename}`);
});ima2-gen bao gồm ComfyUI bridge tại integrations/comfyui/. Xem integrations/comfyui/ima2_gen_bridge/README.md để thiết lập.
ima2 ping nói server không thể truy cập
Khởi chạy ima2 serve, sau đó kiểm tra ~/.ima2/server.json. Bạn cũng có thể chạy ima2 ping --server http://localhost:3333.
Đăng nhập GPT OAuth không hoạt động
Chạy lại ima2 setup (lựa chọn 1), xác nhận ima2 status, sau đó khởi động lại ima2 serve.
fetch failed lặp lại trên mạng proxy/VPN
Kiểm tra proxy cục bộ có thể truy cập được không. Trên mạng yêu cầu proxy, bật chế độ TUN/TURN, sau đó thử lại openai-oauth --port 10531. Nếu vẫn lỗi, đặt HTTP_PROXY và HTTPS_PROXY trong cùng terminal chạy ima2 serve. Trên Windows, kiểm tra các công cụ chặn mạng tự khởi động (bao gồm công cụ bypass DNS/fragmentation như SecretDNS).
Ảnh thất bại với API_KEY_REQUIRED
Đặt OPENAI_API_KEY hoặc cấu hình API key trước khi sử dụng provider: "api". Đường dẫn GPT OAuth mặc định vẫn hoạt động không cần API key.
Ảnh tạo trả về EMPTY_RESPONSE hoặc không có dữ liệu ảnh
Chạy ima2 doctor image-probe --json > ima2-image-probe.json và đính kèm JSON an toàn khi tạo issue. Với GPT OAuth, cũng chụp:
ima2 gen "고양이" --no-web-search --json > ima2-cat-no-search.json
ima2 gen "고양이" --json > ima2-cat-current.jsonKhông chia sẻ cookie ChatGPT, file token OAuth, API keys, raw upstream response, lịch sử prompt, hoặc base64 ảnh đã tạo.
Ảnh tham chiếu lớn bị lỗi Ứng dụng nén ảnh JPEG/PNG lớn trước khi tải lên. Chuyển đổi HEIC/HEIF sang JPEG hoặc PNG trước khi đính kèm.
Ảnh gallery cũ bị thiếu sau khi cập nhật
Chạy ima2 doctor và xem Khôi phục ảnh cũ.
gpt-5.5 lỗi nhưng các mô hình khác hoạt động
Cập nhật Codex CLI trước, sau đó thử lại. Sử dụng gpt-5.4 làm phương án thay thế ổn định.
Ứng dụng mở trên port khác
Nếu port 3333 bị chiếm, ima2-gen chuyển sang port khả dụng tiếp theo. Kiểm tra ~/.ima2/server.json. Ghi đè với IMA2_PORT=3333 ima2 serve.
Port 10531 đã bị sử dụng trên Windows
Một số công cụ bảo mật Windows chiếm port OAuth proxy mặc định. Ghi đè với IMA2_OAUTH_PROXY_PORT=11531 ima2 serve.
Xem thêm câu trả lời tại docs/FAQ.md.
git clone https://github.com/lidge-jun/ima2-gen.git
cd ima2-gen
npm install
npm run dev
npm run typecheck
npm test
npm run buildnpm run dev build UI và khởi chạy TypeScript server entry với --watch và chi tiết nâng cao.
- @lidge-jun — maintainer
- @ree9622 — moderation controls, Windows fixes, structured logging
- @Charley-Peng — API cache fix (#74)
- @philiptaron — Nix flake (#81)
- @aorying — upstream validation error surfacing
- @PARKJONGMlN — batch comparison matrix design (#80)
MIT

