diff --git a/README.md b/README.md
index b97bbdd..15e22c9 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,39 @@ This is the manual for the system.
- Project homepage:
- Source code:
+## Repository contents
+
+The manual text:
+
+ - [`src/`](src/) contains the markdown files making up the main source text of the manual.
+
+Support software:
+
+ - [`book.prs`](book.prs) and the corresponding binary, `book.prb`, describe the protocol used
+ for communication between mdbook and its plugins.
+ - [`book.toml`](book.toml) is the configuration file for mdbook.
+ - [`mdbook_plugin.py`](mdbook_plugin.py) is a support library for writing mdbook plugins.
+ - [`mdbook-ditaa`](mdbook-ditaa) is a plugin for mdbook that renders (and caches) ditaa
+ diagrams from the source text into SVG for the built website.
+ - [`mdbook-pseudocode`](mdbook-pseudocode) is a plugin for mdbook that makes a pretty
+ rendering of pseudocode snippets in the source text.
+
+After running a build, the `./book` subdirectory contains the rendered result.
+
+## Building the manual
+
+You will need several tools:
+
+ - [mdbook](https://rust-lang.github.io/mdBook/)
+
+ - a JVM and [ditaa version 0.11.0](https://github.com/stathissideris/ditaa/releases)
+
+ - Python 3.x and the [Preserves python package](https://pypi.org/project/preserves/) (`pip
+install -U preserves`)
+
+Running `make` or `make all` should do the trick. See also the [`Makefile`](Makefile) and
+[`.envrc`](.envrc).
+
## Acknowledgements
Much initial work on Synit was made possible by a generous grant from