1bc614b367 feat(api): expose existing dashboard controls (#6546)
* feat(api): expand REST coverage for full dashboard automation

Closes #6435.

Boards could only be created empty through the API. The single endpoint for
adding a widget took no geometry, so the size came from the widget default and
the position was always the next free cell. Everything else a setup needs was
reachable from the interface only.

Board composition
- POST /api/boards/items accepts an optional placement: width, height, xOffset,
  yOffset and sectionId, or a layouts array for per breakpoint control. Without
  it the previous automatic placement is unchanged.
- Adds read, update and delete for items, CRUD for sections, read and replace
  for layouts, and GET /api/boards/{id} for the whole board.
- GET /api/boards/{id}/export and POST /api/boards/import make a board
  reproducible from version control. onConflict decides what happens when the
  name is taken, so a pipeline can be re-run.
- Board access is manageable through GET/PUT /api/boards/{id}/permissions.

Remaining services
- Search engines, integrations, groups, api keys and server settings are
  exposed over OpenAPI and registered as MCP tools.
- GET /api/config/export and POST /api/config/import cover the configuration of
  a whole instance. Ids are kept so references inside opaque widget options stay
  intact, and entities are matched by natural key when the id is unknown, which
  is what makes a document from another instance applicable.
- The backup endpoints accept an ApiKey header, so a recovery job no longer
  needs a browser session.

Headless bootstrap
- homarr api-keys create prints a key without opening the web interface, which
  together with the existing recreate-admin removes the last manual step.

Notes
- No database migration, the schema already stores position and size.
- Grid coordinates and sizes in a document are bounded, and the placement scan
  no longer walks every column, so a large grid cannot occupy the server.
- Imports collect their statements first and apply them in one transaction, so a
  rejected document never leaves a board half written.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix: harden dashboard automation APIs

* fix: validate global home board settings

* fix: validate merged import settings

* docs(api): describe the bounded placement scan accurately

The comment still described the earlier version that walked every row up to the
last occupied one. Both axes now iterate the edges of the occupied areas, so the
cost follows the amount of content rather than the dimensions of the grid.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix(api): keep the search engine type narrow and record the new MCP tools

The `.output()` added to `searchEngine.getPaginated` widened `type` back to a
string through the plain select schema, which broke the management page that
switches on it. It now reuses the narrowed union the detail endpoint already has.

`mcp.spec` pins the reviewed tool inventory; the 33 tools this branch exposes are
added to it. The configuration round trip asserted the first layout of an item,
which is the mobile one half of the time and holds the same item clamped, so it
addresses the base layout by id instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* feat(api): complete Homarr automation endpoints

* refactor(api): consolidate preferences and task docs

* refactor(api): narrow REST to dashboard automation

* refactor(api): expose existing dashboard controls only

* fix(docs): drop removed API key CLI path

---------

Co-authored-by: rfdrew <20803599+rfdrew@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Thomas Camlong <thomas@ajnart.fr>
Co-authored-by: ajnart <thomas@ajnart.dev>
2026-10-07 15:02:59 +02:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00
2026-10-05 12:59:28 +00:00
2026-10-02 21:00:14 +02:00
2026-10-05 12:59:28 +00:00
2026-10-02 21:00:14 +02:00
2024-11-05 21:11:14 +01:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00
2026-10-02 21:00:14 +02:00

  Latest Release (Semver)   CI Status  

Live Demo 🎮 • Install 💻 • Translations 🈺 • Discord 👋

  • 🖌️ Highly customizable with an extensive drag and drop grid system
  • ✨ Integrates seamlessly with your favorite self-hosted applications
  • 📌 Easy and fast app management - no YAML involved
  • 👤 Detailed and easy to use user management with permissions and groups
  • 👥 Support for single sign on via OIDC / LDAP
  • 🙊 Safe encryption using BCrypt and AES-256-CBC for your valuable data
  • 🕔 Realtime widget updates using WebSockets, tRPC and Redis
  • 🔍 Search through thousands of data points in supported integrations or your data in Homarr using the fast built-in search
  • 🦞 Icon picker with over 11K icons
  • 🚀 Compatible with any major consumer hardware (x86, Raspberry Pi, old laptops, ...) and most OS (Windows, Linux, TrueNAS, Unraid)
  • 🖥️ Extensive Kubernetes support with Helm for efficient scaling & high reliability


AdGuard Home

AdGuard
Home

Anchor

Anchor

ArchiveTeam Warrior

ArchiveTeam
Warrior

Aria2

Aria2

Audiobookshelf

Audiobookshelf

Autobrr

Autobrr

Bazarr

Bazarr

Beszel

Beszel

Bindery

Bindery

Caddy

Caddy

Changedetection.io

Changedetection.io

Coolify

Coolify

Dash.

Dash.

Deluge

Deluge

Emby

Emby

FileFlows

FileFlows

Frigate

Frigate

Gatus

Gatus

Glances

Glances

Gluetun

Gluetun

Gotify

Gotify

Healthchecks

Healthchecks

Home Assistant

Home
Assistant

Homebox

Homebox

iCal

iCal

Immich

Immich

Jackett

Jackett

Jellyfin

Jellyfin

Jellyseerr

Jellyseerr

Jellystat

Jellystat

Karakeep

Karakeep

Komga

Komga

Lidarr

Lidarr

Linkwarden

Linkwarden

llama.cpp

llama.cpp

Maintainerr

Maintainerr

Mealie

Mealie

Miniflux

Miniflux

Navidrome

Navidrome

NetAlertX

NetAlertX

Netdata

Netdata

Nextcloud

Nextcloud

ntfy

ntfy

NZBGet

NZBGet

OpenMediaVault

OpenMediaVault

OPNsense

OPNsense

Overseerr

Overseerr

Paperless-ngx

Paperless-ngx

PatchMon

PatchMon

PeaNUT

PeaNUT

Pi-hole

Pi-hole

Plant-it

Plant-it

Plex

Plex

Prometheus

Prometheus

Prowlarr

Prowlarr

Proxmox

Proxmox

qBittorrent

qBittorrent

Radarr

Radarr

Readarr

Readarr

RomM

RomM

SABnzbd

SABnzbd

Scrutiny

Scrutiny

Seerr

Seerr

Slskd

Slskd

Sonarr

Sonarr

Speedtest Tracker

Speedtest
Tracker

Spoolman

Spoolman

Stash

Stash

Syncthing Relay

Syncthing
Relay

Synology DiskStation

Synology
DiskStation

Tandoor

Tandoor

Tdarr

Tdarr

Technitium DNS

Technitium
DNS

Tracearr

Tracearr

Traefik

Traefik

Transmission

Transmission

Trilium

Trilium

TrueNAS

TrueNAS

Tube Archivist

Tube
Archivist

Umami

Umami

Unifi Controller

Unifi
Controller

Unmanic

Unmanic

Unraid

Unraid

Uptime Kuma

Uptime
Kuma

Wazuh

Wazuh

What's Up Docker

What's
Up
Docker

xTeVe

xTeVe

Your Spotify

Your
Spotify



Please click here for official installation instructions




Homarr is a free-to-use open source project maintained by volunteers and developers from all over the world. We publish under the Apache License 2.0 license which allows commercial usage. We invest multiple hours daily in providing support, developing Homarr, integrating to third party software and more. We also pay for licensing and server hosting fees. Please consider helping us cover these costs to enable the future development of Homarr. Thank you!

Please click here to sponsor us at OpenCollective

You can also support us by helping with translating the entire project to as many languages as possible or contributing directly to the code or documentation. Please read our Contribution Guidelines. All contributions, regardless of their size or scope, are welcome and highly appreciated! Thank you ❤️

Sponsors

Thanks to your generous sponsors, we can continue to build Homarr. Check them out for high-quality and easy-to-use development tools. Feel free to contact us at homarr-labs@proton.me if you wish to become a sponsor.

Covered by Argos Visual Testing
Supported by PikaPods

S
Description
A modern and easy to use dashboard. 40+ integrations. 20K+ icons built in. Authentication out of the box. No YAML, drag and drop configuration.
https://homarr.dev Readme Apache-2.0
243 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 89.5%
MDX 7%
Go 1.8%
CSS 0.9%
JavaScript 0.4%
Other 0.3%