🤖 I have created a release *beep* *boop* --- ## [4.9.0](https://github.com/unraid/api/compare/v4.8.0...v4.9.0) (2025-07-08) ### Features * add graphql resource for API plugins ([#1420](https://github.com/unraid/api/issues/1420)) ([642a220](642a220c3a)) * add management page for API keys ([#1408](https://github.com/unraid/api/issues/1408)) ([0788756](0788756b91)) * add rclone ([#1362](https://github.com/unraid/api/issues/1362)) ([5517e75](5517e7506b)) * API key management ([#1407](https://github.com/unraid/api/issues/1407)) ([d37dc3b](d37dc3bce2)) * api plugin management via CLI ([#1416](https://github.com/unraid/api/issues/1416)) ([3dcbfbe](3dcbfbe489)) * build out docker components ([#1427](https://github.com/unraid/api/issues/1427)) ([711cc9a](711cc9ac92)) * docker and info resolver issues ([#1423](https://github.com/unraid/api/issues/1423)) ([9901039](9901039a38)) * fix shading in UPC to be less severe ([#1438](https://github.com/unraid/api/issues/1438)) ([b7c2407](b7c2407840)) * info resolver cleanup ([#1425](https://github.com/unraid/api/issues/1425)) ([1b279bb](1b279bbab3)) * initial codeql setup ([#1390](https://github.com/unraid/api/issues/1390)) ([2ade7eb](2ade7eb527)) * initialize claude code in codebse ([#1418](https://github.com/unraid/api/issues/1418)) ([b6c4ee6](b6c4ee6eb4)) * move api key fetching to use api key service ([#1439](https://github.com/unraid/api/issues/1439)) ([86bea56](86bea56272)) * move to cron v4 ([#1428](https://github.com/unraid/api/issues/1428)) ([b8035c2](b8035c207a)) * move to iframe for changelog ([#1388](https://github.com/unraid/api/issues/1388)) ([fcd6fbc](fcd6fbcdd4)) * native slackware package ([#1381](https://github.com/unraid/api/issues/1381)) ([4f63b4c](4f63b4cf3b)) * send active unraid theme to docs ([#1400](https://github.com/unraid/api/issues/1400)) ([f71943b](f71943b62b)) * slightly better watch mode ([#1398](https://github.com/unraid/api/issues/1398)) ([881f1e0](881f1e0960)) * upgrade nuxt-custom-elements ([#1461](https://github.com/unraid/api/issues/1461)) ([345e83b](345e83bfb0)) * use bigint instead of long ([#1403](https://github.com/unraid/api/issues/1403)) ([574d572](574d572d65)) ### Bug Fixes * activation indicator removed ([5edfd82](5edfd823b8)) * alignment of settings on ManagementAccess settings page ([#1421](https://github.com/unraid/api/issues/1421)) ([70c790f](70c790ff89)) * allow rclone to fail to initialize ([#1453](https://github.com/unraid/api/issues/1453)) ([7c6f02a](7c6f02a5cb)) * always download 7.1 versioned files for patching ([edc0d15](edc0d1578b)) * api `pnpm type-check` ([#1442](https://github.com/unraid/api/issues/1442)) ([3122bdb](3122bdb953)) * **api:** connect config `email` validation ([#1454](https://github.com/unraid/api/issues/1454)) ([b9a1b9b](b9a1b9b087)) * backport unraid/webgui[#2269](https://github.com/unraid/api/issues/2269) rc.nginx update ([#1436](https://github.com/unraid/api/issues/1436)) ([a7ef06e](a7ef06ea25)) * bigint ([e54d27a](e54d27aede)) * config migration from `myservers.cfg` ([#1440](https://github.com/unraid/api/issues/1440)) ([c4c9984](c4c99843c7)) * **connect:** fatal race-condition in websocket disposal ([#1462](https://github.com/unraid/api/issues/1462)) ([0ec0de9](0ec0de982f)) * **connect:** mothership connection ([#1464](https://github.com/unraid/api/issues/1464)) ([7be8bc8](7be8bc84d3)) * console hidden ([9b85e00](9b85e009b8)) * debounce is too long ([#1426](https://github.com/unraid/api/issues/1426)) ([f12d231](f12d231e63)) * delete legacy connect keys and ensure description ([22fe91c](22fe91cd56)) * **deps:** pin dependencies ([#1465](https://github.com/unraid/api/issues/1465)) ([ba75a40](ba75a409a4)) * **deps:** pin dependencies ([#1470](https://github.com/unraid/api/issues/1470)) ([412b329](412b32996d)) * **deps:** storybook v9 ([#1476](https://github.com/unraid/api/issues/1476)) ([45bb49b](45bb49bcd6)) * **deps:** update all non-major dependencies ([#1366](https://github.com/unraid/api/issues/1366)) ([291ee47](291ee475fb)) * **deps:** update all non-major dependencies ([#1379](https://github.com/unraid/api/issues/1379)) ([8f70326](8f70326d0f)) * **deps:** update all non-major dependencies ([#1389](https://github.com/unraid/api/issues/1389)) ([cb43f95](cb43f95233)) * **deps:** update all non-major dependencies ([#1399](https://github.com/unraid/api/issues/1399)) ([68df344](68df344a4b)) * **deps:** update dependency @types/diff to v8 ([#1393](https://github.com/unraid/api/issues/1393)) ([00da27d](00da27d04f)) * **deps:** update dependency cache-manager to v7 ([#1413](https://github.com/unraid/api/issues/1413)) ([9492c2a](9492c2ae6a)) * **deps:** update dependency commander to v14 ([#1394](https://github.com/unraid/api/issues/1394)) ([106ea09](106ea09399)) * **deps:** update dependency diff to v8 ([#1386](https://github.com/unraid/api/issues/1386)) ([e580f64](e580f646a5)) * **deps:** update dependency dotenv to v17 ([#1474](https://github.com/unraid/api/issues/1474)) ([d613bfa](d613bfa041)) * **deps:** update dependency lucide-vue-next to ^0.509.0 ([#1383](https://github.com/unraid/api/issues/1383)) ([469333a](469333acd4)) * **deps:** update dependency marked to v16 ([#1444](https://github.com/unraid/api/issues/1444)) ([453a5b2](453a5b2c95)) * **deps:** update dependency shadcn-vue to v2 ([#1302](https://github.com/unraid/api/issues/1302)) ([26ecf77](26ecf779e6)) * **deps:** update dependency vue-sonner to v2 ([#1401](https://github.com/unraid/api/issues/1401)) ([53ca414](53ca41404f)) * disable file changes on Unraid 7.2 ([#1382](https://github.com/unraid/api/issues/1382)) ([02de89d](02de89d130)) * do not start API with doinst.sh ([7d88b33](7d88b3393c)) * do not uninstall fully on 7.2 ([#1484](https://github.com/unraid/api/issues/1484)) ([2263881](22638811a9)) * drop console with terser ([a87d455](a87d455bac)) * error logs from `cloud` query when connect is not installed ([#1450](https://github.com/unraid/api/issues/1450)) ([719f460](719f460016)) * flash backup integration with Unraid Connect config ([#1448](https://github.com/unraid/api/issues/1448)) ([038c582](038c582aed)) * header padding regression ([#1477](https://github.com/unraid/api/issues/1477)) ([e791cc6](e791cc680d)) * incorrect state merging in redux store ([#1437](https://github.com/unraid/api/issues/1437)) ([17b7428](17b7428779)) * lanip copy button not present ([#1459](https://github.com/unraid/api/issues/1459)) ([a280786](a2807864ac)) * move to bigint scalar ([b625227](b625227913)) * node_modules dir removed on plugin update ([#1406](https://github.com/unraid/api/issues/1406)) ([7b005cb](7b005cbbf6)) * omit Connect actions in UPC when plugin is not installed ([#1417](https://github.com/unraid/api/issues/1417)) ([8c8a527](8c8a5276b4)) * parsing of `ssoEnabled` in state.php ([#1455](https://github.com/unraid/api/issues/1455)) ([f542c8e](f542c8e0bd)) * pin ranges ([#1460](https://github.com/unraid/api/issues/1460)) ([f88400e](f88400eea8)) * pr plugin promotion workflow ([#1456](https://github.com/unraid/api/issues/1456)) ([13bd9bb](13bd9bb567)) * proper fallback if missing paths config modules ([7067e9e](7067e9e3dd)) * rc.unraid-api now cleans up older dependencies ([#1404](https://github.com/unraid/api/issues/1404)) ([83076bb](83076bb940)) * remote access lifecycle during boot & shutdown ([#1422](https://github.com/unraid/api/issues/1422)) ([7bc583b](7bc583b186)) * sign out correctly on error ([#1452](https://github.com/unraid/api/issues/1452)) ([d08fc94](d08fc94afb)) * simplify usb listing ([#1402](https://github.com/unraid/api/issues/1402)) ([5355115](5355115af2)) * theme issues when sent from graph ([#1424](https://github.com/unraid/api/issues/1424)) ([75ad838](75ad8381bd)) * **ui:** notifications positioning regression ([#1445](https://github.com/unraid/api/issues/1445)) ([f73e5e0](f73e5e0058)) * use some instead of every for connect detection ([9ce2fee](9ce2fee380)) ### Reverts * revert package.json dependency updates from commit711cc9afor api and packages/* ([94420e4](94420e4d45)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Unraid API
Monorepo for the Unraid API and Unraid Connect.
Explore the docs »
·
Report Bug
·
Request Feature
·
Submit Work Intent
🔌 Plugin Downloads
Production: https://stable.dl.unraid.net/unraid-api/dynamix.unraid.net.plg
Staging: https://preview.dl.unraid.net/unraid-api/dynamix.unraid.net.plg
Table of Contents
About The Project
Built With
Getting Started
This section will guide you through the steps necessary to get the monorepo projects running and communicating with each other.
Prerequisites
Make sure the following software is installed before proceeding.
- Bash
- Docker (for macOS folks, Orbstack works too)
- Node.js (v20)
- Just (optional)
- libvirt (macOS folks can run
brew install libvirt) - rclone (for development)
- An Unraid server for development
Alternative: Using Nix Flake
If you have Nix installed, you can use the provided flake to automatically set up all development dependencies:
nix develop
This will provide all the required tools (Node.js, Docker, Just, libvirt, rclone, etc.) without needing to install them manually.
SSH Key Setup
Next, create an SSH key if you haven't already. Once you have your key pair, add your public SSH key to your Unraid server:
- Log in to your Unraid development server.
- Use the navigation menu to go to 'Users'.
- Click on the user you logged in with (e.g.
root) - Paste your SSH public key into 'SSH authorized keys' and click 'Save'.
Installation
-
Clone and enter the repo
git clone git@github.com:unraid/api.git cd apiIf using Nix, enter the development environment:
nix develop -
Run the monorepo setup command.
pnpm install -
Run the build watcher to build the components and serve a local plugin file that can be installed on your Unraid server.
pnpm build:watchNavigate to Plugins->Install and install the local plugin file that is output to the console.
Tip
View other workflows (local dev, etc.) in the Developer Workflows
Usage
See How to Use the API.
For more examples, please refer to the Documentation
Contributing
For a complete guide on contributing to the project, including our code of conduct and development process, please see our Contributing Guide. Please read this before contributing.
Developer Documentation
For more information about development workflows, repository organization, and other technical details, please refer to the developer documentation inside this repository:
- Development Guide - Setup, building, and debugging instructions
- Development Workflows - Detailed workflows for local development, building, and deployment
- Repository Organization - High-level architecture and project structure
Work Intent Process
Before starting development work on this project, you must submit a Work Intent and have it approved by a core developer. This helps prevent duplicate work and ensures changes align with the project's goals.
-
Create a Work Intent
- Go to Issues → New Issue → Work Intent
- Fill out the brief template describing what you want to work on
- The issue will be automatically labeled as
work-intentandunapproved
-
Wait for Approval
- A core developer will review your Work Intent
- They may ask questions or suggest changes
- Once approved, the
unapprovedlabel will be removed
-
Begin Development
- Only start coding after your Work Intent is approved
- Follow the approach outlined in your approved Work Intent
- Reference the Work Intent in your future PR
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Top contributors
Community
Contact
@UnraidOfficial - contact@unraid.net
Project Link: https://github.com/unraid/api