Ben_Kosytorz e5db9bc425 feat(api): add model loading, unloading, and uploading endpoints
This commit introduces new API endpoints for managing AI models:
- /models/{model_name}/load: Load a specific model into memory with validation
- /models/{model_name}/unload: Unload a specific model from memory
- /models/upload: Handle model file uploads via multipart form data

The implementation includes proper error handling, model existence validation, and integrates with the existing model manager system. The endpoints return structured JSON responses indicating success or failure states.

The changes also update dependencies to include actix-multipart and futures-util for handling multipart requests, and add path handling utilities for file operations.
2026-03-03 17:34:37 +01:00
2026-03-02 23:30:14 +01:00
2026-03-02 22:27:15 +01:00

ComfyUI-like Framework - Rust & React Implementation with ROCm Support for RX 9070 XT

Project Overview

This project implements an AI image/video generation tool inspired by the node-based workflow editor of Stable Diffusion Web UI. Built as a modern web application using:

  • Backend: Pure Rust (Actix-web framework)
  • Frontend: React + TypeScript with Node graph visualization (currently having TypeScript version conflict)
  • New Frontend Alternative: Native Rust frontend using egui
  • GPU Acceleration: ROCm integration for AMD RX 9070 XT GPU

Key Features:

  1. REST API for model inference requests
  2. 🔄 ROCm integration on AMD RX 9070 XT GPU
  3. ⚙️ Task queue system using Tokio async runtime (Rayon parallelism)
  4. 💾 File upload/download support with session management

Architecture Design:

┌─────────────────────┐    WebSocket     ┌──────────────────┐
│  React Web Frontend │◄═══► progress   │ Rust Backend API ├─▶ ROCm GPU (RX9070XT)
│ - Node Graph Editor |                    ├── Inference Queue|
│ - Workflow Builder  |                      ◄──── Models      |
╰─────────────────────╯    REST/JSON     └────────┬──■═══►
                                           │    
                                       Session/JWT Auth   

Setup Instructions

Prerequisites:

  • Rust toolchain (cargo)
  • Node.js & npm/yarn/pnpm
  • AMD ROCm installed for RX 9070 XT GPU acceleration
# Install dependencies if needed on Linux/AMD systems:

sudo apt-get update && sudo apt install -y build-essential cmake ninja-build libopenblas-dev

ROCm installation (run as user with appropriate permissions):
wget https://repo.radeon.com/amd-install/latest/install.sh  
chmod +x amd-install/install.sh
./amd-install/install.sh --no-dkms  # Skip DKMS if AMD driver is already installed system-wide for RX9070XT  

# Verify ROCm installation:
rocminfo    # Should show your GPU info including "gfx900" or similar architecture

Backend Setup (Rust):

cd backend  
cargo build --release  # For production builds, use release mode for better performance on AMD GPUs  

# Run the backend server:
./target/release/comfyui-backend-server [port]

Backend runs at: http://localhost:[PORT]
API endpoints available after starting.

Frontend Setup (React - currently has TypeScript conflict):

cd frontend  
npm install  # Install dependencies

Run dev mode with hot reload and AMD GPU preview support:
yarn start  

# Production build for deployment on ROCm systems: 
RUST_AMD_ROCM_PATH=/usr/local/AMDROCmlib yarn run prod-build && npm run serve

New Rust Frontend Setup (egui):

cd rust-frontend  
cargo run  # Run the egui-based frontend

# Build for release:
cargo build --release

Project Structure Overview:

Rust Backend (backend/src):

- src/main.rs            # Entry point & server configuration  
  - Actix-web app setup, CORS middleware for frontend access
  
src/
├── api/mod.rs          # REST API endpoint handlers (inference requests)
   POST /api/infer     # Start inference on ROCm GPU

 ├── models/           # ML model loading and management
     └── stable_diffusion_loader.cpp  

 ├─ queue_service       # Task Queue using Tokio + Rayon for parallel tasks  
  - Parallel task scheduling across available CPU cores & AMD threads
  
├── rocminfo.rs        # ROCm GPU detection on RX9070XT hardware 
                      
 └──── session_manager   JWT/Session authentication middleware  

Original Frontend Web App (frontend/src):

src/
 ├─ components/node-editor.tsx    // Node-based workflow editor (graph canvas)
  - Drag & drop node positioning on AMD GPU-aware preview panel
  
├── store/graph-store.js         # Redux state management for nodes
│                              │

 └──── utils/api-client          API calls to Rust backend server  

New Rust Frontend (rust-frontend/src):

src/
├── main.rs            # Main application entry point
├── node_editor.rs     # Node-based workflow editor implementation
├── node_panel.rs      # Panel for selecting and managing nodes  
├── preview_pane.rs    # Preview pane for image results
└── api_client.rs      # Backend API communication layer

ROCm Integration Notes:

Key Components:

  • tokio async runtime: Handles concurrent inference tasks efficiently
    • Parallelism configured based on AMD GPU thread count (RX9070XT)
// Example configuration from backend/src/config.rs

pub struct Config {
    pub gpu_backend_config = RocmConfig { // ROCm detection for RX900 series GPUs
    

Development Workflow:

  1. Model Preparation:

    • Download/prepare Stable Diffusion checkpoints (.safetensors)
  2. Backend API Testing:

curl http://localhost:8080/api/infer \
  --header "Content-Type: application/json" \ 
--data '{"prompt":"A futuristic cityscape","negative_prompt":"","guidance_scale":7,"steps":20}'
  1. Web Frontend Usage:

  2. ROCm GPU Acceleration is automatically detected and used when available.

API Endpoints:

Backend REST API

  • GET /health - Health check endpoint
  • GET /system-info - Get system and GPU information
  • POST /infer - Start a new inference task
  • GET /models - List all available models
  • GET /tasks/{task_id} - Get status of specific task
  • GET /tasks - List all tasks

Example Request:

curl http://localhost:8080/api/infer \
  --header "Content-Type: application/json" \ 
  --data '{"prompt":"A futuristic cityscape","negative_prompt":"","guidance_scale":7,"steps":20}'

Troubleshooting:

Common Issues with Ryzen/AMD Setup:

  1. Permission denied accessing /dev/kfd → Add user to render, video groups
sudo usermod -aG render,audio $USER && sudo gpasswd --add $(whoami) audio

  1. ROCm not detected: Check AMD driver version for RX9070XT:

rocminfo | grep gfx900 # Should show architecture detection

```bash
# Reboot after installing/updating drivers  
sudo reboot  


## License & Contributing:

This project follows open-source best practices with community contributions welcome.

---

**Built specifically to leverage AMD RX9070 XT GPU capabilities through ROCm framework for accelerated AI inference.**
Description
Vibecoded Webui for picture generation with ai.
Readme GPL-3.0 3.6 GiB
Languages
Rust 100%