A Zettelstore must store its zettel somehow and somewhere.
In most cases you want to store your zettel as files in a directory.
Under certain circumstances you may want to store your zettel elsewhere.

An example is the [predefined zettel](00001005090000) that come with a Zettelstore.
They are stored within the software itself.
In another situation you may want to store your zettel volatile, e.g. if you want to provide a sandbox for experimenting.

To cope with these (and more) situations, you configure Zettelstore to use one or more *boxes*.
This is done via the `box-uri-X` keys of the [startup configuration](00001004010000#box-uri-X) (X is a number).
Boxes are specified using special [URIs](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier), somehow similar to web addresses.

The following box URIs are supported:



All boxes that you configure via the `box-uri-X` keys form a chain of boxes.
If a zettel should be retrieved, a search starts in the box specified with the `box-uri-2` key, then `box-uri-3` and so on.
If a zettel is created or changed, it is always stored in the box specified with the `box-uri-1` key.
This allows to overwrite zettel from other boxes, e.g. the predefined zettel.

If you use the `mem:` box, where zettel are stored in volatile memory, it only makes sense if you configure it as `box-uri-1`.
Such a box will be empty when Zettelstore starts, and only the first box will receive updates.
You must ensure that your computer has enough RAM to store all zettel.