A client for the Synology DSM Web API: File Station, virtual machines, users and shares, administration and Container Manager
synologydsmnasfilestationhomelab
[decks]
"@deckyard/synology" = "^0.1.0"| Version | Status | Kind | Pin | Requires | Engines | Capabilities |
|---|---|---|---|---|---|---|
| 0.1.0 | live | git | cf7f6c48459a | - | jennifer >=0.25.0 | net |
LGPL-3.0-only
0.1.0Times a client asked this registry where to find this deck. Not downloads: the registry only stores metadata, and the code is fetched from its repository directly, so we never see an install and cannot count one. Repeated builds inflate these numbers; installs from an existing lockfile do not appear at all. Counted in UTC.
A client for the Synology DSM Web API, for Jennifer programs: log in (with 2-step verification and trusted devices), read the system summary, work with File Station (shared folders, listing, creating, renaming, copying, moving, deleting, upload and download), deploy and run virtual machines in Virtual Machine Manager, manage local users, groups, shared folders and their permissions, and administer the NAS: certificates, snapshots, health, updates, power, packages, services, scheduled tasks and Hyper Backup. Container Manager deploys Compose projects and runs containers. call reaches any other API under /webapi, and DSM's numeric error codes come back as readable messages.
jvc add @deckyard/synologyThis vendors the deck to vendor/<scope>/synology/. Without jvc, unpack the src/ subtree of a release archive (<scope>-synology-<version>.tar.gz) there.
import "@deckyard/synology/" as synology;
def c as synology.Client init synology.client("nas.example.com");
$c = synology.withCaCert($c, fs.readBytes("nas.pem"));
$c = synology.login($c, "backup", "secret");
synology.mkdir($c, "/backup/2024", true);
synology.upload($c, "/backup/2024", "db.sql.gz", fs.readBytes("db.sql.gz"), true);
for (def f in synology.files($c, "/backup/2024")) {
io.printf("%s %d\n", $f.name, $f.size);
}
$c = synology.logout($c);Jennifer 0.25.0 or newer, the default jennifer binary (not jennifer-tiny), and the net capability. DSM 6.2 or newer; DSM 7 is the main target, and Container Manager needs DSM 7.2.
tools/check-all.sh # the full gate, as CI runs it
jennifer test src/synology_test.j # the test overlay
tools/check-docs.sh # docs against the code
tools/pack.sh dist # build the release archiveLGPL-3.0-only, see LICENSE. Copyright (C) 2026 mplx <[email protected]>.
tools/check-headers.sh checks every source file's SPDX header against deck.toml.