Makes use of ncurses (shipped with most distros) for UI stuff
See protocol.md for interfacing
for the most part does not check that the format of requests/responses are correct and just trusts that they follow the correct format
Makes use of snowflake IDs generated by code from https://github.com/lkebin/snowflake-c.