diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2b6943f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,148 @@
+Copyright 2016 IBM
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+# Intro
+The autotools of this requires the autotools-archive package for your
+system
+
+---
+
+Notes on messages:
+
+## Layout
+```
+Byte 0: COMMAND
+Byte 1: Sequence
+Byte 2-12: Data
+Byte 13: Response code
+Byte 14: Host controlled status reg
+Byte 15: BMC controlled status reg
+```
+## Commands
+```
+RESET_STATE
+GET_MBOX_INFO
+GET_FLASH_INFO
+READ_WINDOW
+CLOSE_WINDOW
+WRITE_WINDOW
+WRITE_DIRTY
+WRITE_FENCE
+COMPLETED_COMMANDS
+ACK
+```
+## Sequence
+Unique message sequence number
+
+## Responses
+```
+SUCCESS
+PARAM_ERROR
+WRITE_ERROR
+SYSTEM_ERROR
+TIMEOUT
+```
+
+## Information
+- Interrupts via control regs
+- Block size 4K
+- All multibyte messages are little endian
+
+### Commands in detail
+```
+	Command:
+		RESET_STATE
+	Data:
+		-
+	Response:
+		-
+
+	Command:
+		GET_MBOX_INFO
+	Data:
+		Data 0: API version
+	Response:
+		Data 0: API version
+		Data 1-2: read window size in blk size
+		Data 3-4: write window size in blk size
+
+	Command:
+		CLOSE_WINDOW
+		Data:
+			-
+		Response:
+			-
+	Command:
+		GET_FLASH_INFO
+		Data:
+			-
+		Response:
+			Data 0-3: Flash size
+			Data 4-7: Erase granule
+
+	Command:
+		READ_WINDOW
+		Data:
+			Data 0-1: Read window offset in blk size
+		Response:
+			Data 0-1: Read window pos in blk size
+
+	Command:
+		WRITE_WINDOW
+		Data:
+			Data 0-1: Write window offset in blk size
+		Response:
+			Data 0-1: Write window pos in blk size
+
+	Command:
+		WRITE_DIRTY
+		Data:
+			Data 0-1: Offset within window in blk size
+			Data 2-5: Number of dirty bytes
+		Response:
+			-
+
+	Command
+		WRITE_FENCE
+		Data:
+			Data 0-1: Offset within window in blk size
+			Data 2-5: Number of dirty bytes
+		Response:
+			-
+
+	Command:
+		ACK
+		Data:
+			Bits in the BMC reg to ack
+		Response:
+			*clears the bits*
+			-
+
+	Command:
+		COMPLETED_COMMANDS
+		Data:
+			-
+		Response:
+			Data 0: Number of seq numbers to follow
+			Data 1-N: Completed sequence numbers
+
+	BMC notifications:
+		If the BMC needs to tell the host something then it simply
+		writes to Byte 15. The host should have interrupts enabled
+		on that register, or otherwise be checking it regularly.
+		 - BMC reboot
+		 - Command complete
+		   The host should issue a command complete request to find
+		   out the sequence numbers to commands which have completed
+```
