Skip to content
Syno Package Land
Language: English

Quick start

This page takes you from an empty folder to an installed package. Only the last two steps need a NAS.

RequirementNeeded for
Node.js 22.12 or later, with npmInstalling the CLI. Building the Vue UI.
Go 1.25 or laterBuilding 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 NASdeploy, status and logs. Not needed to create, check, build or inspect.
Terminal window
npm install -g @synopackageland/cli
synopkgland init -t native-go --with files,jobs,login --package MyApp my-app
cd my-app

init 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.

build does not install anything. Install the Vue UI dependencies once:

Terminal window
(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.

Terminal window
synopkgland check
synopkgland build --arch x86_64
synopkgland inspect dist/MyApp-0.1.0-0001-x86_64.spk
CommandWhat it does
checkValidates the manifest, the capability combination and the route policy. Fails with an error code and a hint.
buildBuilds the UI and the backend, and writes one SPK per architecture to dist/. Without --arch it builds every architecture in arches.
inspectReads 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 builds one SPK and installs it on the NAS you name with --host.

Terminal window
synopkgland deploy --dry-run --arch x86_64
synopkgland 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.

Terminal window
synopkgland status --host my-nas

status shows whether the package is installed, its DSM status, the address that opens the app (Open URL), and the state of each declared capability.

StateMeaning
readyInstalled and usable. files, jobs and login are ready once the package is installed.
needs-admin-approvaldelegate or root-ops is declared and a DSM administrator has not approved it yet. See Capabilities.
blockedThe 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.
unsupportedThe 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