Welcome to RuleDesk! This guide will help you get started and use all the features of the application.
- Installation
- First Launch
- Getting Your API Credentials
- Basic Usage
- Features
- Navigation
- Settings
- Statistics Dashboard
- Troubleshooting
Tagged Releases ship pre-built binaries for Windows and Linux only. CI builds each platform on its native runner so the native better-sqlite3 module matches the target OS.
| Platform | Release artifact | Status |
|---|---|---|
| Windows | RuleDesk-<version>-win.zip |
✅ Published on every v* tag |
| Linux (x64) | RuleDesk-<version>.AppImage |
✅ Published on every v* tag |
| macOS | — | ❌ Not distributed (see below) |
- Download
RuleDesk-<version>-win.zipfrom the Releases page - Extract the archive
- Run
RuleDesk.exe
Application data is stored in the same location as the dev build (%LOCALAPPDATA%/.rdcache on Windows). Updates: use Download in the in-app notification to open the latest release on GitHub.
- Download the
RuleDesk-<version>.AppImagefile from the Releases page - Make it executable:
chmod +x RuleDesk-*.AppImage - Run it:
./RuleDesk-*.AppImage
Notes:
- AppImage bundles the app; no system-wide install is required.
- Some distributions need FUSE (
libfuse2) to run AppImages. If launch fails, install your distro'slibfuse2/fusepackage and retry. - Application data:
~/.config/.rdcache/(same as a local dev build on Linux).
macOS .dmg installers are not published. Reasons:
- Apple code signing and notarization are required for a smooth “open from Downloads” experience on modern macOS.
- That needs a paid Apple Developer account, signing certificates, and extra CI secrets/maintenance.
The Electron app can still be built from source on a Mac (npm install && npm run dev, or electron-builder --mac locally), but GitHub Releases do not include a macOS binary. Use Windows or Linux releases, or build from source.
Clone the repo, run npm install, then npm run dev. See README — Development Setup for the full gate (validate, tests, native rebuild notes).
When you first open RuleDesk, you'll see the Onboarding screen. This is where you'll enter your API credentials.
RuleDesk needs your Rule34.xxx account credentials to fetch posts. These credentials are:
- User ID - Your account ID number
- API Key - A special key that allows RuleDesk to access the API
Don't worry - these credentials are encrypted and stored securely on your computer. They're never sent anywhere except to Rule34.xxx's API.
-
Open your web browser and go to:
https://rule34.xxx/index.php?page=account&s=options -
Log in to your Rule34.xxx account (if you're not already logged in)
-
Scroll down to the "API Access" section
-
Copy your credentials:
- User ID - The number next to "User ID"
- API Key - The long string next to "API Key"
-
Paste them into RuleDesk:
- You can paste the entire URL from the account page, and RuleDesk will automatically extract the credentials
- Or manually enter them in the fields
-
Click "Save and Login"
That's it! You're now ready to use RuleDesk.
What is "tracking"? Tracking means RuleDesk will automatically check for new posts from specific artists or tags.
How to add an artist:
-
Click the "Artists" button in the sidebar (left side of the screen)
-
Click the "+ Add Artist" button (top right)
-
Fill in the form:
- Name - A friendly name for this artist (e.g., "My Favorite Artist")
- Tag - The tag or username to track (e.g., "artist_name" or "tag_name")
- Type - Choose:
- Tag - Track posts with this tag
- Uploader - Track posts uploaded by this user
- Query - Track posts matching a custom query
- Source - Choose which site to use (Rule34.xxx or Gelbooru)
-
Click "Add"
The artist will appear in your tracked list!
Tip: You can use the search box to find tags. Type a few letters and RuleDesk will suggest matching tags.
What is synchronization? This is when RuleDesk downloads new posts from the website and saves them to your local database.
How to sync:
-
Click the "Sync All" button in the sidebar (top of the sidebar, with a refresh icon)
-
Wait for the sync to complete. You'll see progress messages like:
- "Syncing artist_name..."
- "Found 15 new posts"
- "Sync complete!"
-
The sync runs in the background, so you can continue using the app while it syncs
Automatic sync (optional):
- Open Settings (sidebar) → Sync
- Enable Sync on startup if you want a full sync every time the app starts
- Set Sync interval to run background sync while the app is open (or leave Disabled and use Sync All in the sidebar when you want)
You can still run Sync All manually at any time; automatic runs use the same engine and rate limits.
To view posts from a tracked artist:
- Go to "Artists" page
- Click on an artist card
- You'll see a gallery of all their posts
In the gallery:
- Scroll down to see more posts (they load automatically)
- Click on a post to open it in full-screen viewer
- Use arrow keys (← →) to navigate between posts
- Press Esc to close the viewer
Post information:
Each post card shows:
- Preview image
- Rating badge (Safe/Questionable/Explicit)
- Media type icon (image or video)
- Viewed indicator (if you've already seen it)
- Favorite star (if you've favorited it)
Search for artists locally:
- Go to "Artists" page
- Use the search box at the top
- Type the artist name or tag
- Results appear as you type
Search for tags remotely:
- When adding an artist, start typing in the "Tag" field
- RuleDesk will search the website's tag database
- Select a tag from the suggestions
Search posts (chip-based):
- Go to "Browse" page
- Use the search bar in the top bar
- Enter a token and commit it with Enter, comma, or space
- Each committed token becomes a chip and is applied to search
Syntax help popover:
- Click the help icon (
?/ CircleHelp) next to the search input to open the in-app syntax cheat sheet.
Supported query syntax in the search bar:
tag1 tag2via two include chips (default AND behavior)-tag1(exclude). You can:- type it directly as a token (for example
-blonde_hair), or - add a normal chip and right-click it to toggle include/exclude
- type it directly as a token (for example
( tag1 ~ tag2 )as an OR group token (spaces inside parentheses are required)- wildcard and fuzzy forms are passed through (examples:
ta*1,night~) - supported metatags include examples like:
user:bobmd5:foo/md5:foo*parent:1234rating:questionable/-rating:questionablescore:>=10,width:>=1000,height:>1000aspectratio:16:9,aspectratiof:1.5sourcedomains:example.com
Notes:
- The clear button in the search bar clears tag chips.
- Click a chip to put it back into the input for editing; right-click still toggles include/exclude.
- The search area in the top bar uses the available width before action buttons and can grow to a second chip row when the first row is full.
- Infinite scroll: on Browse with Source: All, scroll down to load more posts from the booru API (50 per batch; RuleDesk continues past the API offset cap automatically).
- API failures vs empty results: a genuine empty search shows the “no posts” empty state; auth, rate-limit, network, or parse failures show a centered error screen with Retry (and Open Settings when credentials are invalid).
- Browse source modes Favorites / Subscriptions query your local cache and require a non-empty tag query by design.
What are favorites? Mark posts you like so you can easily find them later.
How to favorite a post:
- Open a post in the viewer (click on it)
- Click the star icon (⭐) in the viewer controls
- Or press F on your keyboard
View your favorites:
- Click "Favorites" in the sidebar
- You'll see all your favorited posts
Remove from favorites:
- Open the post
- Click the star icon again (or press F)
- The star will turn gray (unfavorited)
Use playlists to organize posts outside of tracked artists.
Manual playlists:
- Open Playlists in the sidebar
- Click New Playlist
- Select Manual Playlist
- Open any post and add it via the playlist menu
Smart collections:
- Open Playlists -> New Playlist
- Select Smart Collection
- Add include/exclude tags
- Save - posts are resolved automatically from local cache and provider API
Reorder manual playlists:
- Open a manual playlist gallery
- Drag and drop cards to reorder
- Order is saved automatically
Transfer playlists (backup/share):
- Use Export Playlist on a playlist card to save JSON file
- Use Import Playlist in the Playlists header to restore from JSON
- Smart collection rules are preserved during import/export
Download a single post:
- Open the post in the viewer
- Click the "Download Original" button (download icon)
- Choose where to save the file
- Click "Save"
The download will start, and you'll see a progress indicator.
After downloading:
- Click "Open in Folder" to see the downloaded file
- The file will be saved with its original filename
Note: Downloads are saved to your chosen location, not in the app's cache.
Filter by source:
- In views that show the filter panel, open the top bar Filters control
- Choose All (live booru API), Favorites (local cache), or Subscriptions (local cache, tracked artists/tags)
- Gallery updates automatically
Filter by media type:
- Click "Filters" in the top bar
- Choose "Images" or "Videos"
- Gallery updates automatically
Sort posts:
- Use the dedicated date sort button in the top bar (outside Filters)
- Click to toggle between newest-first and oldest-first where sorting is available
Filter by tags:
- Open a post in the viewer
- Click the "Tags" button (or press T) to open the tags drawer
- Click a tag to include it in the search query; right-click to add an exclude (
-tag); included/excluded tags are highlighted (green / red rings) in the drawer - The gallery or browse view updates to match the query in the top bar
Clear filters:
- Click the "Clear Filters" button in the top bar
- Or manually remove filters from the tags drawer
Why mark posts as viewed? This helps you keep track of what you've already seen, so you can focus on new content.
Mark a post as viewed:
- Open the post in the viewer
- Press V on your keyboard
- Or click the "Mark as Viewed" button
Visual indicator:
- Viewed posts show a small badge/indicator on the post card
- This helps you quickly see what's new
Mark all as viewed (Updates feed):
- Open Updates in the sidebar
- In the Feed tab, click Mark all read in the top bar to mark every post currently shown in the feed as viewed
RuleDesk has a sidebar on the left side with the main sections:
- Updates - See new posts from your tracked sources. A purple badge shows unread count and auto-refreshes periodically.
- Browse - Search the live booru (Source: All) or filter cached posts (Favorites / Subscriptions); infinite scroll, filters, and sorting
- Favorites - Your favorited posts collection
- Playlists - Manual playlists and smart collections
- Statistics - Local library aggregates and charts (
/stats) - Artists - Manage your tracked artists and tags
- Settings - App configuration and preferences
Unread badge behavior (Updates):
- The badge appears only when unread count is greater than zero.
- Opening the Updates page marks all cached updates as seen and clears the badge after refresh.
- Background sync does not auto-mark updates as seen; this happens only on explicit navigation to Updates.
The top bar appears on content pages and provides:
- Search box - Search for artists, tags, or posts
- Search box behavior - Uses available width on the left side of the top bar; chips can wrap to a second row when needed
- Filters button - Open filters panel
- Sort dropdown - Change sorting order
- View toggle - Switch between grid and masonry views
- Sync status - See last sync time and progress
Use the Safe Mode control in the app shell (PanicButton) to blur sensitive ratings on gallery cards and in the full-screen viewer. Blur amount and panic state live in safeModeStore and apply in PostCard / ViewerDialog.
In the viewer:
- Esc - Close viewer
- ← / → - Previous/Next post
- F - Toggle favorite
- V - Mark as viewed
- T - Toggle tags drawer
- Mouse side buttons (Back/Forward) - Captured by viewer; trigger viewer exit flow instead of navigating background pages
Global:
- Global shortcut mappings may vary by platform/build. Use sidebar and top bar controls as the primary interaction model.
Access Settings by clicking "Settings" in the sidebar.
Settings are split into tabs:
- Default download folder - Choose a folder or reset to default
- When file already exists - Choose
SkiporOverwrite - Folder structure -
FlatorBy artist - Proxy URL - Optional HTTP/HTTPS proxy for requests/downloads
- Danger zone - Delete all data… (checkbox + confirm). Closes the DB, stops the video proxy, deletes the contents of
.rdcache, and quits. Media downloads outside.rdcacheare not removed.
- Sync on startup - Run sync automatically when app starts
- Sync interval - Disabled, 15 / 30 / 60 / 120 minutes
- Sync now - Manual sync trigger in the sidebar
- Last sync status - Relative timestamp under the sidebar sync button (
never,X min ago, etc.)
- Theme -
System,Light,Dark
- Tag blacklist - Hide posts that contain specific tags from Browse and local galleries
- Maximum 100 tags
- Tags are stored locally; pagination still uses the raw API batch size before filtering
- Create Backup - Save a timestamped backup of your database
- Restore Backup - Restore from a backup file (app reloads after success)
- Check Integrity - Verify database is not corrupted
- Auto-backup - Choose
Never,Daily, orWeekly(checked on app startup) - Retention - Older files are rotated automatically according to
Retentionvalue (backupRetention, range1..20) - Database Maintenance (VACUUM) - See last VACUUM run status/time, run VACUUM manually, and choose maintenance schedule (
Manual,Weekly,Monthly)
- Provider - Choose
rule34orgelbooru(changing provider invalidates feed query caches and saves the selection) - User ID - Shown when the selected provider needs it
- API key field - Password-style input with show/hide button
- API key status -
Configured/Not configuredbadge - Save API key - Update credentials from Settings
Important: API key is encrypted with OS-level security and bound to the current user on the current machine. If you move to another computer or another Windows account, the key cannot be decrypted and must be entered again in Settings -> Account.
- Success/error badges in Settings are temporary and auto-hide after about 5 seconds.
How to create a backup:
- Go to Settings → Backup
- Click Create Backup
- A timestamped backup file is created
How to restore a backup:
- Go to Settings → Backup
- Click Restore Backup
- Select a backup file
- Confirm restore
- The app reloads automatically
Open Statistics from the sidebar to see a quick health overview of your local library.
- Artists - how many tracked artists/sources you currently have.
- Posts - total posts stored in your local cache.
- Favorites - posts marked as favorite.
- Unviewed - posts you have not viewed yet.
- Rating Distribution - split of all posts by rating (
Safe,Questionable,Explicit). - Media Type Split - images vs videos in your local cache.
- Viewed vs Unviewed - what you've already seen vs still new.
- Favorites vs Others - favorited posts vs the rest.
- Media and Providers:
Images/Videosare post counts.rule34 artists/gelbooru artistsare artist/source counts (not post counts).
- Top Artists - artists with the most posts in your local cache.
- Technical placeholder artist
Artist 0is excluded from this list.
- Technical placeholder artist
- Top Tags - most frequent tags across cached posts.
- Database Size - current size of your local database file on disk.
- Statistics are local to your app database (not a live remote total from providers).
- After sync or bulk actions, values update when the page data is refreshed.
Problem: App says you need to enter API credentials.
Solution:
- Go to Settings
- Click "Logout" to clear old credentials
- Follow the Getting Your API Credentials steps again
Problem: Sync button doesn't do anything, or sync fails.
Solutions:
- Check your internet connection
- Verify your API credentials are correct (Settings > Logout and re-enter)
- Check if Rule34.xxx website is accessible
- Try syncing a single artist first (click on artist, then "Repair" button)
Problem: You synced but don't see any posts.
Solutions:
- Make sure the artist has posts on the website
- Check active top-bar filters (AI/media/source) that may hide posts
- Try the "Repair" button on the artist card (resyncs from beginning)
- Check the sync progress messages for errors
Problem: Scrolling Browse (Source: All) no longer loads new posts.
Solutions:
- Confirm API credentials in Settings → Account
- Clear restrictive filters (AI, media, rating, date) — client-side filters only apply to already loaded pages
- If using Favorites / Subscriptions, add at least one tag in the search bar (required by design)
- If Browse shows a centered error screen (not the empty “no posts” state), use Retry or Open Settings for auth failures — messages distinguish invalid API credentials, rate limits, and network errors
Problem: A video fails to play, stalls, or shows a broken frame after a previous interrupt.
Solutions:
- Retry opening the post (proxy may fall back to the direct CDN URL while resolving)
- If problems persist across many videos, manually delete the
video-cachefolder under.rdcacheand restart — or use Settings → General → Danger zone → Delete all data as a last resort (wipes all of.rdcache) - Known limitation: if playback still fails after an interrupt, clear
video-cacheunder.rdcache(or use Danger zone wipe). Cache writes are atomic (tmp + rename); incomplete downloads should not become hits.
Problem: After an interrupted or failed sync, later syncs miss posts that should appear.
Solutions:
- Use Repair on the artist (resync from the beginning)
- Incomplete runs set
lastSyncIncompleteand leavelastPostIdunchanged so the next sync can refill gaps. If gaps persist after a successful complete sync, use Repair.
Problem: App feels sluggish, especially with many posts.
Solutions:
- Check database location and status in Settings → Backup
- Reduce the number of tracked artists
- Use filters to reduce the number of visible posts
- Run Check Integrity in Settings → Backup
- Run Run VACUUM now in Settings → Backup (Database Maintenance section)
Problem: Download button doesn't work or files don't save.
Solutions:
- Check if you have write permissions to the download folder
- Make sure you have enough disk space
- Try choosing a different download location
- Check if your antivirus is blocking file writes
Problem: App shows database errors or won't start.
Solutions:
- Create a backup first (if app still opens)
- Try restoring from a recent backup
- If that doesn't work, you may need to delete the database and start fresh:
- Close the app
- Delete the database file (location shown in Settings)
- Restart the app (it will create a new database)
- Re-enter your credentials and re-add artists
Database locations:
The application redirects userData to a neutral .rdcache directory. Development and packaged builds use the same paths on a given machine:
- Windows:
- Database:
%LOCALAPPDATA%\.rdcache\data.bin - Logs:
%LOCALAPPDATA%\.rdcache\logs\app.log - Backup schedule:
%LOCALAPPDATA%\.rdcache\backup-settings.json
- Database:
- macOS:
~/Library/Application Support/.rdcache/ - Linux:
~/.config/.rdcache/
Note: Data is not stored next to RuleDesk.exe. You can move or replace the app folder freely; local database, logs, and settings stay under .rdcache until you delete that directory.
Delete all data (in-app): Settings → General → Danger zone → Delete all data…. Confirm with the checkbox, then confirm. The app closes the database, stops the video proxy, deletes everything inside .rdcache (database + WAL/SHM, video-cache/, logs, backup-settings.json, in-app .ruledesk-backup-*.db files, download queue, Electron cache files), and quits. Your separate media download folder is not deleted. After restart you go through the age gate / onboarding again. Prefer this over uninstalling the .exe alone — uninstall does not remove .rdcache.
Legacy (pre-fix builds): %APPDATA%\RuleDesk\ may still contain old logs/ and backup-settings.json. New builds copy them into .rdcache on first launch when targets are missing.
- Use favorites to mark posts you want to keep
- Mark posts as viewed to track what you've seen
- Use filters to find specific content quickly
- Create backups regularly to protect your data
- Limit tracked artists - More artists = longer sync times
- Use filters - Filtering reduces the number of posts to render
- Create backups periodically - Keeps recovery path simple
- Use sync interval carefully - Lower intervals increase background workload
- Start small - Add a few artists first to get familiar
- Sync regularly - Set up automatic sync for convenience
- Use favorites - Mark posts you like as you browse
- Filter effectively - Use AI/media/source filters and tag search to find what you want
- Backup often - Create backups before major changes
If you encounter issues not covered in this guide:
- Check the Troubleshooting section above
- Review the README for technical details
- Check GitHub Issues for known problems
- Create a new issue if you found a bug
Now that you know the basics, explore:
- Advanced filtering - Combine multiple filters for precise results
- Keyboard shortcuts - Speed up your workflow
- Backup strategies - Keep your data safe
- Multiple sources - Track artists from different sites (Rule34.xxx, Gelbooru)
Happy browsing! 🎨