# help.cardinalapps.io — Guide for AI Agents

This is the official documentation site for Cardinal Apps: a headless,
self-hosted media server (Cardinal Media Server) with bundled reference web
apps (Music, Photos, Cinema), plus optional cloud services. If you are an AI
agent helping a person install, configure, operate, or troubleshoot Cardinal,
or build their own app for it, this site is your source of truth.

## How to use this site

- **Always fetch pages fresh.** The documentation is fluid and updated often.
  Never act from a cached copy or from what your training data says about
  Cardinal — fetch the page, follow what it says today.
- **Prefer raw markdown.** Append `.md` to any guide URL to get the page as
  plain markdown instead of HTML, e.g.
  https://help.cardinalapps.io/guides/quick-start/install-with-docker.md
- Every page is also available as fully server-rendered static HTML. You do
  not need to execute JavaScript to read complete page content.
- A curated index of the site, in the llms.txt format:
  https://help.cardinalapps.io/llms.txt
- The complete, current list of pages is in the sitemap:
  https://help.cardinalapps.io/sitemap.xml
  Browse-able index: https://help.cardinalapps.io/guides

## Task skills

For common tasks, fetch the matching skill and follow it. Skills contain
process and safety rails; they intentionally contain no product knowledge and
will direct you back to this site's guides for everything current.

- **Install with Docker** — https://help.cardinalapps.io/skills/install-cardinal-media-server-with-docker.md
  Guided install: interview the user, write a tailored docker-compose.yaml,
  start and verify the stack, hand off the First Time Setup link.
- **Update with Docker** — https://help.cardinalapps.io/skills/update-cardinal-media-server-with-docker.md
  Guided update: find the channel's latest build, check the compose file
  against the Install with Docker guide, pull, restart, verify, roll back if
  needed.
- **Install with Proxmox** — https://help.cardinalapps.io/skills/install-cardinal-media-server-with-proxmox.md
  Guided install on a Proxmox VE host as an application container: detect the
  host, interview the user, run the official install script, verify, hand off
  the First Time Setup link.
- **Update with Proxmox** — https://help.cardinalapps.io/skills/update-cardinal-media-server-with-proxmox.md
  One-command update through the script's update mode, verified, with
  rollback. Minimal interaction by design.
- **Uninstall with Docker** — https://help.cardinalapps.io/skills/uninstall-cardinal-media-server-with-docker.md
  Guided removal: inventory, explicit confirmation, execute, verify.
  Destructive — erases the server's database (never the user's media files).
- **Build a Cardinal app** — https://cardinalapps.io/skills/build-a-cardinal-app.md
  One-time setup of a new app on Cardinal: interview the developer, check the
  backend it needs, connect with a personal access token and a passing health
  check, write the project's AGENTS.md, hand off to ordinary development.

## Key entry points

- Quick Start (choose Docker Compose or Proxmox):
  https://help.cardinalapps.io/guides/quick-start
  - Install with Docker: https://help.cardinalapps.io/guides/quick-start/install-with-docker
  - Install with Proxmox: https://help.cardinalapps.io/guides/quick-start/install-with-proxmox
- Deployment checklist (optimize and harden before going live):
  https://help.cardinalapps.io/guides/deployment
- Media Server reference (accounts, environment variables, indexing, jobs,
  libraries, release channels, access control, update, uninstall):
  https://help.cardinalapps.io/guides/cardinal-media-server
- App guides: https://help.cardinalapps.io/guides/cardinal-music ·
  https://help.cardinalapps.io/guides/cardinal-photos ·
  https://help.cardinalapps.io/guides/cardinal-cinema
- Cloud services (Cardinal Account, Remote Access, …):
  https://help.cardinalapps.io/category/cloud-services
- FAQ: https://help.cardinalapps.io/faq

## Building apps

Cardinal Media Server is headless: every client, including the bundled apps,
uses its HTTP API. Developers build their own clients against the same API.

- Start here: https://help.cardinalapps.io/guides/diy-apps
- Authentication: https://help.cardinalapps.io/guides/diy-apps/authentication
- Connecting to a server (LAN and Remote Access):
  https://help.cardinalapps.io/guides/diy-apps/connecting-to-a-server
- OpenAPI specification:
  https://help.cardinalapps.io/openapi/media-server.json
- Recipes: rules and reference code for the behaviour Cardinal's own apps
  implement. Follow the matching recipe whenever an app does one of these:
  - Connecting and staying connected:
    https://help.cardinalapps.io/guides/diy-apps/recipes/connecting-and-staying-connected.md
  - Playback and the queue:
    https://help.cardinalapps.io/guides/diy-apps/recipes/playback-and-the-queue.md
  - Live updates with events:
    https://help.cardinalapps.io/guides/diy-apps/recipes/live-updates-with-events.md
  - Permissions in the UI:
    https://help.cardinalapps.io/guides/diy-apps/recipes/permissions-in-the-ui.md
  A running server serves the specification for its own version at
  `/api/docs-json`, and an interactive reference at `/api/docs`.

When building against a person's server:

- Never put a token in committed code, and never print or log one.
- Ask before any request that changes or deletes something on the server.

## When acting on a user's machine

- The user's media folders are read in place — never move, rename, or
  reorganize media files.
- Never scan or list the contents of a user's media folders. Ask the user
  where their media is.
- Never delete containers, volumes, or files you did not create without the
  user's explicit, informed confirmation.

## Related properties

- Product site and release notes: https://cardinalapps.io
- Docker Hub: https://hub.docker.com/r/cardinalapps/media-server
- Account portal: https://account.cardinalapps.cloud
- Service status: https://status.cardinalapps.io
- Community forums: https://itsasmall.world/c/cardinal-media-server
