Added README and script
diff --git a/README-composite.md b/README-composite.md
new file mode 100644
index 0000000..420978d
--- /dev/null
+++ b/README-composite.md
@@ -0,0 +1,58 @@
+# Experimental CompositeNodeStore setup
+
+This setup is an example of how the CompositeNodeStore can be used with
+Apache Sling. It is intended as an example that passes a smoke test, and not
+as something that is robust or supported.
+
+## High-level flow
+
+The process used to setup the CompositeNodeStore is the following
+
+1. Create a _composite-seed_ instance that is used to populate the `/libs` and
+   `/apps` mounts
+1. Copy the resulting segmentstore under a well-known location for the
+   _composite-run_ instance so that it can be used as a read-only mount
+1. Launch the _composite-run_ instance, which picks up the mount repository and
+   uses the Oak `InitialContentMigrator` to populate the default mount as well
+
+## Steps to launch a composite setup
+
+Note 1: all work is done under the `sling` directory, and the `oak.txt` provisioning model
+file has some hardcoded paths. These could be removed with some effort.
+
+Note 2: as of 2020-04-01, this depends on the unreleased `org.apache.sling.jcr.oak.server`
+bundle at version 1.2.4. You can rebuild it from the tag or download it from
+the staging repository at https://repository.apache.org/content/groups/staging/org/apache/sling/org.apache.sling.jcr.oak.server/1.2.4/ .
+
+Prepare the _composite-seed_ instance
+
+```
+$ ./create-seed.sh
+```
+
+Once Sling has started, shut it down.
+
+Prepare the _composite-run_ directory structure
+
+```
+$ ./prepare_composite.sh
+```
+
+Launch the composite instance
+
+```
+$ ./run_composite.sh
+```
+
+You should be running a CompositeNodeStore-backed instance at this point. You can validate this by
+accessing Composum and trying to create a node under `/libs` - it will fail.
+
+## Troubleshooting
+
+In addition to verifying the logs, the `explore_repo.sh` script will allow you to inspect the content
+of a local SegmentNodeStore. Usage
+
+```
+$ ./explore_repo.sh segment_store_dir
+# example: ./explore_repo.sh sling/sling-composite/repository-libs/segmentstore-composite-mount-libs/
+```
\ No newline at end of file
diff --git a/create_seed.sh b/create_seed.sh
new file mode 100755
index 0000000..c2717a9
--- /dev/null
+++ b/create_seed.sh
@@ -0,0 +1,12 @@
+#!/bin/sh -e
+
+echo "-----------------------------------"
+echo "| PLEASE SHUTDOWN SLING MANUALLY  |"
+echo "| AFTER STARTUP IS COMPLETE       |"
+echo "-----------------------------------"
+
+set +x
+sleep 3
+
+rm -rf sling/sling-seed
+java -jar target/org.apache.sling.starter-12-SNAPSHOT.jar -Dsling.run.modes=oak_composite_seed -c sling/sling-seed
diff --git a/explore_repo.sh b/explore_repo.sh
new file mode 100755
index 0000000..0cbec3b
--- /dev/null
+++ b/explore_repo.sh
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+
+if [ $# -ne 1 ]; then
+    echo "Usage: $0 repo_dir"
+    exit 1
+fi
+
+repo_dir=$1
+
+if [ ! -d $repo_dir ]; then
+    echo "${repo_dir} is not a directory"
+    exit 2
+fi
+
+oak_version=1.26.0
+oak_run_jar=$HOME/.m2/repository/org/apache/jackrabbit/oak-run/${oak_version}/oak-run-${oak_version}.jar
+if [ ! -f ${oak_run_jar} ]; then
+    mvn dependency:get -Dartifact=org.apache.jackrabbit:oak-run:${oak_version}
+fi
+
+java -jar ${oak_run_jar} explore ${repo_dir}
diff --git a/prepare_composite.sh b/prepare_composite.sh
new file mode 100755
index 0000000..f8df3c6
--- /dev/null
+++ b/prepare_composite.sh
@@ -0,0 +1,5 @@
+#!/bin/sh -ex
+composite_libs_mount=sling/sling-composite/repository-libs/segmentstore-composite-mount-libs
+rm -rf sling/sling-composite
+mkdir -p ${composite_libs_mount}
+cp -R sling/sling-seed/repository-libs/segmentstore/* ${composite_libs_mount}
diff --git a/run_composite.sh b/run_composite.sh
new file mode 100755
index 0000000..a4bb430
--- /dev/null
+++ b/run_composite.sh
@@ -0,0 +1,3 @@
+#!/bin/sh -ex
+java -jar target/org.apache.sling.starter-12-SNAPSHOT.jar -Dsling.run.modes=oak_composite_run -c sling/sling-composite
+