Spin Internal Data Layout
This page describes how Spin lays out its internal data on disk.
This document is provided as a reference for users wanting to diagnose problems or to reset Spin state. Don’t modify the contents of these directories. Spin updates these directories as you issue the relevant commands on the command line.
No stability guarantees apply to the internal layout. It may change between Spin versions.
Spin uses similar layouts across Linux, MacOS and Windows platforms, but the paths to various areas of the user’s home directory differ across the platforms. On this page, the following terms have the following meanings:
If Spin cannot resolve a base directory as listed above, it falls back to
Installed plugins are stored in
(DATA_DIR)/spin/plugins. A snapshot of the plugins registry is also stored under that directory at
(DATA_DIR)/spin/plugins/.spin-plugins; this is structured as a Git repository.
Note: If you install Spin using Homebrew, the plugins are stored at
If you delete the plugins directory, you will no longer be able to run your plugins (until you reinstall them), but other Spin operations will be unaffected.
Installed templates are stored in
Note: If you install Spin using Homebrew, the templates are stored at
If you delete the templates directory, you will lose access to your installed templates (until you reinstall them), but other Spin operations will be unaffected.
Downloaded application data, such as applications downloaded from registries or Wasm modules downloaded from URLs, are stored in
If you delete the application cache directory, Spin will automatically re-download the files as needed. Spin operations will be otherwise unaffected.
Inside the Application Cache
Reminder: This information is provided for diagnostic and entertainment purposes only, and may change across Spin versions. The only operation a user can safely undertake is to delete the entire
The application cache is divided into three subdirectories,
data directory contains all static assets referenced from applications distributed with remote registries. The
wasm directory contains all component sources referenced either in applications distributed with remote registries, or component sources from HTTP endpoints, directly referenced in
wasmdirectories are content addressable. This means that if multiple applications reference the same static file or component source, Spin will be able to determine if it has already been pulled (on that users operating system), based on its digest. This also means that if an application has an update, Spin will only pull the changes in the component sources and static assets.
manifests directory contains the registry manifests for entire apps distributed with remote registries. They are placed in subdirectories that identify the application based on the registry, repository, and digest (or tag).
tree command shows a typical (abbreviated) cache directory:
$ tree ~/Library/Caches/spin/registry/ ├── data │ ├── sha256:41a4649a8a8c176133792119cb45a7686767d3fa376ffd656e2ff76a6071fb07 │ └── sha256:da3fda2db338a73483068072e22f7e7eef27afdbae3db824e130932adce703ba ├── manifests │ └── ghcr.io │ └── radu-matei │ ├── hello-registries │ │ └── latest │ │ ├── config.json │ │ └── manifest.json │ └── spin-openai-demo │ └── v1 │ ├── config.json │ └── manifest.json └── wasm ├── sha256:0b985e7d43e719f34cbb54849759a2f8e7913c0f9b17bf7cb2b3d2458d33859e └── sha256:d5f9e1f6b61b90f7404e3800285f7860fe2cfc7d0116023efc370adbb403fe87