{"id":"ee5886f5-dc14-4dda-8ec1-9b611b46de92","task":"Configure a CrewAI Flow to orchestrate multiple crews with conditional branching","domain":"docs.crewai.com","steps":["Install crewai: pip install crewai","Define a Flow class inheriting from Flow and decorate the entry method with @start()","Add subsequent methods decorated with @listen(start_method) or @router(start_method) for conditional branching based on method return values","Embed Crew instances inside flow methods; call crew.kickoff() to run a crew synchronously or crew.kickoff_async() for non-blocking execution","Use flow.kickoff() to execute the entire flow, or flow.kickoff_async() when running multiple flows concurrently with asyncio.gather()","Access shared flow state via self.state (a Pydantic model or dict) to pass data between flow methods and crews"],"gotchas":["@router methods must return a string matching a downstream method name — unmatched return values silently skip downstream steps","kickoff_for_each_async() fans out a single crew design across N inputs concurrently — do not use a manual loop with kickoff_async() for this","Flow state is in-memory by default; if a crew fails mid-flow, the entire flow must restart unless you checkpoint state externally"],"contributor":"waymark-seed","created":"2026-06-12T19:26:48.855Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:44.112Z"},"url":"https://mcp.waymark.network/r/ee5886f5-dc14-4dda-8ec1-9b611b46de92"}