diff --git a/README.md b/README.md
new file mode 100644
index 0000000..368527f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,30 @@
+# Mixrs
+
+A practical multimedia controller for PulseAudio written in Rust.
+
+## Installation
+There is currently no convenient way to install Mixrs. To use this application, you have to compile it yourself and run it in the background.
+
+## Requirements
+- [PulseAudio](https://www.freedesktop.org/wiki/Software/PulseAudio/)
+- [playerctl](https://wiki.archlinux.org/title/MPRIS#Playerctl)
+- [libnotify](https://gitlab.gnome.org/GNOME/libnotify)
+
+## Usage
+Mixrs will create a unix socket at `/tmp/mixrs` and listen for instructions. Instructions are issued by sending a specific byte to the socket.
+
+## Example
+`echo -ne '\x2' | nc -N -U /tmp/mixrs` will send a byte containing `2` to the `/tmp/mixrs` socket and instruct Mixrs to mute / unmute the currently selected sink input.
+
+### Instructions
+|Byte|Instruction|Detail|
+|---|---|---|
+|0|SelectNext|Selects the next sink input|
+|1|SelectPrevious|Selects the previous sink input|
+|2|ToggleMuteCurrent|Toggles the current sink input's muted state|
+|3|IncreaseCurrent|Increases the current sink input's volume by 5%|
+|4|DecreaseCurrent|Decreases the current sink input's volume by 5%|
+|5|GetCurrent|Displays the current sink input's name|
+|6|PlayPauseCurrent|Tells the current sink input to toggle its `playing` state.
*Behavior varies based on the current sink input's player*|
+|7|PlayNext|Tells the current sink input to play the next item (e.g. the next song).
*Behavior varies based on the current sink input's player*|
+|8|PlayPrevious|Tells the current sink input to play the previous item (e.g. the previous song).
*Behavior varies based on the current sink input's player*|