The router architecture you described is really the key insight here. Most projects that try to get multiple LLMs interacting just throw them all in a shared context and hope for the best, but flattening the group chat into individual user/assistant threads per bot is a much cleaner approach. It sidesteps the fundamental limitation of the API format while preserving the feel of a real conversation. The NEEDS_TURN flag preventing quiet players from disappearing is exactly the kind of detail that separates a working demo from something that actually holds up across multiple games. The state machine approach to game phases is also something I have seen work well in complex multi-agent systems, enforcing structured outputs per phase rather than letting the model free-form everything. The reminders appended to the last message rather than stored in history is a smart detail too, since it keeps the instruction fresh without bloating the context. And the play styles with opposite villager/werewolf motivations is a nice touch, forcing the same personality to express itself differently depending on the role. Looking forward to part two, especially around how models handle deception and self-preservation when they actually have something to lose.