ComfyUI on Fedora 43: Two Virtual Environments + One-Click Start (March 2026)

Illustration
ComfyUI on Fedora 43: Two Virtual Environments + One-Click Start (March 2026)
Date: March 2026
OS: Fedora 43
Goal: Keep two Python venvs (e.g., 3.12 + 3.14) for compatibility, but start ComfyUI automatically with a clean, lightweight setup.
Enterprise Delivery Operating System
This guide is part of the Enterprise Delivery Operating System series. Use these category hubs to navigate the full stack (infra → workflows → governance).
ArchitectureReference architecture for the Enterprise Delivery Operating System.
DevOps & RuntimeDeployments, services, ports, runtime operations, and repeatability.
AI Tooling & AutomationLocal AI stack, orchestration, automation, and stable workflows.
Security & CompliancePermissions, hardening, and safe defaults for local AI systems.
Observability & PerformancePerformance tuning, monitoring, VRAM/RAM budgeting, and stability.
Why keep two venvs?
AI tooling moves fast. Some nodes and wheels lag behind the newest Python, while others require it.
- Python 3.12 venv → “boring but compatible” (TensorRT/LW wheels/Lightning often happier)
- Python 3.14 venv → newest features, but more missing wheels / import issues are common
Rule: never mix installs between venvs. Always run ComfyUI from the venv you intend.
Setup: One script per venv
Create a small launcher script that:
1) switches into ComfyUI folder
2) activates the chosen venv
3) runs ComfyUI on localhost
1) Create a launcher for Python 3.12 venv
mkdir -p ~/.local/bin
cat > ~/.local/bin/comfyui-start-312.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
cd /home/x/ai/ComfyUI
source /home/x/ai/ComfyUI/.venv312/bin/activate
exec python main.py --listen 127.0.0.1 --port 8188
EOF
chmod +x ~/.local/bin/comfyui-start-312.sh
2) (Optional) Create a launcher for Python 3.14 venv
cat > ~/.local/bin/comfyui-start-314.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
cd /home/x/ai/ComfyUI
source /home/x/ai/ComfyUI/.venv/bin/activate
exec python main.py --listen 127.0.0.1 --port 8189
EOF
chmod +x ~/.local/bin/comfyui-start-314.sh
Now you can run either version without thinking:
- ~/.local/bin/comfyui-start-312.sh
- ~/.local/bin/comfyui-start-314.sh
Autostart: systemd user service (best option)
This starts ComfyUI at login, restarts on crash, and stays minimal (no root, no heavy wrappers).
1) Create the user service for 3.12
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/comfyui312.service <<'EOF'
[Unit]
Description=ComfyUI (Python 3.12 venv)
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/x/ai/ComfyUI
ExecStart=/home/x/.local/bin/comfyui-start-312.sh
Restart=on-failure
RestartSec=2
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=default.target
EOF
2) Enable + start
systemctl --user daemon-reload
systemctl --user enable --now comfyui312.service
systemctl --user status comfyui312.service --no-pager
3) Logs (debug)
journalctl --user -u comfyui312.service -f
(If you also want the 3.14 service, repeat with comfyui314.service and the other script.)
One click GUI: Desktop launcher (open ComfyUI in browser)
This creates an app entry in your menu. Clicking it:
1) starts the service
2) opens the UI in your browser
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/comfyui.desktop <<'EOF'
[Desktop Entry]
Type=Application
Name=ComfyUI (Local)
Comment=Start ComfyUI and open the UI
Exec=sh -lc 'systemctl --user start comfyui312.service; xdg-open http://127.0.0.1:8188'
Icon=utilities-terminal
Terminal=false
Categories=Graphics;AI;
EOF
Notes that prevent common mistakes
- If you see pip installing into ~/.local/..., you’re not in the right venv (or you didn’t activate it).
- If a node fails with pkg_resources missing → install setuptools inside the chosen venv:source /home/x/ai/ComfyUI/.venv312/bin/activatepython -m pip install -U pip setuptools wheel
- TensorRT node failures are normal on newer Python builds: if you don’t need it, disable that custom node folder.
Next reads
If you want to go deeper, these guides connect directly to the setup above:
ComfyUI nodes: dependency fixes (Lightning, pkg_resources, ffmpeg)Fix common node import failures and keep your ComfyUI stack stable across updates.
Two venvs, two ports, zero confusionRun multiple ComfyUI instances cleanly: ports, services, and predictable profiles.
VRAM budgeting: what actually reduces OOMPractical VRAM tactics: attention modes, model sizes, batching, and real-world limits.
Local AI hardening: permissions, sandboxing, and safe defaultsReduce risk on local AI systems: file permissions, service isolation, and safer defaults.
Tradeoffs (quick)
systemd user service
- ✅ stable, auto-restart, low overhead, clean
- ⛔ needs initial setup once
desktop launcher
- ✅ one click workflow
- ⛔ still depends on the browser UI
two venvs
- ✅ best of both worlds (compat + latest)
- ⛔ you must keep ports/services separated to avoid confusion
Related Articles
force-install-package-in-virtualenv
Mastering the Command Line: A Comprehensive Guide to the Find Command
Unlock the full potential of the Linux find command. This guide covers syntax, extended examples, and technical details for efficient file management.

Techniques for creating SHA512 password hashes with doveadm
Detailed guide for securely generating SHA512 password hashes from the command line using the Dovecot tool doveadm. This article is intended for system administrators and developers.