The weird problem is that the servo refuses to move to the data flowing in until I open up the serial monitor on the pc.
This may be off topic but I had a similar problem, the serial monitor resets the arduino so everything works as it should, but nothing works when you first power up the arduino.
My problem was that some of my sensors needed time to powerup and settle before communicating to them, I had to put a small delay at the start of my sketch to allow for this, this delay allowed for everything to powerup and wait for instructions.
By using the serial monitor everything is already powered up and ready, it just gets a software reset when the serial monitor is opened which starts everything working as it should.