{"id":31621283,"url":"https://github.com/unraid/api","last_synced_at":"2026-04-03T19:02:22.858Z","repository":{"id":285448625,"uuid":"191194688","full_name":"unraid/api","owner":"unraid","description":"Unraid API / Connect / UI Monorepo","archived":false,"fork":false,"pushed_at":"2026-02-26T17:49:53.000Z","size":34188,"stargazers_count":98,"open_issues_count":56,"forks_count":18,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-26T23:46:20.152Z","etag":null,"topics":["api","unraid","unraid-api","unraid-connect","unraid-ui"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unraid.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2019-06-10T15:28:51.000Z","updated_at":"2026-02-26T17:38:59.000Z","dependencies_parsed_at":"2025-06-27T23:18:17.911Z","dependency_job_id":"eaaf70f2-01cd-4b2a-a928-49f16809a5d2","html_url":"https://github.com/unraid/api","commit_stats":null,"previous_names":["unraid/api"],"tags_count":198,"template":false,"template_full_name":null,"purl":"pkg:github/unraid/api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unraid%2Fapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unraid%2Fapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unraid%2Fapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unraid%2Fapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unraid","download_url":"https://codeload.github.com/unraid/api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unraid%2Fapi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29987656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T22:42:38.399Z","status":"ssl_error","status_checked_at":"2026-03-01T22:41:51.863Z","response_time":124,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","unraid","unraid-api","unraid-connect","unraid-ui"],"created_at":"2025-10-06T16:00:58.001Z","updated_at":"2026-03-01T23:02:48.593Z","avatar_url":"https://github.com/unraid.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003c!-- Adapted from: https://github.com/othneildrew/Best-README-Template --\u003e\n\u003c!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 --\u003e\n\n\u003ca id=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003c!-- PROJECT SHIELDS --\u003e\n\u003c!--\n*** I'm using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n[![Codecov][codecov-shield]][codecov-url]\n[![Apollo Studio][apollo-studio-shield]][apollo-studio-url]\n\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/unraid/api)\n\n\u003c/div\u003e\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/unraid/api\"\u003e\n    \u003cimg src=\".github/unraid.svg\" alt=\"Logo\" width=\"80\" height=\"80\"/\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003eUnraid API\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Monorepo for the Unraid API and Unraid Connect.\n    \u003cbr /\u003e\n    \u003ca href=\"https://docs.unraid.net/API/\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    ·\n    \u003ca href=\"https://github.com/unraid/api/issues/new?template=bug_report.md\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/unraid/api/issues/new?template=feature_request.md\"\u003eRequest Feature\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/unraid/api/issues/new?template=work_intent.md\u0026type=task\"\u003eSubmit Work Intent\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- PLUGIN DOWNLOADS --\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003e🔌 Plugin Downloads\u003c/h3\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://stable.dl.unraid.net/unraid-api/dynamix.unraid.net.plg\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Production-Download-green?style=for-the-badge\u0026logo=download\" alt=\"Production Plugin\" /\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\u0026nbsp;\n    \u003ca href=\"https://preview.dl.unraid.net/unraid-api/dynamix.unraid.net.plg\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Staging-Download-orange?style=for-the-badge\u0026logo=download\" alt=\"Staging Plugin\" /\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp\u003e\n    \u003cstrong\u003eProduction:\u003c/strong\u003e \u003ca href=\"https://stable.dl.unraid.net/unraid-api/dynamix.unraid.net.plg\"\u003ehttps://stable.dl.unraid.net/unraid-api/dynamix.unraid.net.plg\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cstrong\u003eStaging:\u003c/strong\u003e \u003ca href=\"https://preview.dl.unraid.net/unraid-api/dynamix.unraid.net.plg\"\u003ehttps://preview.dl.unraid.net/unraid-api/dynamix.unraid.net.plg\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## About The Project\n\n\u003c!-- [![Product Name Screen Shot][product-screenshot]](https://unraid.net)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e --\u003e\n\n### Built With\n\n[![Unraid][Unraid]][Unraid-url]\n[![Node.js][Node.js]][Node-url]\n[![Vite][Vite-badge]][Vite-url]\n[![Nuxt][Nuxt.js]][Nuxt-url]\n[![PHP][PHP]][PHP-url]\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n\nThis section will guide you through the steps necessary to get the monorepo projects running and\ncommunicating with each other.\n\n### Prerequisites\n\nMake sure the following software is installed before proceeding.\n\n- Bash\n- Docker (for macOS folks, Orbstack works too)\n- [Node.js (v22)][Node-url]\n- [pnpm](https://pnpm.io/) (v9.0+) - Install with `npm install -g pnpm`\n- [Just](https://github.com/casey/just) (optional)\n- libvirt (macOS folks can run `brew install libvirt`)\n- rclone (v1.70+) - **Important:** Version 1.70 or higher is required\n- jq - JSON processor for scripts\n- An [Unraid][Unraid-url] server for development\n\n#### Ubuntu/WSL Users\n\nFor Ubuntu or WSL users, note that the default Ubuntu repositories may have older versions of rclone. You'll need rclone v1.70 or higher, which can be obtained from the [rclone releases page](https://github.com/rclone/rclone/releases).\n\n#### Verify Prerequisites\n\nAfter installation, verify your dependencies:\n\n```sh\n# Verify installations and versions\nnode --version  # Should be v22.x\npnpm --version  # Should be v9.0+\nrclone version  # Should be v1.70+\njq --version    # Should be installed\ndocker --version  # Should be installed\n```\n\n#### Alternative: Using Nix Flake\n\nIf you have [Nix](https://nixos.org/) installed, you can use the provided flake to automatically set up all development dependencies:\n\n```sh\nnix develop\n```\n\nThis will provide all the required tools (Node.js, Docker, Just, libvirt, rclone, etc.) without needing to install them manually.\n\n#### SSH Key Setup\n\nNext, create an SSH key if you haven't already.\nOnce you have your key pair, add your public SSH key to your Unraid server:\n\n1. Log in to your Unraid development server.\n2. Use the navigation menu to go to 'Users'.\n3. Click on the user you logged in with (e.g. `root`)\n4. Paste your SSH public key into 'SSH authorized keys' and click 'Save'.\n\n### Installation\n\n1. Clone and enter the repo\n\n   ```sh\n   git clone git@github.com:unraid/api.git\n   cd api\n   ```\n\n   If using Nix, enter the development environment:\n\n   ```sh\n   nix develop\n   ```\n\n2. Install dependencies and verify they're correctly installed:\n\n   ```sh\n   # Install all monorepo dependencies\n   pnpm install\n   \n   # The install script will automatically check for required dependencies\n   # and their versions (rclone v1.70+, jq, pnpm, etc.)\n   ```\n\n3. Build the project:\n\n   ```sh\n   # Build individual packages first (from root directory)\n   cd api \u0026\u0026 pnpm build \u0026\u0026 cd ..\n   cd web \u0026\u0026 pnpm build \u0026\u0026 cd ..\n   \n   # Then build the plugin if needed\n   cd plugin \u0026\u0026 pnpm build \u0026\u0026 cd ..\n   ```\n\n   Note: The packages must be built in order as the plugin depends on the API build artifacts.\n\n### Development Modes\n\n#### Mode 1: Local Plugin Build (Docker)\n\nBuild and test a full plugin locally using Docker:\n\n```sh\ncd plugin\npnpm run docker:build-and-run\n# Then inside the container:\npnpm build\n```\n\nThis builds all dependencies (API, web), starts a Docker container, and serves the plugin at `http://YOUR_IP:5858/`. Install it on your Unraid server via Plugins → Install Plugin.\n\n#### Mode 2: Direct Deployment\n\nDeploy individual packages directly to an Unraid server for faster iteration:\n\n```sh\n# Deploy API changes\ncd api \u0026\u0026 pnpm unraid:deploy \u003cSERVER_IP\u003e\n\n# Deploy web changes\ncd web \u0026\u0026 pnpm unraid:deploy \u003cSERVER_IP\u003e\n```\n\n#### Mode 3: Development Servers\n\nFor active development with hot-reload (no Unraid server needed):\n\n```sh\n# From the root directory - runs all dev servers concurrently\npnpm dev\n```\n\nOr run individual development servers:\n\n```sh\n# API server (GraphQL backend at http://localhost:3001)\ncd api \u0026\u0026 pnpm dev\n\n# Web interface (Nuxt frontend at http://localhost:3000)\ncd web \u0026\u0026 pnpm dev\n```\n\n### Deploying to Unraid\n\n```sh\n# Replace SERVER_IP with your Unraid server's IP address\npnpm unraid:deploy SERVER_IP\n```\n\n\u003e [!TIP]\n\u003e View other workflows (local dev, etc.) in the [Developer Workflows](./api/docs/developer/workflows.md)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- USAGE EXAMPLES --\u003e\n\n## Usage\n\nSee [How to Use the API](./api/docs/public/how-to-use-the-api.md).\n\n_For more examples, please refer to the [Documentation](https://docs.unraid.net/API/how-to-use-the-api/)_\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ROADMAP --\u003e\n\u003c!-- ## Roadmap\n\n- [ ] Feature 1\n- [ ] Feature 2\n- [ ] Feature 3\n    - [ ] Nested Feature\n\nSee the [open issues](https://github.com/unraid/api/issues) for a full list of proposed features (and known issues).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e --\u003e\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nFor a complete guide on contributing to the project, including our code of conduct and development process, please see our [Contributing Guide](./CONTRIBUTING.md). Please read this before contributing.\n\n### Developer Documentation\n\nFor more information about development workflows, repository organization, and other technical details, please refer to the developer documentation inside this repository:\n\n- [Development Guide](./api/docs/developer/development.md) - Setup, building, and debugging instructions\n- [Development Workflows](./api/docs/developer/workflows.md) - Detailed workflows for local development, building, and deployment\n- [Repository Organization](./api/docs/developer/repo-organization.md) - High-level architecture and project structure\n\n### Work Intent Process\n\nBefore 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.\n\n1. **Create a Work Intent**\n\n   - Go to [Issues → New Issue → Work Intent](https://github.com/unraid/api/issues/new?template=work_intent.md)\n   - Fill out the brief template describing what you want to work on\n   - The issue will be automatically labeled as `work-intent` and `unapproved`\n\n2. **Wait for Approval**\n\n   - A core developer will review your Work Intent\n   - They may ask questions or suggest changes\n   - Once approved, the `unapproved` label will be removed\n\n3. **Begin Development**\n   - Only start coding after your Work Intent is approved\n   - Follow the approach outlined in your approved Work Intent\n   - Reference the Work Intent in your future PR\n\n---\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf 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\".\nDon't forget to give the project a star! Thanks again!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Top contributors\n\n\u003ca href=\"https://github.com/unraid/api/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=unraid/api\" alt=\"contrib.rocks image\" /\u003e\n\u003c/a\u003e\n\n\u003c!-- Community \u0026 Acknowledgements --\u003e\n\n## Community\n\n🌐 [Forums](https://forums.unraid.net/)  \n💬 [Discord](https://discord.unraid.net/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTACT --\u003e\n\n## Contact\n\n[@UnraidOfficial](https://twitter.com/UnraidOfficial) - \u003ccontact@unraid.net\u003e\n\nProject Link: [https://github.com/unraid/api](https://github.com/unraid/api)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[contributors-shield]: https://img.shields.io/github/contributors/unraid/api.svg?style=for-the-badge\n[contributors-url]: https://github.com/unraid/api/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/unraid/api.svg?style=for-the-badge\n[forks-url]: https://github.com/unraid/api/network/members\n[stars-shield]: https://img.shields.io/github/stars/unraid/api.svg?style=for-the-badge\n[stars-url]: https://github.com/unraid/api/stargazers\n[issues-shield]: https://img.shields.io/github/issues/unraid/api.svg?style=for-the-badge\n[issues-url]: https://github.com/unraid/api/issues\n[license-shield]: https://img.shields.io/badge/License-GPL--2.0-default?style=for-the-badge\u0026color=red\n[license-url]: https://github.com/unraid/api/blob/main/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://www.linkedin.com/company/unraid\n[codecov-shield]: https://img.shields.io/codecov/c/github/unraid/api?style=for-the-badge\n[codecov-url]: https://codecov.io/gh/unraid/api\n[apollo-studio-shield]: https://img.shields.io/badge/Apollo%20Studio-View%20Schema-311C87?style=for-the-badge\u0026logo=apollographql\u0026logoColor=white\n[apollo-studio-url]: https://studio.apollographql.com/graph/Unraid-API/variant/current/home\n[Nuxt.js]: https://img.shields.io/badge/Nuxt-002E3B?style=for-the-badge\u0026logo=nuxtdotjs\u0026logoColor=#00DC82\n[Node.js]: https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white\n[PHP]: https://img.shields.io/badge/php-%23777BB4.svg?style=for-the-badge\u0026logo=php\u0026logoColor=white\n[Unraid]: https://img.shields.io/badge/unraid-%23F15A2C.svg?style=for-the-badge\u0026logo=unraid\u0026logoColor=white\n[Unraid-url]: https://unraid.net\n[Nuxt-url]: https://nuxt.com/\n[Node-url]: https://nodejs.org/\n[PHP-url]: https://php.net/\n[Vite-badge]: https://img.shields.io/badge/Vite-646CFF?style=for-the-badge\u0026logo=Vite\u0026logoColor=white\n[Vite-url]: https://vite.dev/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funraid%2Fapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funraid%2Fapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funraid%2Fapi/lists"}