A nimble little mouse that scurries through MyAnonamouse (MAM) and whisks torrents into qBittorrent.
Scurry is a lightweight, self-hosted helper app built for one thing: getting ebook and audiobook torrents from MAM to qBittorrent as fast and simply as possible. Just a clean, mobile-friendly interface where you can search, tap, and send a torrent straight to your client.
Scurry is perfect for those moments when you’re away from your computer and want to quickly grab something without remote-desktop juggling or digging through the full site. It’s intentionally minimal, fast, and designed to stay out of your way.
Just search → tap → done.
Dual Fetch UI
Dual fetch allows you to fetch both ebook and audibooks at the same time in a purpose built, stream-lined UI. Simply select the "Both" option in the search.
Desktop
Mobile
- 🔎 Search MAM: Clean, responsive interface to search MyAnonamouse's extensive library
- ⚡ Freeleach Wedges: Redeem freeleach wedges before downloading and check your wedge count
- 🌟 Dual-Fetch Mode: Search and download both ebook and audiobook simultaneously with streamlined selection workflow
- 👉️ One-click Downloads: Instantly send torrents to your qBittorrent instance with a single click
- 🤝 Direct Integration: Automatically authenticates with both MAM and qBittorrent APIs
- 🔗 URL Query Support: Pre-fill searches using URL parameters (e.g.,
?q=search+term) - ⬇️ Download Management: Automatic categorization and organization in qBittorrent
- 🔐 Authentication: Simple password protection for your instance
- 🐋 Docker Ready: Easy deployment with Docker Compose
- Search: Enter your search terms in the web interface or use URL parameters (
q=term) - Browse: View search results with detailed information (seeders, size, author, etc.)
- Download: Click the download button to automatically add torrents to qBittorrent
- Organize: Torrents are automatically categorized and managed in your qBittorrent instance
Scurry will organize torrents into the following categories based on their MAM type:
- Books:
bookscategory by default - Audiobooks:
audiobookscategory by default
To take advantage of this, simply create those categories - books and audiobooks - in qBittorrent, with unique save paths.
You can override these categories with Docker environment variables:
APP_QB_BOOK_CATEGORY: qBittorrent category for ebook downloads. Defaults toAPP_QB_CATEGORY, thenbooks.APP_QB_AUDIOBOOK_CATEGORY: qBittorrent category for audiobook downloads. Defaults toaudiobooks.
Scurry supports runtime Docker configuration for the default GUI mode and result ordering:
APP_DEFAULT_SEARCH_CATEGORY:books,audiobooks, orboth. Defaults tobooks.APP_PREFER_EPUB_ONLY: whentrue, exact EPUB-only ebook results are moved to the top.APP_PREFER_M4B: whentrue, M4B audiobook results are moved to the top.
Preferred formats are not filtered; all results still appear below the preferred matches.
Scurry supports integration with mousehole for automatic MAM token management. When enabled, mousehole dynamically manages your MAM session tokens, eliminating the need for manual updates when your IP address changes.
Benefits:
- Automatic token rotation when IP changes
- No manual token updates required
- Perfect for dynamic IPs or VPN/seedbox setups
See the Mousehole Integration Guide for detailed setup instructions.
You can pre-fill search terms by adding a q parameter to the URL:
http://localhost:3000/?q=author+name- Search for a specific authorhttp://localhost:3000/?q=book+title- Search for a specific bookhttp://localhost:3000/?q=series+name- Search for a book series
This makes it easy to bookmark searches or integrate with other tools and browser extensions.
cp .env.example .env
# Install dependencies
npm install
# Run Dev
npm run dev
# visit http://localhost:3000I recommend that you leverage the docker image for production.
Via Compose
services:
scurry:
image: ghcr.io/masonfox/scurry:latest
ports:
- "3000:3000"
environment:
APP_PASSWORD: # remove for no auth
APP_QB_URL: # qbittorrent URL
APP_QB_USERNAME: # qbittorrent user
APP_QB_PASSWORD: # qbittorrent password
APP_QB_BOOK_CATEGORY: books
APP_QB_AUDIOBOOK_CATEGORY: audiobooks
APP_DEFAULT_SEARCH_CATEGORY: both
APP_PREFER_EPUB_ONLY: "false"
APP_PREFER_M4B: "false"
volumes:
- ./secrets:/app/secrets
restart: unless-stoppedVia Docker Run Script
docker run -d \
--name scurry \
--pull=always \
-p 3000:3000 \
-e APP_PASSWORD=PASSWORD \
-e APP_QB_URL=URL \
-e APP_QB_USERNAME=admin \
-e APP_QB_PASSWORD=PASSWORD \
-e APP_QB_BOOK_CATEGORY=books \
-e APP_QB_AUDIOBOOK_CATEGORY=audiobooks \
-e APP_DEFAULT_SEARCH_CATEGORY=both \
-e APP_PREFER_EPUB_ONLY=false \
-e APP_PREFER_M4B=false \
-v /VOLUME/scurry:/app/secrets \
--restart always \
ghcr.io/masonfox/scurry:latest



