ArrMatey

Project Url: owenlejeune/ArrMatey
More: Author   ReportBugs   
Tags:

ArrMatey

A modern, all-in-one mobile client for managing your *arr stack. Built using KMP with native Jetpack Compose UI for Android and SwiftUI for iOS.

License Android iOS Kotlin Swift

Buy Me A Coffee ko-fi

Get it on Github Get it on Obtainium

Features

Combined Dashboard

  • Centralized overview of all instances, download clients, and requests
  • Customizable layout: add, remove, and reorder cards to fit your workflow
  • Real-time network status and detailed disk space monitoring
  • Quick-access shortcuts to your recently added media and upcoming schedule

Multi-Instance Support

  • Manage multiple Sonarr, Radarr, Lidarr, Bookshelf, and Listenarr instances
  • Seamless integration with Prowlarr for indexer management and Seerr for requests and issues
  • Quick instance switching and custom instance labels

Library Management

  • Browse your entire media library with list and grid views
  • Search and filter by title, quality, and monitored status
  • Sort by name, date added, size, and more
  • View detailed media information, including episode lists, season management, and file status
  • Dedicated management for Audiobooks with metadata and file tracking
  • Manual search for releases via Arr instances or Prowlarr
  • Filter by quality, language, indexer, and protocol
  • View seeders, size, age, and custom format scores
  • One-tap download with confirmation for rejected releases

Calendar View

  • View upcoming episodes, movies, albums, books, and audiobooks
  • Switch between list and month views
  • Filter by content type, monitored status, and premieres/finales
  • Scroll-to-today for easy navigation

Activity Queue

  • Real-time download monitoring across all download clients
  • View progress, ETA, and detailed status
  • Manage downloads with options to remove, blocklist, or skip redownload

Advanced Features

  • Android App Shortcuts: Jump to services or search directly from your home screen
  • Local Network Switching: Automatically use local URLs when connected to home Wi-Fi
  • Custom Webpages: Pin your favorite status pages or secondary dashboards (like Tautulli) directly in the app
  • Custom Headers: Add custom HTTP headers per instance
  • Slow Instance Mode: Configurable timeout for remote or slower instances
  • Pull-to-refresh: Update data across all screens
  • Material 3/Liquid Glass Design: Beautiful, modern UI with dynamic theming on Android and Liquid Glass on iOS

Download Client

  • Multiple Integrations: Support for Transmission, Deluge, qBittorrent, and SABnzbd

Planned Features

  • Tablet/Large screen support
  • Home screen widgets
  • Schedule notifications
  • Bulk library actions
  • Additional instance types (eg. Bazarr, Tracearr, nzbget)
  • and more to come

Screenshots

Dashboard

Combined Dashboard (Android & iOS)

Library Views

List View Grid View View Customization

Media Details

Series Details Movie Details Episode Details

Calendar & Activity

Calendar List Calendar Month Activity Queue

Instance Management

Instance Dashboard

Getting Started

This is a Kotlin Multiplatform project targeting Android, iOS.

  • /composeApp contains the Android application. This is where all Jetpack Compose and other Android-app specific code should go.

  • /iosApp contains iOS applications. This is where all SwiftUI and other iOS-app specific code should go

  • /shared is for the code that will be shared between all targets in the project. The most important subfolder is commonMain. Any code that is shared between projects (networking/database/viewmodel/data models, etc.) goes here. There are also androidMain and iosMain for shard code that targets a specifc platform.

Build and Run Android Application

To build and run the development version of the Android app, build and run the composeApp target in AndroidStudio

Build and Run iOS Application

To build and run the development version of the iOS app, build and run the iosApp target in AndroidStudio or open the /iosApp directory in Xcode and run it from there.

To build the app locally Xcode must be signed into an Apple Account:

Xcode → Settings → Accounts

Next, select the Apple Account's team for the iosApp target:

iosApp → Signing & Capabilities → Targets → iosApp -> Signing -> Team

Adding Localized String

ArrMatey uses moko-resources for string resources across platforms. Any new strings should be added to strings.xml, or plurals.xml for plural strings. Build your targets, and new strings will be accessible using MR.strings

Configuration

Adding Your First Instance

  1. Open the app and navigate to Settings
  2. Tap Add Instance
  3. Select your instance type (Sonarr/Radarr/Lidarr/Bookshelf/Listenarr/etc.)
  4. Enter your instance details:
  • Label: A friendly name for this instance
  • Host: Your instance URL (e.g., http://192.168.1.100:8989, https://service.mydomain.com)
  • API Key: Found in your instance settings under General → Security
  1. (Optional) Configure advanced settings:
  • Slow Instance: Enable for remote instances with higher latency
  • Custom Timeout: Set a custom timeout in seconds (default: 60s)
  • Custom Headers: Add additional HTTP headers if needed
  • Local Endpoint: If you use a custom domain for remote access, you can specify the local address of your instance to use on your home network.
  1. Tap Test Connection to verify
  2. Save your instance

If you use Tailscale Funnel's or CloudFlare Tunnels, additional setup steps can be found here

Custom Headers

Custom headers are useful for:

  • Reverse proxy authentication
  • Additional security headers
  • Custom routing or load balancing

Example:

  • Header: X-Forwarded-For
  • Value: 192.168.1.1

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Development Guidelines

  1. Code Style: Follow Kotlin coding conventions
  2. Commits: Use conventional commit messages
  3. Testing: Add tests for new features
  4. Documentation: Update README and code comments

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Bug Reports

Found a bug? Please open an issue with:

  • A clear description of the problem
  • Steps to reproduce
  • Expected vs actual behavior
  • Device/Android version
  • Arr instance version (Sonarr/Radarr/Lidarr)

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools
AI Daily Digest