Skip to content
Syno Package Land
Language: English

Developer docs

Want to build your own app? Give this to your AI.

Paste it into an AI coding assistant that can run terminal commands, such as Claude Code, Codex or Cursor. It sets up the project, builds the package and tells you how to install it.

build-my-nas-app.txt
Help me build an app for my Synology NAS as a DSM package (.spk) with the Syno Package Land CLI.

Run the CLI as `npx @synopackageland/cli@latest <command>`. It needs Node.js 22 or newer; its guide says what else a template needs (for example Go). Check what is installed first and tell me what is missing.

1. Before anything else, read the CLI's built-in guide: `npx @synopackageland/cli@latest skill list`, then `npx @synopackageland/cli@latest skill show orchestrator`, and follow it step by step, reading the page it points to at each step. The guide and `--help` are the authority for commands and flags; do not rely on memory or invent any.
2. Ask me what the app should do before you create anything.
3. Build it the way the guide says, then check the project and build and inspect the .spk with the CLI. Fix every error before you call it done.
4. Tell me how to install it: Package Center → Manual Install with the .spk file; the SPK is unsigned, so DSM may warn first. Do not install anything on my NAS or publish anything unless I ask.

Docs: https://synopkgland.com/docs/

Your computer needs Node.js 22+ (and Go 1.25+ for the default template). The AI checks for them first.

The synopkgland CLI turns a project folder into an unsigned SPK that you install on a Synology NAS. You can build a native app with a Go backend and a DSM window UI, package a static Linux CGI you already have, wrap a Docker Compose app, or package an existing native product.

Start with the Quick start. It takes you from an empty folder to an installed package. Read Capabilities to see what your code can do on the NAS and which actions need an administrator.

You want toTemplateCreate it withYou need
Build a new app with a Go backend and a Vue UI in a DSM windownative-go with Vue (default)synopkgland init -t native-goGo, Node.js
Build the same app with a hand-written UInative-go with a plain UIsynopkgland init -t native-go --ui plainGo. The plain UI cannot use login.
Package a static Linux CGI that handles its own authenticationbinarysynopkgland init -t binaryGo, to build the sample CGI
Package an upstream containercomposesynopkgland init -t composeA compose.yaml, or the generated example
Package a product that already has its own payload and DSM windowexisting nativeNo template. Write dsm-package.yaml with backend: {kind: native}.Your own build scripts

Add --with files,jobs,login (and delegate, root-ops) to a native-go project at creation time. Add them later with synopkgland add. See Capabilities for what each one does.

I want to…Read
Go from nothing to an installed packageQuick start
Decide what my code can do on the NASCapabilities
Write the backend and handlers of a native appNative app
Build the window UIUI
Open my app from a Login Portal addressPortal
Package a product that already existsExisting native product
Ship a shell, Node.js, Python, Bun or Deno programScripts and interpreted languages
Package a Docker Compose appContainer app
Browse and transfer the signed-in user’s NAS filesFiles
Sign users in with their Synology account outside the DSM desktopLogin
Give my app a Shared FolderShared Folder
Process data after the browser closesJobs
Write files into a user’s folder while they are offlineDelegate
Run a fixed operation as root for an administratorRoot operations
Build, deploy, version and distribute the packageShip
Know where data lives, back it up and remove the appData and removal
Look up a command, field, API method, error code or platform limitCLI, Manifest, Compose manifest, API, Errors, Platforms
Get a quick answerFAQ

The developer kit is four repositories. The CLI is at 0.10.11, the SDK at 0.10.11 and the templates at 0.10.12; the UI library has its own version, 0.9.9. The CLI package also exports @synopackageland/cli/e2e: DSM sign-in, app-window and SSH-tunnel helpers for a package’s end-to-end tests on a real NAS, which mask DSM’s session cookies and tokens in the run’s output.

RepositoryWhat it holdsInstall as
syno-pkg-land-cliThe synopkgland CLI: init, check, build, inspect, deploy, statusnpm @synopackageland/cli
syno-pkg-land-templatesThe app-owned files init and add copy into a projectnpm @synopackageland/templates, a dependency of the CLI
syno-pkg-land-sdkExecutor protocol spec, the executor, the Go client packages and the TypeScript and Vue clientGo module github.com/synopackageland/syno-pkg-land-sdk, npm @synopackageland/sdk
syno-pkg-land-uiDSM-styled Vue componentsnpm @synopackageland/ui

A generated native-go project names its SDK version once, in backend/go.mod. The CLI builds the executor from that version.