Skip to content

Latest commit

 

History

102 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ComfyUI Mobile Frontend

An experimental dedicated mobile-first frontend for ComfyUI.

Warning

This project was almost entirely vibecoded with claude code, codex and gemini cli. It is still a work in progress, and currently doesn't support all custom nodes automatically. Don't be surprised if it breaks!

Introduction

This project operates as a ComfyUI Custom Node that serves a modern mobile user interface. It is designed to make using ComfyUI easy and accessible from your phone or tablet.

Since the original goal of making generation accessible at all on mobile was achieved, the project has turned in a more ambitious direction - Why stop at just making ComfyUI baseline functional on mobile? The mobile interface should be able to completely replace the desktop graph-interface for ComfyUI!

Why?

Look, I like ComfyUI. It is a great tool and without it I probably wouldn't have gotten into AI in the first place. But man, is it a pain in the ass to use! (IMO)

I can see why some people like the graph interface. It's cool to see a solid workflow and the masterful craft that goes into making its graph look like a work of art. But I don't really give a shit about that most of the time. Most of the time, I just want to get from point A to point B and iterate repeatedly, and in cases like that the graph usually just gets in the way. try to scroll, oops now I'm zoomed way in or out. try to pan and oops, I just dragged this random node out of its position into a mess of other nodes. Maybe the graph interface is user friendly to some, but it sure ain't to me.

I just want to scroll through a workflow and easily and intuitively get to where I'm trying to go, change the thing I want to change, hit enqueue again, and then think about what to iterate on next. I want to be able to look at my outputs and see what settings I tweaked on them with a glance, and pull them right back into my workflow if needed. I want the feedback loop between iterations to be as fast and frictionless as possible.

So this mobile frontend is my attempt at improving upon the user experience of ComfyUI for myself and anyone else who agrees with me that the desktop interface is not their cup of tea. Let's make AI even more accessible now, shall we?

Features

☑️ Mobile-Optimized Interface: A responsive UI designed specifically for touch devices

  • tap, scroll, and swipe to navigate your mobile ComfyUI workspace
    • v3.0.0 introduces some improvements for desktop support as well, but desktop support still has a ways to go

☑️ Workflow Editor: Browse, fold, and edit nodes groups, and subgraphs

  • load and save workflows from anywhere, whether on your server, pasted from your clipboard, or out of a generated image
  • keep multiple workflow tabs open at once and switch between them without losing state
  • add or delete nodes, and edit connections directly from the mobile UI
  • navigate by traversing connections between nodes and jumping to bookmarks
  • easily hide parts of your workflow you don't need to see
  • reposition nodes, groups, and subgraphs in the mobile layout with drag-and-drop
  • drill into subgraphs from a placeholder node and edit inner nodes with a breadcrumb navigation bar
  • widget controls on subgraph placeholder nodes (promoted and proxy widgets rendered and editable inline)
  • organize your saved workflows into folders, and bookmark or hide them to cut the clutter

☑️ Workflow Runner: Trigger generations and monitor progress through your queue

  • WebSocket integration for live status and progress monitoring.
  • Follow the queue to take your hands off the wheel or focus on quickly iterating on a pinned widget
  • infinite-generation mode that auto-queues the next run (per-workflow, with a safety stop for fixed-seed loops)
  • automatic reconnect when the backend drops, plus recovery of jobs lost to a ComfyUI restart
  • scroll through generation history and load or copy workflows of anything you want to iterate on

☑️ Media Viewer: Full-screen viewer with convenient controls and familiar gesture support

  • support for images and videos
  • inspect image metadata (just a few core attributes for now)
  • mark outputs as favorites so you can find them with filters later
  • download outputs directly to your device with one click
  • Load workflows from images, or pull images directly into workflows as inputs, hassle-free

☑️ Outputs/Inputs Browser: Inspect your server's outputs and inputs folders

  • search/filter/sort your outputs or inputs — including search by the prompt baked into an image
  • perform bulk operations like moves, deletes, and downloads (range-select a whole run at once)
  • download outputs to your device (iOS share sheet for saving to Photos/Files)
  • add files to favorites for quick access later

☑️ LoraManager Support: First-class support for LoraManager nodes and websocket integration

  • a rich model/LoRA picker with thumbnails, version, and base-model badges (works with or without LoRA Manager)

☑️ Custom Nodes Manager: Browse, install, update, enable/disable, and uninstall custom nodes from the app

☑️ Dark Theme: A slate/cyan dark UI tuned for mobile

Planned Features

  • Better Custom Node Support
  • Expanded Workflow Editing Capabilities
    • delete nodes from a workflow
    • create new nodes in a workflow (via fuzzy search)
    • move nodes in/out of groups/subgraphs
    • modify connections between nodes
    • navigate into and edit subgraph inner nodes
    • load multiple workflows at once (workflow tabs)
    • full subgraph creation and editing support
  • ComfyUI Manager support (custom nodes manager)
  • Auto-positioning of nodes/Compatibility with desktop FE's graph interface
  • Integration of Civitai model metadata
  • Integration of Huggingface model metadata
  • Security/Multi-User Mode (manual opt-in)
    • Enable multiple users with separate workflows/models/inputs/outputs
    • Password authentication
    • Admin interface for user/model/resource management
    • Parental controls
    • Keyword/whitelist/blacklist based rule management

Screenshots

Workflow Panel

Workflow Panel Multiple Tabs Confirmation Dialog
Bookmarks + Pins Pinned Widget Editor Model Picker + Connections
Node Menu Workflow Actions
Responsive Behavior for Desktop (WIP)

Queue Panel & Media Viewer

Full-Screen Viewer Queue Item Menu Queue Panel Menu
Prompt Preview/Diff Re-enqueue

App Menu & Settings

Main Menu Preferences Feedback Form
Custom Nodes Manager

Inputs / Outputs Panel

Inputs / Outputs Panel Multiple Tabs Panel Menu
Filter + Sort Select Mode Selection Menu
Move Menu
Responsive Behavior for Desktop (WIP)

Installation

This project is installed as a standard ComfyUI Custom Node. Search for it in the ComfyUI-Manager by name (ensure author is cosmicbuffalo) or follow the steps below for a manual installation:

  1. Navigate to your ComfyUI custom_nodes directory:
    cd /path/to/ComfyUI/custom_nodes/
  2. Clone this repository:
    git clone https://github.com/cosmicbuffalo/comfyui-mobile-frontend.git
  3. Restart ComfyUI.

Usage

Once installed and ComfyUI is running, you can access the mobile interface by navigating to:

http://<your-comfyui-ip>:8188/mobile

Note: Replace <your-comfyui-ip> with the actual IP address of your computer if accessing from a mobile device on the same network. The build output is served from dist/ at /mobile (or /mobile/index.html).

Important

Don't forget to add the --listen flag to your ComfyUI startup command to make your ComfyUI instance accessible to other devices on your LAN

Tip

For noticeably faster loads — especially over Wi-Fi dead zones, cellular, or remote access through a VPN/tunnel — also add ComfyUI's --enable-compress-response-body flag. ComfyUI's node definitions (/object_info) can be several megabytes once you have a few custom node packs installed, and this flag serves them (and other large JSON responses, like queue history) gzipped, typically ~10x smaller on the wire. Images and videos are unaffected. The mobile frontend takes advantage of it automatically; no app configuration is needed.

LoRA Manager UI Integration

This mobile frontend supports LoRA Manager nodes and websocket integration. The integration will work mostly out of the box, but the "Open LoRA Manager" action assumes by default that your LoRA Manager is running at /loras on the same host. If this is not the case, you can override the default assumption using one of the two methods:

  1. VITE_LORA_MANAGER_UI_URL environment variable (build-time, run npm run build in the custom node directory to apply this change)
  2. localStorage["comfyui-mobile-lora-manager-ui-url"] override

Warning

These override methods were not thoroughly tested in development, good luck and feel free to PR any improvements

Development

If you want to contribute or modify the frontend, you'll need Node.js installed. See CONTRIBUTING.md for the pull-request checklist and the required localization updates for new or changed user-facing text.

Setup

  1. Navigate to the node directory:
    cd custom_nodes/comfyui-mobile-frontend
  2. Install dependencies:
    npm install

Running Locally

You can run the frontend in development mode with hot-reloading. This requires a running instance of ComfyUI for the API backend.

npm run dev

The dev server will proxy API requests to localhost:8188 by default. If your ComfyUI instance is on a different port, update the proxy configuration in vite.config.ts.

If you are working on a remote machine, prefix the dev server command with COMFY_HOST:

COMFY_HOST=<your-comfyui-ip> npm run dev

Testing

npm test          # vitest, the frontend unit suite
npm run lint      # eslint
npx tsc -b        # type-check (note: `tsc --noEmit` checks nothing here)

Backend tests are pytest, run from this directory with an interpreter that has ComfyUI's dependencies available:

python -m pytest tests/ -q

There is also an end-to-end smoke test that drives a real browser against a running ComfyUI — it loads a workflow, runs generations, and exercises the queue cards, file state, downloads, and video playback. Worth running before a release, since it covers what unit tests structurally cannot:

npm i -D playwright               # once; deliberately not a project dependency
npx playwright install chromium   # once
npm run smoke

See SMOKE_TEST.md for what it checks, what it deliberately does not, and what it changes on your server.

Building for Release

To build the production version of the frontend (which is what ComfyUI serves at :8188/mobile/):

npm run build

This compiles the React application into the dist/ directory, which the Python backend serves. The build also emits precompressed .br (brotli) and .gz siblings next to each asset; the backend negotiates these automatically and serves the content-hashed assets with long-lived immutable cache headers, so the app loads fast and repeat visits hit the browser cache.

Upgrading from an earlier version? The asset-serving route and cache headers changed in 3.0.0. Restart ComfyUI after upgrading so the new serving logic and immutable caching take effect (a browser hard-refresh may also be needed to clear any previously-cached index.html).

License

MIT

About

The best way to use ComfyUI on mobile - Native iOS app and rebrand coming soon!

Resources

Contributing

Stars

67 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages