Coda keeps on each client a list of instructions about what (if anything) it should try to cache, and with what priority. You configure this list with the hoard command, which normally takes its instructions from a hoard file. That is, you could give it a lot of commands manually, but it might get rather tedious.
Here is a simple example of a hoard file:
clear add /coda/projects 100:c+
It says to clear the stored hoard list, and to add the directory /coda/projects with a priority of 100. Files and directories with larger priority get preference over others. The code `c+' says to include with this directory all the files and directories in it (though not their subdirectories), as well as files and directories that might get added to /coda/projects in the future. The optional directory codes are c for children and d for descendents, where d includes all subdirectories in a volume. A `+' on c or d means include not just the present contents but also future contents. Note that clear and add can be abbreviated to c and a.
The children or descendents of a directory do not include volumes mounted in the directory, since a mount mount is something like a symbolic link. If you wish to hoard files or directories which are in another volume, you must specify at least one path to that volume in the hoard file.
Coda comes with a program called spy, which is designed to help you construct hoard files. Suppose you intend to use some program inside Coda which has a lot of subdirectories and files, only some of which you may need; for example, suppose you intend to use emacs. You start spy, redirecting its output to a file, Run emacs, doing the sort of thing you expect to be doing. Spy records all the bits of emacs inside Coda that you have used.