The app keys and values in snapcraft.yaml detail the applications and services that a snap wants to expose, including how they’re executed and which resources they can access.

See Snapcraft top-level metadata and Snapcraft parts metadata for details on how apps and parts are configured within snapcraft.yaml.


Type: dict

A map of app-names representing entry points to run for the snap.


Type: dict

The name exposed to run a program inside the snap.

If <app-name> is the same as name, the program will be invoked as app-name. However, if they differ, the program will be exposed as <snap-name>.<app-name>.

Keys for apps

The following are keys that can be within apps. (for example, apps.<app-name>.daemon):


Type enum

Disables the creation of an env variable wrapper.

Snapcraft normally creates a wrapper holding common environment variables. Disabling this could be useful for minimal base snaps without a shell, and for statically linked binaries with no use for an environment.


Type: string

The command to run inside the snap when <app-name> is invoked.

The command can be in either a snap runtime’s command path, $SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin, or an executable path relative to $SNAP.

If daemon is set, this will be the command to run the service. Only a snap with classic confinement can use a relative path because PATH isn’t modified by a wrapper in classic confinement. See Classic confinement for more details.

Examples: app-launch for an excecutable placed under $SNAP/bin. With classic confinement, bin/app-launch for an executable placed under $SNAP/bin.


Type: string

An identifier to a desktop-id within an external appstream file.

See Using external metadata for more details.


Type: enum

Declares that <app-name> is a system daemon.

Can be one of the following:

  • simple: the command is the main process.
  • oneshot: the configured command will exit after completion
  • forking: the configured command calls fork() as part of its start-up. The parent process is then expected to exit when start-up is complete
  • notify: the command configured will send a signal to systemd to indicate that it’s running.


Type: string

Location of the .desktop file.

A path relative to the prime directory pointing to a desktop file, commonly used to add an application to the launch menu. Snapcraft will take care of the rest.

Examples: usr/share/applications/my-app.desktop and share/applications/my-app.desktop


Type: dict

A set of key-value pairs specifying the contents of environment variables.

Key is the environment variable name; Value is the contents of the environment variable.

Example: LANG: C.UTF-8


Type: string

The socket abstract name or socket path.

TCP socket syntax: <port>, [::]:<port>, [::1]:<port> and<port>
UNIX socket syntax: $SNAP_DATA/<path>, $SNAP_COMMON/<path> and @snap.<snap name>.<suffix>


Type: type[object]

<app-name> attributes to pass through to snap.yaml without snapcraft validation.

See Using in-development features for further details.


Type: list[string]

Plugs for interfaces to connect to.

<app-name> will make these plug connections when running in strict confinement For interfaces that need attributes, see top-level plugs.

Example: [home, removable-media, raw-usb]


Type: string

Runs a command from inside the snap after a service stops.

Requires daemon to be set as the snap type.


Type: enum

Condition to restart the daemon under.

Defaults to on-failure. Other values are [on-failure|on-success|on-abnormal|on-abort|always|never]. Refer to systemd.service manual for details.

Requires daemon to be set as the snap type.


Type: list[string]

Slots for interfaces to connect to.

<app-name> will make these slot connections when running in strict confinement only. For interfaces that need attributes, see top-level slots.

Example: [home, removable-media, raw-usb]


Type: dict

Maps a daemon’s sockets to services and activates them.

Requires an activated daemon socket.

Requires apps.<app-name>.plugs to declare the network-bind plug.


Type: integer

The mode of a socket in octal.


Type: string

The path to a command inside the snap to run to stop the service.

Requires daemon to be set as the snap type.


Type: string

The length of time to wait before terminating a service.

Time duration units can be 10ns, 10us, 10ms, 10s, 10m. Termination is via SIGTERM (and SIGKILL if that doesn’t work).

Requires daemon to be set as the snap type.