No description
- Rust 89.2%
- Lua 8.9%
- Python 1.3%
- Just 0.3%
- Meson 0.2%
- Other 0.1%
|
Some checks failed
qa / qa (push) Failing after 2m17s
Recent Forge builds removed `/sdapi/v1/sd-vae` and route VAE discovery through `/sdapi/v1/sd-modules` (which also covers text encoders, so the shape doesn't match the old VAE-only response). On those builds `list_vaes` returned 404 and the dropdown collapsed to just "Automatic" — every VAE the user had downloaded, including FLUX's `flux-ae.safetensors`, was invisible. Try the legacy endpoint first to keep older Forge installs working, then fall back to the Loom extension's `/loom/list_files?subdir=VAE` endpoint (already used by the FLUX module picker). The fallback returns raw filenames, which is what Forge's `sd_vae` setting accepts on these newer builds anyway. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| build-aux | ||
| crates | ||
| data | ||
| docs | ||
| extensions | ||
| plugins | ||
| po | ||
| specs | ||
| .gitignore | ||
| .rumdl.toml | ||
| .rusty-hook.toml | ||
| .tarpaulin.toml | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CLAUDE.md | ||
| justfile | ||
| LICENSE | ||
| logo.png | ||
| meson.build | ||
| meson.options | ||
| nfpm-tui.yaml | ||
| nfpm.yaml | ||
| PKGBUILD | ||
| README.md | ||
| tombi.toml | ||
Loom
AI image generation desktop client for GNOME, built with Rust, GTK4/libadwaita, and a Lua plugin system.
Features
Generation
- Text-to-image and image-to-image generation
- Inpainting with a built-in canvas mask editor
- ControlNet support (pose, depth, canny, etc.)
- Generation queue with progress tracking
- Configurable presets (model, sampler, CFG, steps, aspect ratio, LoRAs)
Browsing and Discovery
- Model and LoRA browser with search, preview images, and one-click install
- CivitAI and Hugging Face integration for browsing community models
- IP-Adapter support for image-guided generation
AI-Assisted Workflow
- Prompt enhancement via Ollama or Claude Code
- Entity descriptions and face detection
- Image defect detection and region analysis
- Tag generation from images
Organization
- Gallery with SQLite persistence, folders, search, filtering, and favorites
- Entity system for characters, poses, and places with per-style prompts
- Presets for saving and reusing generation configurations
- System prompts for AI enhancement customization
Sharing
- Share images to Mastodon, Pixelfed, and Bluesky
- CivitAI image sharing
Extensibility
- Lua plugin system with capability-based routing
- Hot-swappable backends — switch between local and cloud providers
- Host API for plugins: HTTP, JSON, config, storage, caching, logging
Supported Backends
| Plugin | Type | Description |
|---|---|---|
| Stable Diffusion | Local | A1111/Forge API — full feature set including ControlNet, scripts, upscalers |
| ComfyUI | Local | ComfyUI API — node-based workflow generation |
| CivitAI | Cloud | Browse models/LoRAs, cloud generation, image sharing |
| Stability AI | Cloud | Stability AI generation API |
| Hugging Face | Cloud | Browse models, inference API generation |
| Gemini | Cloud | Google Gemini and Imagen API |
| Ollama | Local | Prompt enhancement, entity description, defect detection |
| Claude Code | Local | AI-powered prompt enhancement and image analysis |
| Mastodon | Cloud | Share images to Mastodon and Pixelfed |
| Bluesky | Cloud | Share images to Bluesky |
Installation
Flatpak
flatpak install flathub app.jacquin.loom
Arch Linux (AUR)
yay -S loom
Prebuilt Packages
Download .deb, .rpm, .apk, or AppImage from the
latest release.
Build from Source
Dependencies:
- Rust (edition 2024)
- GTK4 and libadwaita development libraries
- OpenSSL
# Arch Linux
sudo pacman -S gtk4 libadwaita openssl
# Ubuntu/Debian
sudo apt install libgtk-4-dev libadwaita-1-dev libssl-dev
# Fedora
sudo dnf install gtk4-devel libadwaita-devel openssl-devel
Build and run:
git clone https://forge.jacquin.app/charles/loom.git
cd loom
just setup # Install dev tools + git hooks
just run # Run in debug mode
For a release build:
just build-release
The binary is at target/release/loom-gtk.
Development
just run # Debug mode (RUST_LOG=loom=debug)
just build # Debug build
just build-release # Release build (opt-level=3, LTO, strip)
just test # Run tests
just lint # Clippy + TOML + Markdown lints
just fmt # Format all (Rust + TOML)
just qa # Full quality check (fmt + lint + test)
just coverage # Test coverage report
Architecture
Loom is split into two crates:
- loom-core — toolkit-agnostic business logic library (plugin system, models, SQLite storage, generation worker). Could power alternative frontends (KDE, TUI, CLI).
- loom-gtk — GNOME frontend built with GTK4, libadwaita, and relm4.
Backends are Lua plugins that communicate with the core via a capability-based bridge. See CLAUDE.md for detailed architecture and conventions.
Repository
The primary repository is hosted on forge.jacquin.app with CI/CD and releases. A read-only mirror is available on Codeberg.
Issues, pull requests, and releases are managed on the primary instance.