Quick start
This page takes you from an empty folder to an installed package. Only the last two steps need a NAS.
Prerequisites
Section titled “Prerequisites”| Requirement | Needed for |
|---|---|
| Node.js 22.12 or later, with npm | Installing the CLI. Building the Vue UI. |
| Go 1.25 or later | Building the backend of native-go and the sample CGI of binary. build fails with STANDALONE_GO_MISSING without it. |
| A DSM administrator account on the NAS | deploy, status and logs. Not needed to create, check, build or inspect. |
Create the project
Section titled “Create the project”npm install -g @synopackageland/clisynopkgland init -t native-go --with files,jobs,login --package MyApp my-appcd my-appinit creates dsm-package.yaml, a Go backend in backend/, a Vue UI in frontend/, nine languages of UI text in i18n/, and AGENTS.md and CLAUDE.md for an AI assistant. It never overwrites a file: INIT_TARGET_NOT_EMPTY stops it if a file already exists. backend/go.mod requires the SDK Go module github.com/synopackageland/syno-pkg-land-sdk, and frontend/package.json the npm package @synopackageland/sdk of the same version. See Source repositories.
This example turns on files, jobs and login. Leave out --with for a package with no extra capability. See Capabilities.
Install the UI dependencies
Section titled “Install the UI dependencies”build does not install anything. Install the Vue UI dependencies once:
(cd frontend && npm install)Without them, build fails with STANDALONE_UI_BUILD_FAILED and tells you to install the UI dependencies. A project made with --ui plain has no frontend/ folder and skips this step.
Check, build and inspect
Section titled “Check, build and inspect”synopkgland checksynopkgland build --arch x86_64synopkgland inspect dist/MyApp-0.1.0-0001-x86_64.spk| Command | What it does |
|---|---|
check | Validates the manifest, the capability combination and the route policy. Fails with an error code and a hint. |
build | Builds the UI and the backend, and writes one SPK per architecture to dist/. Without --arch it builds every architecture in arches. |
inspect | Reads an SPK without installing it. It checks the DSM 7 package format, then prints the package name, version, architectures, whether it is signed, and the capability and uninstall-cleanup notes. |
Add --json to any of them for a single JSON object.
Deploy to a NAS
Section titled “Deploy to a NAS”deploy builds one SPK and installs it on the NAS you name with --host.
synopkgland deploy --dry-run --arch x86_64synopkgland deploy --host my-nas--dry-run prints the plan and does not connect to a NAS. --host takes a synoagentcli profile name, a host name or a URL. Without --arch, deploy reads the CPU from the NAS. See Ship for credentials, architectures and versions.
To install without the CLI, copy the SPK to your computer and use Package Center > Manual Install. The SPK is unsigned, so DSM may warn before it installs.
Read the status
Section titled “Read the status”synopkgland status --host my-nasstatus shows whether the package is installed, its DSM status, the address that opens the app (Open URL), and the state of each declared capability.
| State | Meaning |
|---|---|
ready | Installed and usable. files, jobs and login are ready once the package is installed. |
needs-admin-approval | delegate or root-ops is declared and a DSM administrator has not approved it yet. See Capabilities. |
blocked | The package is not installed. For delegate and root-ops it also means status cannot verify the approval. It needs the SPK of the installed version in dist/, so build that version in the same project first. |
unsupported | The capability cannot run here. |
Open the Open URL, or open the app from the DSM main menu.
- Capabilities: what your code can do, and who approves it.
- Native app: where to write your handlers.
- Ship: versions, upgrades and distribution.
- FAQ