add a readme
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..5c0ba1f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,71 @@
+<!--
+ Copyright 2014, NICTA
+
+ This software may be distributed and modified according to the terms of
+ the BSD 2-Clause license. Note that NO WARRANTY is provided.
+ See "LICENSE_BSD2.txt" for details.
+
+ @TAG(NICTA_BSD)
+-->
+
+libsel4utils
+=============
+
+libsel4utils provides OS-like utilities for building benchmarks and applications on seL4.
+Although the library attempts to be policy agnostic, some decisions must be made.
+
+This library is intended to be used to quickly get tests, benchmarks and prototypes off the ground
+with minimal effort.
+It can also be used as a reference for 'how-to' implement OS mechanisms on seL4.
+
+Utilities provided by this library:
+
+ * threads
+ * processes
+ * elf loading
+ * virtual memory management
+ * stack switching
+ * debugging tools
+
+No allocator is provided, although any allocator that implements the seL4 vka interface can be used
+(we recommend libsel4allocman).
+
+Dependencies
+------------------
+
+libsel4utils depends on libsel4vka, libsel4vspace, libutils, libelf, libcpio, libsel4.
+
+Repository overview
+-------------------
+
+*include/sel4utils*:
+
+ * client_server_vspace.h -- a virtual address space that proxies calls between two different
+ vspaces
+ * elf.h -- elf loading.
+ * mapping.h -- page mapping.
+ * process.h -- process creation, deletion.
+ * profile.h -- profiling.
+ * sel4_debug.h -- for printing seL4 error codes.
+ * stack.h -- switch to a newly allocated stack.
+ * thread.h -- threads (kernel threads) creation, deletion.
+ * util.h -- includes utilities from libutils.
+ * vspace.h -- virtual memory management (implements vspace interface)
+ * vspace_internal.h -- virtual memory management internals, for hacking the above.
+
+*arch_include/sel4utils*:
+
+ * util.h -- utils to assist in writing arch independent code.
+
+Configuration options
+----------------------
+
+* SEL4UTILS_STACK_SIZE -- the default stack size to use for processes and threads.
+* SEL4UTILS_CSPACE_SIZE_BITS -- the default cspace size for new processes (threads use the current
+ cspace).
+
+License
+========
+
+The files in this repository are release under standard open source licenses.
+Please see individual file headers and the `LICENSE_BSD2`.txt file for details.