@lowwattlabs

Vulkan LFIT

Local Free Image Tool — HD image generation on Vulkan iGPU. Zero cost, fully private. Three presets: standard (fast), background (scenes), hero (max quality).

当前版本
v1.0.5
code-plugin社区source-linked

LFIT — Local Free Image Tool

HD image generation on your Vulkan iGPU. Free. Private on default settings. On your hardware.

LFIT is for homelabbers and mini PC users who have Vulkan-capable iGPUs sitting idle. If you're running a Beelink, MinisForum, or any small-form-factor box with AMD RENOIR / Intel Arc / similar Vulkan support, LFIT turns it into a private image generation workstation with no cloud GPU rental, no API keys, no per-image cost.

How it works

LFIT talks to stable-diffusion.cpp running on your Vulkan device. SDXL base stays resident in VRAM; LoRAs are applied per-request (non-destructive, zero drift). One generation runs at a time — the server queues.

Two tools:

  • lfit — Real HD assets via your local Vulkan GPU. Private by default. Pick a preset, get a PNG.
  • lfit-quick — Fast drafts via Pollinations (free cloud FLUX). Prompts leave your machine. No GPU needed. Lower fidelity, good for iteration.

⚠️ Network & Privacy Disclosures

LFIT is private by default — local generation stays on your machine. The following features transmit data externally and require explicit opt-in:

  • lfit-quick (draft mode) sends your full prompt to Pollinations.ai over HTTPS. Your prompt text is processed on their servers. Blocked unless allowRemote: true is set in plugin config.
  • Remote SD servers (non-localhost serverUrl) send prompts and generation parameters to the configured endpoint. Blocked unless allowRemote: true.
  • Telegram auto-push sends generated PNG files to a Telegram chat when TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID environment variables are set. Blocked unless allowTelegram: true. Use --no-telegram to disable for a single generation.
  • Binary execution — the plugin runs the lfit binary from an absolute path (config, env, or bundled default). Verify binary integrity if installing from an untrusted source.

Requirements

  • stable-diffusion.cpp built with Vulkan support
  • Vulkan-capable GPU (tested on AMD RADV RENOIR; Intel/AMD Vulkan should work)
  • SDXL base model — download from HuggingFace
  • SDXL Lightning 8-step LoRA — download from HuggingFace

Install

# Clone
git clone https://github.com/lowwattlabs/lfit.git
cd lfit

# Make scripts executable
chmod +x bin/lfit bin/lfit-quick

# Add to PATH (optional)
export PATH="$PWD/bin:$PATH"

Setup the server

# Start sd-server (adjust paths to your model locations)
sd-server \
  --listen-ip 127.0.0.1 --listen-port 7860 \
  --model ~/models/sdxl/sd_xl_base_1.0.safetensors \
  --lora-model-dir ~/models/loras \
  --type f16 --vae-tiling --lora-apply-mode at_runtime

Key flags:

  • --type f16 — keeps VRAM usage sane on iGPUs
  • --vae-tiling — avoids VAE OOM at 1024+ resolutions on shared-memory architectures
  • --lora-apply-mode at_runtime — applies LoRA non-destructively per request (no cumulative drift)

Generate

# Standard — characters, items, single subjects (~2.5 min)
lfit --preset standard --prompt "a knight at a castle gate"

# Background — scenes, environments, wallpapers (~2.5 min)
lfit --preset background --prompt "misty mountain valley at dawn"

# Hero — max quality, no LoRA, full SDXL (~13 min, requires --yes)
lfit --preset hero --prompt "ancient dragon, key art" --yes

# Quick draft — free cloud FLUX, no GPU needed (~1.4s)
# NOTE: prompts are sent to Pollinations.ai
lfit-quick --prompt "concept sketch of a space station"

Presets

PresetUse forSizeStepsLoRATime
standardCharacters, items, single subjects1024×10248Lightning 8-step~2.5 min
backgroundScenes, environments, wallpapers1344×7688Lightning 8-step~2.5 min
heroMax quality final assets1024×102432None (base SDXL)~13 min

Plugin Configuration

{
  "lfit": {
    "binaryPath": "/path/to/lfit",
    "allowRemote": true,
    "allowTelegram": true
  }
}
  • binaryPath: Absolute path to the lfit binary. Defaults to bundled bin/lfit. Not PATH-resolved.
  • allowRemote: Enable network operations (Pollinations drafts, remote SD servers). Default: false.
  • allowTelegram: Enable auto-pushing generated images to Telegram. Default: false.

Important: How LoRA actually works

The sd-server ignores <lora:...> prompt tags. LoRAs must be sent as a structured "lora" JSON field in the txt2img request. lfit handles this automatically per preset. Do not add <lora:> tags to prompts — they pass through as literal text and produce blurry output.

Self-check before you ship

A correct standard or background image is sharp. If output is soft/hazy/mushy, the LoRA did not apply — that is a failure, not "just how it looks." Check the server logs for LoRA tensors have been applied.

Environment variables

VariableDefaultDescription
SD_SERVER_URLhttp://127.0.0.1:7860sd-server endpoint
LFIT_BINbundled bin/lfitOverride lfit binary path
LFIT_QUICK_BINbundled bin/lfit-quickOverride lfit-quick binary path
TELEGRAM_BOT_TOKENOptional: auto-push PNGs to Telegram (blocked by default, requires allowTelegram: true)
TELEGRAM_CHAT_IDOptional: Telegram chat ID for delivery

License

MIT

源码与版本

源码仓库

lowwattlabs/lfit

打开仓库

源码提交

9433d59

查看提交

安装命令

openclaw plugins install clawhub:@lowwattlabs/vulkan-lfit

元数据

  • 包名: @lowwattlabs/vulkan-lfit
  • 创建时间: 2026/06/08
  • 更新时间: 2026/06/09
  • 执行代码:
  • 源码标签: 9433d59

兼容性

  • 构建于 OpenClaw: 2026.6.1
  • 插件 API 范围: >=2026.5.0
  • 标签: latest
  • 文件数: 13