There are a significant number of terms and definitions that are unique to the snap, snapd, and snapcraft ecosystem. This page defines the terminology and other terms touched by these tools and links to further information when required.

If you’re new to using snaps, take a look at Getting started, and if you’re looking to build your own snaps, take a look at the Snapcraft overview.

Terms and definitions


An appliance is a pre-configured Ubuntu Core bootable image that includes one or more snaps to provide a specific set of features. The OpenHAB smart home system, the Plex media server, and the Nextcloud Server platform, are all available as appliances, for example.

See What is an Ubuntu Appliance for more details.


An assertion is a digitally signed document that either verifies the validity of a process, as attested by the signer, or carries policy information, as formulated by the signer.

Snapcraft, snapd and the Snap Store all use assertions to handle a variety of functions and processes, including authentication, policy setting, identification and validation.

See Assertions for more details.


A base is a special kind of snap that provides a run-time environment with a minimal set of libraries that are common to most applications. They’re transparent to users, but they need to be considered, and specified, when building a snap.

See Base snaps for more details.


A branch is an optional finer subdivision of a channel for a published snap that allows for the creation of a short-lived sequences of snaps that can be pushed on demand by snap developers to help with fixes or temporary experimentation.

See Branches for more details.

brand store

A brand store allows vendors running Ubuntu Core and snap-based devices to control exactly what snaps are available, and when. It can inherit selected packages from other snap stores, and host a set of snaps specific to a brand and device models, and be either open to all developers or a specific list.

See Request a brand store for more details.


Channels define which release of a snap is installed and tracked for updates. They consist of, and are subdivided by, tracks (latest, or developer defined, e.g 1.0), risk-levels (stable, candidate, beta and edge), and optional branches. The tracking value for an installed snap shows which channel is being installed and followed.

See Channels for more details.


Classic is a snap confinement level that allows access to your system’s resources in much the same way traditional packages do. It’s used sparingly and only after a manual review.

See Snap confinement for more details.


A snap’s confinement level is the degree of isolation it has from your system. There are three levels of snap confinement: strict, classic and devmode. The majority of snaps use strict confinement, and run in complete isolation up to a level of minimal access that’s always deemed safe, or through access given via explicit interface connections.

See Snap confinement for more details.


core is a base snap built from Ubuntu 16.04 LTS. It’s different from core16 (see below) because it bundles snapd and its associated tools whereas core16 does not.

See Base snaps for more details.


core16 is still under development, and is a base snap built from Ubuntu 16.04 LTS. It’s different from core (see above) because it does not include snapd and its associated tools.

See Base snaps for more details.


core18 is a base snap built from Ubuntu 18.04 LTS. It’s the current standard base for snap building and is the recommended base for the majority of snaps. It’s what the snapcraft init command includes when generating a new project’s template snapcraft.yaml .

See Base snaps for more details.


core20 is under active development. It’s a base snap built from Ubuntu 20.04 LTS (Focal Fossa), released April 23, 2020.

See Base snaps for more details on base snaps.


devmode is a snap confinement level used by snap developers when creating their snaps. With devmode, a snap runs as a strictly confined snap with full access to system resources, and produces debug output to identify unspecified interfaces.

See Snap confinement for more details.


Epochs enable snap developers to control how users receive a new application release when an application’s data format becomes incompatible with older versions of the application.

When a new release breaks data compatibility with an older version, incrementing the epoch in the new release stops old users automatically refreshing to the new version.

See Epochs for more details.


Snapcraft extensions enable snap developers to easily incorporate a set of common requirements into a snap. There are extensions to help with the packaging of both Gnome and KDE Plasma applications.

See Snapcraft extensions for more details.


A gadget is a device or other deployment running Ubuntu Core alongside a vendor-specified, managed and maintained set of snaps. A gadget could be a router, for example, a home automation device or even a VM cloud instance. Its properties are defined within an embedded gadget snap.

See The gadget snap for more details.


A hook is an executable that runs within a snap’s confined environment when a certain action occurs. Actions include snap installation and removal, changes to its configuration or connection state, and before or after a refresh.

For more details, see Supported snap hooks.


An interfaces enables resources from one snap to be shared with another and with the system. Interfaces require a connection, which is commonly made automatically, or manually with the snap connect command.

For a snap to use an interface, its developer needs to have first defined its corresponding plugs and slots within a snap’s snapcraft.yaml file.

See Interface management for more details.


Layouts help snap developers make snap-confined elements accessible from locations such as /usr , /var and /etc inside the snap. This helps when using pre-compiled binaries and libraries that expect to find files and directories outside of locations referenced by $SNAP or $SNAP_DATA.

They cannot be used to expose elements to non-permitted locations on the host environment (such as exposing a file to /etc/ on the host filesystem).

See Snap layouts for more details.


LXD is a next generation system container manager. It offers a user experience similar to virtual machines but using Linux containers instead. It can be used by the snapcraft command to isolate the build process from the host system.

See Building with LXD for details.


Multipass is a lightweight VM manager for Linux, Windows and macOS. It’s designed for developers who want a fresh Ubuntu environment with a single command. It uses KVM on Linux, Hyper-V on Windows and HyperKit on macOS to run the VM with minimal overhead.

By default, the snapcraft command uses Multipass to isolate the build process from the host system.

See Building your snap for further details.

parallel installs

Parallel installs enable you to run multiple instances of the same snap on the same system. Each instance is completely isolated from all other instances, including its name, configuration, interface connections, data locations, services, applications and aliases.

See Parallel installs for more information.


Snaps update automatically, and by default, the snapd daemon checks for updates 4 times a day. Each update check is called a refresh.

When, and how often, these updates occur can be modified with the snap command. Updates can be set to occur on Friday at midnight, for example, or for specific days of the month, such as only the third Monday, or even the last Friday of the month, between 23:00 to 01:00 the next day.

See Managing updates for further details.

remote build

Remote build is a feature in Snapcraft (from Snapcraft 3.9+ onwards) that enables anyone to run a multi-architecture snap build process on remote servers using Launchpad. With remote build, you can build snaps for hardware you don’t have access to and free up your local machine for other tasks.

See Remote build for further details.


Snaps are app packages for desktop, cloud and IoT that are easy to install, secure, cross-platform and dependency-free, and snap is both the command line interface and the application package format. The command is used to install and remove snaps and interact with the wider snap ecosystem.

See Getting started for more details.


Snapcraft is both the command and the framework used to build your own snaps. The command and framework are cross-platform and can help you to easily build and publish your snaps to the Snap Store

See Snapcraft overview for more details.


snapd is the background service that manages and maintains your snaps.

Alongside its various service and management functions, snapd provides the snap command, implements the confinement policies that isolate snaps from the base system and from each other, and governs the interfaces that allow snaps to access specific system resources outside of their confinement.

See Snap documentation for more details.


Snappy was the predecessor to Ubuntu Core. The term is still occasionally used informally to refer to various aspects of the snap ecosystem, such as the command, the package format, the Snap Store and Ubuntu Core. It’s best to avoid using this term; use Snap or the Snap ecosystem instead.

See Snap documentation for general details about the snap ecosystem.


A snapshot is a copy of the user, system and configuration data stored by snapd for one or more snaps on your system.

Snapshots are generated manually with the snap save command and automatically when a snap is removed. A snapshot can be used to backup the state of your snaps, revert snaps to a previous state and to restore a fresh snapd installation to a previously saved state.

See Snapshots for further details.

Snap Store

Snap Store provides a place to upload your snaps, and for users to browse and install. It hosts thousands of snaps for millions of users on multiple architectures across 41 different Linux distributions.

See for more details.


Spread is our open source testing utility that enables multiple shell scripts to run in parallel on many different systems in an entirely reproducible way. It currently runs a process that tests the snap ecosystem on real-world platforms 150,000 times a day.

See for the project’s code repository.


Strict is the default snap confinement level. It runs snaps in complete isolation, and consequently, with no access your files, network, processes or any other system resource without requesting specific access via an interface.

See Snap confinement for more details.


Tracks enable snap developers to publish multiple supported releases of their application under the same snap name. They are one of the levels of channel subdivision.

See Tracks for more details.

Ubuntu Core

Ubuntu Core is Ubuntu for embedded devices and built using snaps. The operating system is read-only, and updates are transactional, with an absolute emphasis on maintaining a system’s integrity.

See Ubuntu Core for more details.

Last updated 9 days ago. Help improve this document in the forum.