c8c93596c8
Add ComfyUI CLI subcommand group with: - `tsr comfy status` - System stats (GPU, RAM, PyTorch, queue) - `tsr comfy queue` - Show queue status (running/pending) - `tsr comfy queue --clear` - Clear the queue - `tsr comfy models` - List available checkpoints, LoRAs, VAE, etc. - `tsr comfy history [ID]` - View generation history - `tsr comfy generate` - Text-to-image with full parameter control - prompt, negative, model, width, height, steps, cfg, seed - sampler, scheduler selection - optional --output to save locally - `tsr comfy run workflow.json` - Run arbitrary API-format workflows All commands support --json output and --url for custom server. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.3 KiB
3.3 KiB
TODO: ComfyUI CLI & API Integration
Phase 1: Core Client (tensors/comfyui.py)
- Step 1.1: Create ComfyUI client module with basic query functions
get_system_stats()- System stats (GPU, RAM)get_queue_status()- Queue statusget_loaded_models()- List loaded checkpoints/lorasget_history()- View history- Also:
clear_queue(),get_object_info(),get_image()
- Step 1.2: Add workflow execution with WebSocket progress tracking
queue_prompt()- Queue a workflowrun_workflow()- Run workflow with progress callback (uses polling)
- Step 1.3: Add simple text-to-image generation
generate_image()- Text-to-image with embedded workflow template- Include SDXL/Flux-compatible default workflow (DEFAULT_WORKFLOW_TEMPLATE)
Phase 2: CLI Commands (tensors/cli.py)
- Step 2.1: Add
comfysubcommand group with status commandstsr comfy status- System stats (GPU, RAM, queue)tsr comfy queue- Queue statustsr comfy queue --clear- Clear queuetsr comfy models- List loaded modelstsr comfy history [PROMPT_ID]- View history
- Step 2.2: Add generation commands
tsr comfy generate "prompt"- Simple text-to-image with full optionstsr comfy run workflow.json- Run arbitrary workflow- Rich progress output via console
Phase 3: Server API Routes (tensors/server/comfyui_api_routes.py)
- Step 3.1: Create new router with query endpoints
GET /api/comfyui/status- System statsGET /api/comfyui/queue- Queue statusDELETE /api/comfyui/queue- Clear queueGET /api/comfyui/models- List loaded modelsGET /api/comfyui/history- List historyGET /api/comfyui/history/{prompt_id}- Get specific result
- Step 3.2: Add generation endpoints
POST /api/comfyui/generate- Text-to-image generationPOST /api/comfyui/workflow- Run arbitrary workflow
- Step 3.3: Register router in server/__init__.py
Phase 4: Configuration (tensors/config.py)
- Step 4.1: Add ComfyUI config functions
get_comfyui_url()- Get ComfyUI backend URLget_comfyui_defaults()- Get default generation settings- Environment variable:
COMFYUI_URL - Config section:
[comfyui]
Architecture Reference
tensors/
├── comfyui.py # Core client (NEW) - shared by CLI and server
├── cli.py # Add `tsr comfy` subcommands
└── server/
├── comfyui_routes.py # Existing proxy (unchanged)
└── comfyui_api_routes.py # New programmatic API routes (NEW)
CLI Commands
tsr comfy status # System stats (GPU, RAM, queue)
tsr comfy queue # Current queue status
tsr comfy queue --clear # Clear queue
tsr comfy models # List loaded checkpoints/loras
tsr comfy history [PROMPT_ID] # View history or specific result
tsr comfy generate "prompt" # Simple text-to-image
tsr comfy run workflow.json # Run arbitrary workflow
Generate Options
tsr comfy generate "a cat" \
-n "blurry, bad" \ # negative prompt
-m "flux1-dev-fp8.safetensors" \ # model
-W 1024 -H 1024 \ # dimensions
--steps 20 --cfg 7.0 \ # sampling
--seed 42 \ # reproducibility
-o ./output.png # output path