CrewAI synthesis

Type: agentic-system-analyses/types/agentic-system-synthesis.md

Bounded synthesis

From a request to agent work

CrewAI is an enclosing runtime: it schedules tasks and owns model/tool execution, while exposing standalone agents and programmable Flows. This account covers the shipped open-source framework at commit 3da2d4e9932b5f2fa9aa73ea9245e0f8b5c154f8, with an applicability cutoff of 2026-10-15. Its basis is SRC-1 implementation and attributed doctrine/design in the Source register. No execution trace, successful test result or causal experiment was supplied. Hosted CrewAI implementations, downstream application policy and external model, embedding and storage internals are not frozen evidence. Whole-system target scope does not imply exhaustive inspection of every adapter or retained-state consumer. No additional source reads were performed for this synthesis.

CLI and generated-project drivers lead to Crew or Flow execution. In ordinary Crew kickoff, code advances the configured task list; an agent model chooses intermediate actions. Hierarchical mode assigns scheduled tasks to a manager, rather than letting that model replace the scheduler. Task preparation supplies selected prior outputs, memory, knowledge, tools and training instructions. Standalone Agent kickoff owns a separate preparation/finalization route. Flow instead selects Python methods from start/listener/router conditions and invokes their bodies directly; these bodies need not use an agent loop. See RT-RTE-crew-kickoff, RT-RTE-agent-kickoff and RT-RTE-flow-execution.

The model/tool loop uses native tool calling when supported and otherwise ReAct parsing. Registered before-tool hooks can veto calls on the inspected native and synchronous/asynchronous ReAct paths; post-tool hooks can change observations. This is conditional protocol enforcement, not an operating-system sandbox or universal mediation. Direct Python calls, callbacks and Flow bodies can bypass those helpers. Deployed credentials and service permissions were not supplied. See RT-RTE-tool-dispatch and RT-CLM-tool-veto.

Delegation, checking and delivery

The representative workflow follows connected conditional branches of a hierarchical Crew with ordered synchronous tasks: the manager delegates to a configured coworker, receives its answer, and submits a candidate to a configured Task guardrail. It is a code-supported workflow, not an observed successful run. Recipient preparation limits the available coworkers. Delegation passes a newly constructed task and selected context to the chosen agent, not the manager's entire transcript. The coworker retains its own instructions, retrieval and tools. The helper calls agent execution directly, so constructing the delegated Task does not independently run the outer Task guardrail/callback/file lifecycle. See RT-RTE-agent-delegation.

The scheduled Task's guardrail can accept, replace or reject the manager's candidate. Rejection causes bounded re-execution with validation-error context, potentially repeating delegation and tool effects. Exhaustion raises instead of advancing. Crucially, Crew executor memory submission precedes this gate; rejection does not retract that memory or earlier tool effects. Standalone finalization checks before its kickoff-output memory save. Ordered checks and later payload-changing hooks also prevent treating an accepted candidate as an immutable final artifact. These are configured progression controls whose factual license depends on the supplied evaluator, not built-in truth certification: RT-RTE-output-guardrail, RT-CLM-output-validation.

After task progression, Crew selects the last truthy raw task output as its top-level result and includes all task outputs and token usage. Aggregate hooks can still replace the payload. The selected nonstreaming workflow drains background writes and returns an API result; optional files are separate local artifacts. Neither return nor write draining establishes correct output, successful persistence or external receipt. See the workflow delivery account.

What later work receives

With memory configured, task completion can feed task description, role, expected result and output into statement extraction. Explicit API/tool writes bypass extraction but still enter encoding. Encoding embeds content, rejects near duplicates, resolves organization and may ask a model to keep, update, delete or insert against similar records. Fully supplied fields with no sufficiently similar records allow insertion without model analysis; extraction failure can retain the whole input blob, and consolidation failure defaults to insertion. Software admits these transformations without a separate human approval of each derived statement. See MEM-RTE-memory-encoding, EPI-RTE-consolidation-check and EPI-RTE-plan-application.

Retained text, symbolic selection/provenance fields and dense embedding state have different consumers. Built-in memory uses vector storage with filesystem backing; arbitrary supplied backends remain unresolved. Consolidation compares at most the first 200 characters of each old record's content. Its update reconstruction can reset source/private fields to defaults, while plan reasons need not persist or reach later readers. This is an implementation-supported counterexample to invariant privacy/provenance, not an observed leak. See MEM-OBJ-memory-content, MEM-OBJ-memory-metadata, MEM-OBJ-memory-vector and MEM-CLM-retention-limits.

Before later work, runtime task preparation requests recall from the task description with limit five; modern standalone preparation requests twenty. A foreground model can instead request Search memory. Recall waits for pending saves, then selects and ranks records through embeddings, filters and semantic/recency/importance scoring. Deep recall conditionally adds model query analysis and budgeted exploration, but its final result remains ranked records, not an accepted synthesized answer. Search memory can request twenty per query without a global twenty-result cap. These are count limits, not hard token budgets. See MEM-RTE-memory-recall.

Automatic preparation supplies selected memories to the later model without its own request; the recall service itself fulfills a runtime request. Model-requested Search memory is a separate request path. Formatted matches expose content, score, categories and non-null metadata, but omit explicit evidence gaps, source/private fields and match reasons. Delivery therefore does not establish downstream awareness of caveats, semantic reliance or compliance. Scores measure relevance, not truth probability. Scope/source controls do not establish authenticated tenancy. See EPI-RTE-memory-selection and MEM-BAP-memory-context.

Knowledge ingestion separately admits configured source chunks and later supplies selected snippets to task prompts. It acquires content with unresolved source warrant; storage and retrieval do not make it a produced finding. Static skills instead disclose configured instructions by catalog label, with no established automatic skill-writing route. Overflow summarization replaces non-system history with model text while preserving system messages and files for the next invocation; it establishes continuity wiring, not losslessness or automatic verbatim reload. See MEM-RTE-knowledge-context, RT-RTE-skill-disclosure and RT-RTE-context-summary.

Recovery has other consumers. Replay reconstructs preceding task outputs for resumed task context. Flow UUID reload hydrates the latest saved state but does not alone skip completed methods. Runtime checkpoints reconstruct entities/event state and can carry completed-execution information. Default Flow/replay storage is SQLite; default runtime checkpoints are JSON files, with a SQLite alternative. These are reconstruction routes, not semantic claim acceptance or exactly-once external effects. Explicit update/forget/reset changes future availability without retracting prior prompts or checkpoints; inspected read-only checks differ across methods. See MEM-RTE-output-replay, MEM-OBJ-flow-state, MEM-RTE-checkpoint-restore and MEM-RTE-memory-maintenance.

Feedback and the limits of improvement claims

The strongest supported contribution is retained-text adaptation with implemented later consumers. Crew training collects initial outputs, human feedback and revised outputs, then a model evaluator produces persisted role-keyed suggestions. Later task prompts append them as imperative instructions. Flow's learn-enabled feedback path distills output/feedback into retained lessons and can use recalled content to rewrite eligible later outputs before human review. Human feedback supplies evaluative input, not approval of every derived suggestion or lesson. Flow review can receive public non-lesson records too: learn_source controls private-record visibility, not exclusive lesson lineage. See RT-RTE-crew-training, RT-BAP-training-instructions, MEM-RTE-feedback-lessons and MEM-BAP-feedback-review.

Together with task extraction and continuation summaries, these support four wired automatic trace-to-retained-artifact-to-later-consumer chains. That write-route finding does not require provider-weight updates or demonstrated improvement. The unresolved question is whether the retained changes improve future capacity, not whether later-consumer routes exist. The profile verification accepts these local positives while retaining partial coverage on every comparison axis. No provider parameter update follows from the inspected training path; provider internals remain uninspected in RT-CMP-agent-llm.

Independent property conclusions remain bounded. The accepted runtime does not establish theory-builder condition 1 (a formulated theory), condition 2 (decisions depending on that theory's content), condition 3 (content-directed criticism with blame and changed reliance), or condition 4 (the criticism's result shaping another round). Feedback records and suggestions are not enough to infer those properties, nor does missing rationale establish their absence. Criticism of a consumed theory improving future capacity is separately unestablished. Reflection and autonomy are also unestablished by these records, rather than negated by missing runs. See RT-RTE-crew-training and the report verification.

For self-improvement, the training and feedback routes wire evidence-responsive retained changes to later behavioral channels, supporting a marked dispositional pathway, not exercised self-improvement. Over later task/method invocations, subsequent operation causally depending on the change remains unobserved; independently measured successful improvement is also unsupplied. The objective of better later task/output quality would require criteria independent of the generated suggestions and an appropriate comparison. This conclusion is separate from the positive trace-fed write finding and from theory building: RT-RTE-crew-training, MEM-RTE-feedback-lessons.

Scenario-relative assessment and what would change it

For a configured multi-task workflow, the evidence supports selected handoffs, bounded retries and retained-context reuse. For a requirement that only approved results become memory, that all effects pass one policy gate, or that recovery cannot repeat effects, inspected ordering and alternate routes defeat the stronger interpretation. For a requirement of evidence-warranted knowledge production, extraction, relevance ranking and model approval do not suffice. Generated semantic relations remain indeterminate without instances; unknown entailment is not proof of conjecture. This is a comparison against named requirements, not a product ranking or system-wide epistemic grade. See RT-CLM-tool-veto, MEM-CLM-retention-limits and the epistemic bounded conclusion.

Inspectable executions linking source traces, derived artifacts and later consumer behavior would establish activation within their conditions. Independent task criteria and controlled comparisons could establish benefit and attribute it no more finely than the varied treatment. Persisted acceptance evidence and delivered provenance/caveats could support stronger warrant claims. A changed save/gate order or implemented withdrawal/compensation could alter the rejected-output retention assessment. Current test scoring reports model opinions; the CLI evaluation gate maps an opaque hosted done/passed verdict to process status, without supplied remote judgment or deployed CI evidence. Neither currently closes these gaps: EPI-RTE-test-scoring, EPI-RTE-eval-gate.

Limitations

limitation affected SRC IDs and record citations inspected boundary conclusion prevented evidence that would resolve it
No observed execution or causal comparison SRC-1; RT-RTE-crew-kickoff, RT-RTE-crew-training, MEM-RTE-memory-recall Frozen framework implementation and doctrine/design; no supplied target runs Successful coordination, useful recall, exercised adaptation, improved future capacity and causal benefit cannot be concluded Trace-linked executions and independently specified outcome comparisons, with controlled interventions for component attribution
Caller and delivery inventory is incomplete, including deprecated LiteAgent SRC-1; MEM-RTE-memory-recall, MEM-RTE-memory-encoding, report verification Limits Detailed modern Crew/Agent/tool routes; verifier additionally inspected LiteAgent last-user-input recall at limit ten, content-only system-message delivery and extracted-output save; file-cache/adapter consumers remain incomplete Exhaustive caller counts and universal formatted-score/metadata delivery comparisons are withheld; modern Agent budgets do not apply to all callers Accepted records tracing the additional caller and file/cache/adapter producer-selector-delivery-consumer chains
Backend durability and withdrawal semantics remain incomplete SRC-1; MEM-OBJ-memory-content, MEM-RTE-memory-maintenance, report verification Limits LanceDB and partial Qdrant inspection; supplied/custom backend alternatives unresolved Complete cross-process durability, global withdrawal/erasure and transactional multi-operation rollback cannot be concluded Full alternate-backend merge/delete and concurrency contracts with relevant persistence/withdrawal evidence
Knowledge conversions and custom persistence are unresolved SRC-1; MEM-RTE-knowledge-context, MEM-OBJ-knowledge-chunks, report verification Limits String slicing/content-only document admission traced; non-string parsers and custom RAG persistence not fully traced Parser-wide provenance, conversion fidelity and complete knowledge storage/withdrawal comparisons are withheld Source-specific admission, transformation, metadata preservation and later-consumer records, plus custom storage contracts
Pending feedback and opaque recovery payloads remain incomplete SRC-1; MEM-OBJ-flow-state, MEM-OBJ-runtime-state, MEM-RTE-checkpoint-restore, report verification Limits UUID/pending-feedback schemas, checkpoint serialization and selected restoration paths; async continuation, custom providers, migration and SQLite pruning incompletely traced Exact hidden-payload replay, complete pause/resume cleanup and exactly-once recovery comparisons are withheld Complete continuation and provider reconstruction records, payload-fidelity evidence and external-effect recovery contracts
External services and deployment controls are outside frozen implementation evidence SRC-1; Source register, RT-CMP-agent-llm, EPI-RTE-eval-gate Local bindings/adapters and local status predicate, not provider weights, hosted evaluator or deployed CI/permissions Provider correctness/stability, remote verdict warrant, deployment-wide enforcement and actual prevented shipment cannot be concluded Registered provider/service evidence and concrete deployment/CI consumers at an authorized expanded boundary