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.
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.