Choreography is a decentralized coordination pattern where the control logic for interactions is distributed among all participating components, with each agent or service autonomously deciding its next action based on observed events or received messages. This contrasts with orchestration, which uses a central controller. In choreography, components communicate directly via asynchronous messaging patterns like publish-subscribe (Pub/Sub), creating a more loosely coupled and scalable system. Each participant knows its role in the overall workflow without needing a global conductor.
