Your own private, lightweight and fast booru.
Designed for organizing your local media collection, including AI-generated images (Stable Diffusion, ComfyUI, A1111/Forge). Supports ONNX models for local auto-tagging of your collection (WD14, JoyTag...). The app itself never touches the internet; online features (downloading from boorus or reverse image lookup) are handled by monloader, an optional companion.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Tag-based gallery with folder tree, favorites, saved searches, collections, related-image suggestions, and rating tags (general / sensitive / questionable / explicit) with a SFW ceiling
- Stable Diffusion metadata from A1111/Forge and ComfyUI: prompts, models, seeds, full workflows
- Local ONNX auto-tagging (WD14 SwinV2, animetimm EVA02, JoyTag, Camie v2, or any compatible model) on CPU or GPU
- Images, video, animated GIFs, plus CBZ/ZIP archives browsed as a single object with a built-in manga reader; animated hover previews on the grid
- Search with wildcards, OR, exclusions, plus filters on folder, date, size, dimensions, category, generation recipe, and more
- Keyboard-driven UI: contextual shortcuts on every page, from grid navigation to batch actions; press
?in-app for the full map - Tag management: merge duplicates, create aliases, implications, custom categories
- Image relations: declared duplicates, alternates, version chains, derivatives; near-duplicate detection with a side-by-side review session and duplicate cleanup tools
- Sources and provenance: multiple sources per image, artist commentary and note boxes, plus your own per-image notes and annotations
- Batch operations on a selection or a whole search: delete, move, add/remove tags, auto-tag, set collection or source, toggle inbox/favorite, and more
- File watcher that catches new, moved, and deleted files within seconds; multi-file browser upload; SHA-256 dedup so the same file under two paths is one image
- Inbox workflow : new images land in the inbox for review
- Multiple galleries in one instance, each with its own filesystem and database; per-gallery export/import; import data from supported booru applications
- REST API for third-party integrations, with scoped bearer tokens, an OpenAPI spec, and built-in docs
- Plugins and themes support: pair a sidecar app and it gets buttons in dedicated surfaces; drop it in the plugins (or themes) folder and monbooru launches and supervises it for you
- Monloader integration (optional) (monloader) pulls images and tags from supported boorus and galleries, and reverse-looks up your own images against boorus, similarity services (IQDB, SauceNAO), and the Hydrus Public Tag Repository to backfill tags and sources; when a matched post serves a better file than your local copy, one click replaces it in place; the PTR connection can also pull tag aliases and implications into your catalog
- Optional password login
Monbooru compiles to a single self-contained binary (~20 MB, web assets embedded) with a handful of Go dependencies. Storage is one SQLite file per gallery (no database server, no cache layer, nothing else to run). Your collection stays ordinary files and folders on disk, the database and thumbnails live in a separate data directory, so removing monbooru leaves your images exactly where they were. The UI is server-rendered with no JS framework, no frontend build step, ~300 KB of static assets total. Memory scales with the library: a fresh instance starts around 25 MB of RAM, a small library idles around 50 MB, and a million-image library settles around 500 MB, flat over time, with typical pages still rendering in a few milliseconds at that scale. The heavy features stay out of the core process: ONNX auto-tagging is disabled by default and runs in a separate worker that unloads itself when idle, and everything online (downloading, reverse lookup) lives in the optional monloader companion, so monbooru itself never touches the internet. The only external tool is ffmpeg, optional, for video and animated previews.
Monbooru is a self-hosted offline image organizer. Optional companions applications can be used for online features :
flowchart LR
web["`- Any booru or gallery supported by gallery-dl
- Direct image URL`"]
ptr["`Hydrus
Public Tag Repository`"]
sender["`**monsender**
browser extension`"]
loader["`**monloader**
downloader`"]
booru(["`**monbooru**
Your self-hosted booru`"])
web -->|browse| sender
sender -->|send URL| loader
web -->|paste URL| loader
loader -->|push images, tags, source| booru
booru -.->|lookup by hash| loader
loader -.->|reverse lookup: md5 + similarity| web
ptr <-.->|"`sync: sha256 tags + aliases + implications
contribute back`"| loader
classDef hub fill:#9d2235,stroke:#ef8f99,stroke-width:3px,color:#ffffff;
classDef tool fill:#1a1818,stroke:#9d2235,stroke-width:1.5px,color:#e8e4e2;
classDef src fill:#1a1818,stroke:#a09898,stroke-width:1px,color:#a09898;
class booru hub;
class sender,loader tool;
class web,ptr src;
- monbooru : this application; organizes, tags, and serves your collection.
- monloader : downloader; fetches files and per-post metadata (via gallery-dl) and pushes them into a monbooru gallery over the REST API; also answers monbooru's reverse lookups (boorus, IQDB/SauceNAO, Hydrus PTR) and source refetches.
- monsender : browser extension; sends the URL of the page you're currently browsing to monloader.
- monbooru-plugins : community registry; the list of third-party plugins and themes, plus the reference plugin and the starter theme to copy.
Edit the volume paths in docker/docker-compose.yml, then docker compose up -d. The app is available at http://localhost:8080.
See the monbooru documentation for help. In-app, type system: in the search bar for the syntax cheat-sheet and press ? for the keyboard shortcuts; the footer's help link opens the documentation.
Intended for local network use. This project is not designed for direct exposure to the public internet.
This section covers monbooru and its companion repos (monloader, monsender, mondocs, monbooru-plugins).
Thanks to @gary-host-laptop for sustained contributions over time. Every shipped contribution is credited in the release that ships it; see CONTRIBUTING.
This project is built on the work of others:
- htmx powers the server-rendered UI.
- SQLite, through the pure-Go modernc.org/sqlite driver, stores each gallery.
- ONNX Runtime, through onnxruntime_go, runs the auto-tagger. The models in the bundled catalog are the work of SmilingWolf (WD SwinV2 v3), animetimm (EVA02), fancyfeast (JoyTag), and Camais03 (Camie Tagger v2).
- ffmpeg decodes video for thumbnails and hover previews.
- monloader is mostly a wrapper for gallery-dl, which does the actual scraping. Reverse lookups by image similarity are answered by IQDB and SauceNAO; md5 lookups by the boorus themselves. The PTR tag lookup syncs against the Hydrus Public Tag Repository (PTR) via Hydrus Network's repository protocol; the tags, aliases, and implications it serves are the work of the hydrus community.
- monsender's in-page image detection uses code from ushiro by gary-host-laptop and behind! by kubuzetto, originally under MPL-2.0.
- The mondocs site is built with Hugo.
The full Go dependency lists are in each repo's go.mod.
The sample images in the screenshots, here, in the companion repos, and in the documentation, were downloaded from Danbooru and are the work of their respective artists, who retain all rights. They appear only to demonstrate the app; the repositories' license doesn't apply to them.





