Compare commits

..

4 Commits

2064 changed files with 37651 additions and 167709 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -1,21 +0,0 @@
name: "CodeQL Config"
paths-ignore:
# Ignore template files - these are boilerplate code that shouldn't be analyzed
- "src/crewai/cli/templates/**"
# Ignore test cassettes - these are test fixtures/recordings
- "tests/cassettes/**"
# Ignore cache and build artifacts
- ".cache/**"
# Ignore documentation build artifacts
- "docs/.cache/**"
paths:
# Include all Python source code
- "src/**"
# Include tests (but exclude cassettes)
- "tests/**"
# Configure specific queries or packs if needed
# queries:
# - uses: security-and-quality

63
.github/security.md vendored
View File

@@ -1,50 +1,27 @@
## CrewAI Security Policy ## CrewAI Security Vulnerability Reporting Policy
We are committed to protecting the confidentiality, integrity, and availability of the CrewAI ecosystem. This policy explains how to report potential vulnerabilities and what you can expect from us when you do. CrewAI prioritizes the security of our software products, services, and GitHub repositories. To promptly address vulnerabilities, follow these steps for reporting security issues:
### Scope ### Reporting Process
Do **not** report vulnerabilities via public GitHub issues.
We welcome reports for vulnerabilities that could impact: Email all vulnerability reports directly to:
**security@crewai.com**
- CrewAI-maintained source code and repositories ### Required Information
- CrewAI-operated infrastructure and services To help us quickly validate and remediate the issue, your report must include:
- Official CrewAI releases, packages, and distributions
Issues affecting clearly unaffiliated third-party services or user-generated content are out of scope, unless you can demonstrate a direct impact on CrewAI systems or customers. - **Vulnerability Type:** Clearly state the vulnerability type (e.g., SQL injection, XSS, privilege escalation).
- **Affected Source Code:** Provide full file paths and direct URLs (branch, tag, or commit).
- **Reproduction Steps:** Include detailed, step-by-step instructions. Screenshots are recommended.
- **Special Configuration:** Document any special settings or configurations required to reproduce.
- **Proof-of-Concept (PoC):** Provide exploit or PoC code (if available).
- **Impact Assessment:** Clearly explain the severity and potential exploitation scenarios.
### How to Report ### Our Response
- We will acknowledge receipt of your report promptly via your provided email.
- Confirmed vulnerabilities will receive priority remediation based on severity.
- Patches will be released as swiftly as possible following verification.
- **Please do not** disclose vulnerabilities via public GitHub issues, pull requests, or social media. ### Reward Notice
- Email detailed reports to **security@crewai.com** with the subject line `Security Report`. Currently, we do not offer a bug bounty program. Rewards, if issued, are discretionary.
- If you need to share large files or sensitive artifacts, mention it in your email and we will coordinate a secure transfer method.
### What to Include
Providing comprehensive information enables us to validate the issue quickly:
- **Vulnerability overview** — a concise description and classification (e.g., RCE, privilege escalation)
- **Affected components** — repository, branch, tag, or deployed service along with relevant file paths or endpoints
- **Reproduction steps** — detailed, step-by-step instructions; include logs, screenshots, or screen recordings when helpful
- **Proof-of-concept** — exploit details or code that demonstrates the impact (if available)
- **Impact analysis** — severity assessment, potential exploitation scenarios, and any prerequisites or special configurations
### Our Commitment
- **Acknowledgement:** We aim to acknowledge your report within two business days.
- **Communication:** We will keep you informed about triage results, remediation progress, and planned release timelines.
- **Resolution:** Confirmed vulnerabilities will be prioritized based on severity and fixed as quickly as possible.
- **Recognition:** We currently do not run a bug bounty program; any rewards or recognition are issued at CrewAI's discretion.
### Coordinated Disclosure
We ask that you allow us a reasonable window to investigate and remediate confirmed issues before any public disclosure. We will coordinate publication timelines with you whenever possible.
### Safe Harbor
We will not pursue or support legal action against individuals who, in good faith:
- Follow this policy and refrain from violating any applicable laws
- Avoid privacy violations, data destruction, or service disruption
- Limit testing to systems in scope and respect rate limits and terms of service
If you are unsure whether your testing is covered, please contact us at **security@crewai.com** before proceeding.

View File

@@ -1,48 +0,0 @@
name: Build uv cache
on:
push:
branches:
- main
paths:
- "uv.lock"
- "pyproject.toml"
schedule:
- cron: "0 0 */5 * *" # Run every 5 days at midnight UTC to prevent cache expiration
workflow_dispatch:
permissions:
contents: read
jobs:
build-cache:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.8.4"
python-version: ${{ matrix.python-version }}
enable-cache: false
- name: Install dependencies and populate cache
run: |
echo "Building global UV cache for Python ${{ matrix.python-version }}..."
uv sync --all-groups --all-extras --no-install-project
echo "Cache populated successfully"
- name: Save uv caches
uses: actions/cache/save@v4
with:
path: |
~/.cache/uv
~/.local/share/uv
.venv
key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}

View File

@@ -1,103 +0,0 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL Advanced"
on:
push:
branches: [ "main" ]
paths-ignore:
- "lib/crewai/src/crewai/cli/templates/**"
pull_request:
branches: [ "main" ]
paths-ignore:
- "lib/crewai/src/crewai/cli/templates/**"
jobs:
analyze:
name: Analyze (${{ matrix.language }})
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required for all workflows
security-events: write
# required to fetch internal or private CodeQL packs
packages: read
# only required for workflows in private repositories
actions: read
contents: read
strategy:
fail-fast: false
matrix:
include:
- language: actions
build-mode: none
- language: python
build-mode: none
# CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'rust', 'swift'
# Use `c-cpp` to analyze code written in C, C++ or both
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
config-file: ./.github/codeql/codeql-config.yml
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# If the analyze step fails for one of the languages you are analyzing with
# "We were unable to automatically build your code", modify the matrix above
# to set the build mode to "manual" for that language. Then modify this step
# to build your code.
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
shell: bash
run: |
echo 'If you are using a "manual" build mode for one or more of the' \
'languages you are analyzing, replace this with the commands to build' \
'your code, for example:'
echo ' make bootstrap'
echo ' make release'
exit 1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"

View File

@@ -2,9 +2,6 @@ name: Lint
on: [pull_request] on: [pull_request]
permissions:
contents: read
jobs: jobs:
lint: lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -18,27 +15,8 @@ jobs:
- name: Fetch Target Branch - name: Fetch Target Branch
run: git fetch origin $TARGET_BRANCH --depth=1 run: git fetch origin $TARGET_BRANCH --depth=1
- name: Restore global uv cache - name: Install Ruff
id: cache-restore run: pip install ruff
uses: actions/cache/restore@v4
with:
path: |
~/.cache/uv
~/.local/share/uv
.venv
key: uv-main-py3.11-${{ hashFiles('uv.lock') }}
restore-keys: |
uv-main-py3.11-
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.8.4"
python-version: "3.11"
enable-cache: false
- name: Install dependencies
run: uv sync --all-groups --all-extras --no-install-project
- name: Get Changed Python Files - name: Get Changed Python Files
id: changed-files id: changed-files
@@ -52,18 +30,7 @@ jobs:
- name: Run Ruff on Changed Files - name: Run Ruff on Changed Files
if: ${{ steps.changed-files.outputs.files != '' }} if: ${{ steps.changed-files.outputs.files != '' }}
run: | run: |
echo "${{ steps.changed-files.outputs.files }}" \ echo "${{ steps.changed-files.outputs.files }}" \
| tr ' ' '\n' \ | tr ' ' '\n' \
| grep -v 'src/crewai/cli/templates/' \ | grep -v 'src/crewai/cli/templates/' \
| grep -v '/tests/' \ | xargs -I{} ruff check "{}"
| xargs -I{} uv run ruff check "{}"
- name: Save uv caches
if: steps.cache-restore.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: |
~/.cache/uv
~/.local/share/uv
.venv
key: uv-main-py3.11-${{ hashFiles('uv.lock') }}

View File

@@ -1,81 +0,0 @@
name: Publish to PyPI
on:
release:
types: [ published ]
workflow_dispatch:
jobs:
build:
name: Build packages
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Build packages
run: |
uv build --all-packages
rm dist/.gitignore
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
publish:
name: Publish to PyPI
needs: build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/crewai
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.8.4"
python-version: "3.12"
enable-cache: false
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Publish to PyPI
env:
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
run: |
failed=0
for package in dist/*; do
if [[ "$package" == *"crewai_devtools"* ]]; then
echo "Skipping private package: $package"
continue
fi
echo "Publishing $package"
if ! uv publish "$package"; then
echo "Failed to publish $package"
failed=1
fi
done
if [ $failed -eq 1 ]; then
echo "Some packages failed to publish"
exit 1
fi

23
.github/workflows/security-checker.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
name: Security Checker
on: [pull_request]
jobs:
security-check:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11.9"
- name: Install dependencies
run: pip install bandit
- name: Run Bandit
run: bandit -c pyproject.toml -r src/ -ll

View File

@@ -3,19 +3,11 @@ name: Run Tests
on: [pull_request] on: [pull_request]
permissions: permissions:
contents: read contents: write
env: env:
OPENAI_API_KEY: fake-api-key OPENAI_API_KEY: fake-api-key
PYTHONUNBUFFERED: 1 PYTHONUNBUFFERED: 1
BRAVE_API_KEY: fake-brave-key
SNOWFLAKE_USER: fake-snowflake-user
SNOWFLAKE_PASSWORD: fake-snowflake-password
SNOWFLAKE_ACCOUNT: fake-snowflake-account
SNOWFLAKE_WAREHOUSE: fake-snowflake-warehouse
SNOWFLAKE_DATABASE: fake-snowflake-database
SNOWFLAKE_SCHEMA: fake-snowflake-schema
EMBEDCHAIN_DB_URI: sqlite:///test.db
jobs: jobs:
tests: tests:
@@ -30,73 +22,24 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for proper diff
- name: Restore global uv cache
id: cache-restore
uses: actions/cache/restore@v4
with:
path: |
~/.cache/uv
~/.local/share/uv
.venv
key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}
restore-keys: |
uv-main-py${{ matrix.python-version }}-
- name: Install uv - name: Install uv
uses: astral-sh/setup-uv@v6 uses: astral-sh/setup-uv@v3
with: with:
version: "0.8.4" enable-cache: true
python-version: ${{ matrix.python-version }} cache-dependency-glob: |
enable-cache: false **/pyproject.toml
**/uv.lock
- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}
- name: Install the project - name: Install the project
run: uv sync --all-groups --all-extras run: uv sync --dev --all-extras
- name: Restore test durations
uses: actions/cache/restore@v4
with:
path: .test_durations_py*
key: test-durations-py${{ matrix.python-version }}
- name: Run tests (group ${{ matrix.group }} of 8) - name: Run tests (group ${{ matrix.group }} of 8)
run: | run: |
PYTHON_VERSION_SAFE=$(echo "${{ matrix.python-version }}" | tr '.' '_') uv run pytest \
DURATION_FILE="../../.test_durations_py${PYTHON_VERSION_SAFE}"
# Temporarily always skip cached durations to fix test splitting
# When durations don't match, pytest-split runs duplicate tests instead of splitting
echo "Using even test splitting (duration cache disabled until fix merged)"
DURATIONS_ARG=""
# Original logic (disabled temporarily):
# if [ ! -f "$DURATION_FILE" ]; then
# echo "No cached durations found, tests will be split evenly"
# DURATIONS_ARG=""
# elif git diff origin/${{ github.base_ref }}...HEAD --name-only 2>/dev/null | grep -q "^tests/.*\.py$"; then
# echo "Test files have changed, skipping cached durations to avoid mismatches"
# DURATIONS_ARG=""
# else
# echo "No test changes detected, using cached test durations for optimal splitting"
# DURATIONS_ARG="--durations-path=${DURATION_FILE}"
# fi
cd lib/crewai && uv run pytest \
--block-network \
--timeout=30 \
-vv \
--splits 8 \
--group ${{ matrix.group }} \
$DURATIONS_ARG \
--durations=10 \
-n auto \
--maxfail=3
- name: Run tool tests (group ${{ matrix.group }} of 8)
run: |
cd lib/crewai-tools && uv run pytest \
--block-network \ --block-network \
--timeout=30 \ --timeout=30 \
-vv \ -vv \
@@ -105,14 +48,3 @@ jobs:
--durations=10 \ --durations=10 \
-n auto \ -n auto \
--maxfail=3 --maxfail=3
- name: Save uv caches
if: steps.cache-restore.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: |
~/.cache/uv
~/.local/share/uv
.venv
key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}

View File

@@ -3,99 +3,24 @@ name: Run Type Checks
on: [pull_request] on: [pull_request]
permissions: permissions:
contents: read contents: write
jobs: jobs:
type-checker-matrix: type-checker:
name: type-checker (${{ matrix.python-version }})
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with: with:
fetch-depth: 0 # Fetch all history for proper diff python-version: "3.11.9"
- name: Restore global uv cache - name: Install Requirements
id: cache-restore
uses: actions/cache/restore@v4
with:
path: |
~/.cache/uv
~/.local/share/uv
.venv
key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}
restore-keys: |
uv-main-py${{ matrix.python-version }}-
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.8.4"
python-version: ${{ matrix.python-version }}
enable-cache: false
- name: Install dependencies
run: uv sync --all-groups --all-extras
- name: Get changed Python files
id: changed-files
run: | run: |
# Get the list of changed Python files compared to the base branch pip install mypy
echo "Fetching changed files..."
git diff --name-only --diff-filter=ACMRT origin/${{ github.base_ref }}...HEAD -- '*.py' > changed_files.txt
# Filter for files in src/ directory only (excluding tests/) - name: Run type checks
grep -E "^src/" changed_files.txt > filtered_changed_files.txt || true run: mypy src
# Check if there are any changed files
if [ -s filtered_changed_files.txt ]; then
echo "Changed Python files in src/:"
cat filtered_changed_files.txt
echo "has_changes=true" >> $GITHUB_OUTPUT
# Convert newlines to spaces for mypy command
echo "files=$(cat filtered_changed_files.txt | tr '\n' ' ')" >> $GITHUB_OUTPUT
else
echo "No Python files changed in src/"
echo "has_changes=false" >> $GITHUB_OUTPUT
fi
- name: Run type checks on changed files
if: steps.changed-files.outputs.has_changes == 'true'
run: |
echo "Running mypy on changed files with Python ${{ matrix.python-version }}..."
uv run mypy ${{ steps.changed-files.outputs.files }}
- name: No files to check
if: steps.changed-files.outputs.has_changes == 'false'
run: echo "No Python files in src/ were modified - skipping type checks"
- name: Save uv caches
if: steps.cache-restore.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: |
~/.cache/uv
~/.local/share/uv
.venv
key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}
# Summary job to provide single status for branch protection
type-checker:
name: type-checker
runs-on: ubuntu-latest
needs: type-checker-matrix
if: always()
steps:
- name: Check matrix results
run: |
if [ "${{ needs.type-checker-matrix.result }}" == "success" ] || [ "${{ needs.type-checker-matrix.result }}" == "skipped" ]; then
echo "✅ All type checks passed"
else
echo "❌ Type checks failed"
exit 1
fi

View File

@@ -1,71 +0,0 @@
name: Update Test Durations
on:
push:
branches:
- main
paths:
- 'tests/**/*.py'
workflow_dispatch:
permissions:
contents: read
jobs:
update-durations:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
env:
OPENAI_API_KEY: fake-api-key
PYTHONUNBUFFERED: 1
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Restore global uv cache
id: cache-restore
uses: actions/cache/restore@v4
with:
path: |
~/.cache/uv
~/.local/share/uv
.venv
key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}
restore-keys: |
uv-main-py${{ matrix.python-version }}-
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.8.4"
python-version: ${{ matrix.python-version }}
enable-cache: false
- name: Install the project
run: uv sync --all-groups --all-extras
- name: Run all tests and store durations
run: |
PYTHON_VERSION_SAFE=$(echo "${{ matrix.python-version }}" | tr '.' '_')
uv run pytest --store-durations --durations-path=.test_durations_py${PYTHON_VERSION_SAFE} -n auto
continue-on-error: true
- name: Save durations to cache
if: always()
uses: actions/cache/save@v4
with:
path: .test_durations_py*
key: test-durations-py${{ matrix.python-version }}
- name: Save uv caches
if: steps.cache-restore.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: |
~/.cache/uv
~/.local/share/uv
.venv
key: uv-main-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }}

1
.gitignore vendored
View File

@@ -2,6 +2,7 @@
.pytest_cache .pytest_cache
__pycache__ __pycache__
dist/ dist/
lib/
.env .env
assets/* assets/*
.idea .idea

View File

@@ -1,26 +1,7 @@
repos: repos:
- repo: local - repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.2
hooks: hooks:
- id: ruff - id: ruff
name: ruff args: ["--fix"]
entry: bash -c 'source .venv/bin/activate && uv run ruff check --config pyproject.toml "$@"' --
language: system
pass_filenames: true
types: [python]
- id: ruff-format - id: ruff-format
name: ruff-format
entry: bash -c 'source .venv/bin/activate && uv run ruff format --config pyproject.toml "$@"' --
language: system
pass_filenames: true
types: [python]
- id: mypy
name: mypy
entry: bash -c 'source .venv/bin/activate && uv run mypy --config-file pyproject.toml "$@"' --
language: system
pass_filenames: true
types: [python]
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.9.3
hooks:
- id: uv-lock

4
.ruff.toml Normal file
View File

@@ -0,0 +1,4 @@
exclude = [
"templates",
"__init__.py",
]

View File

@@ -62,9 +62,9 @@
With over 100,000 developers certified through our community courses at [learn.crewai.com](https://learn.crewai.com), CrewAI is rapidly becoming the With over 100,000 developers certified through our community courses at [learn.crewai.com](https://learn.crewai.com), CrewAI is rapidly becoming the
standard for enterprise-ready AI automation. standard for enterprise-ready AI automation.
# CrewAI AMP Suite # CrewAI Enterprise Suite
CrewAI AMP Suite is a comprehensive bundle tailored for organizations that require secure, scalable, and easy-to-manage agent-driven automation. CrewAI Enterprise Suite is a comprehensive bundle tailored for organizations that require secure, scalable, and easy-to-manage agent-driven automation.
You can try one part of the suite the [Crew Control Plane for free](https://app.crewai.com) You can try one part of the suite the [Crew Control Plane for free](https://app.crewai.com)
@@ -76,9 +76,9 @@ You can try one part of the suite the [Crew Control Plane for free](https://app.
- **Advanced Security**: Built-in robust security and compliance measures ensuring safe deployment and management. - **Advanced Security**: Built-in robust security and compliance measures ensuring safe deployment and management.
- **Actionable Insights**: Real-time analytics and reporting to optimize performance and decision-making. - **Actionable Insights**: Real-time analytics and reporting to optimize performance and decision-making.
- **24/7 Support**: Dedicated enterprise support to ensure uninterrupted operation and quick resolution of issues. - **24/7 Support**: Dedicated enterprise support to ensure uninterrupted operation and quick resolution of issues.
- **On-premise and Cloud Deployment Options**: Deploy CrewAI AMP on-premise or in the cloud, depending on your security and compliance requirements. - **On-premise and Cloud Deployment Options**: Deploy CrewAI Enterprise on-premise or in the cloud, depending on your security and compliance requirements.
CrewAI AMP is designed for enterprises seeking a powerful, reliable solution to transform complex business processes into efficient, CrewAI Enterprise is designed for enterprises seeking a powerful, reliable solution to transform complex business processes into efficient,
intelligent automations. intelligent automations.
## Table of contents ## Table of contents
@@ -418,10 +418,10 @@ Choose CrewAI to easily build powerful, adaptable, and production-ready AI autom
You can test different real life examples of AI crews in the [CrewAI-examples repo](https://github.com/crewAIInc/crewAI-examples?tab=readme-ov-file): You can test different real life examples of AI crews in the [CrewAI-examples repo](https://github.com/crewAIInc/crewAI-examples?tab=readme-ov-file):
- [Landing Page Generator](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/landing_page_generator) - [Landing Page Generator](https://github.com/crewAIInc/crewAI-examples/tree/main/landing_page_generator)
- [Having Human input on the execution](https://docs.crewai.com/how-to/Human-Input-on-Execution) - [Having Human input on the execution](https://docs.crewai.com/how-to/Human-Input-on-Execution)
- [Trip Planner](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/trip_planner) - [Trip Planner](https://github.com/crewAIInc/crewAI-examples/tree/main/trip_planner)
- [Stock Analysis](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/stock_analysis) - [Stock Analysis](https://github.com/crewAIInc/crewAI-examples/tree/main/stock_analysis)
### Quick Tutorial ### Quick Tutorial
@@ -429,19 +429,19 @@ You can test different real life examples of AI crews in the [CrewAI-examples re
### Write Job Descriptions ### Write Job Descriptions
[Check out code for this example](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/job-posting) or watch a video below: [Check out code for this example](https://github.com/crewAIInc/crewAI-examples/tree/main/job-posting) or watch a video below:
[![Jobs postings](https://img.youtube.com/vi/u98wEMz-9to/maxresdefault.jpg)](https://www.youtube.com/watch?v=u98wEMz-9to "Jobs postings") [![Jobs postings](https://img.youtube.com/vi/u98wEMz-9to/maxresdefault.jpg)](https://www.youtube.com/watch?v=u98wEMz-9to "Jobs postings")
### Trip Planner ### Trip Planner
[Check out code for this example](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/trip_planner) or watch a video below: [Check out code for this example](https://github.com/crewAIInc/crewAI-examples/tree/main/trip_planner) or watch a video below:
[![Trip Planner](https://img.youtube.com/vi/xis7rWp-hjs/maxresdefault.jpg)](https://www.youtube.com/watch?v=xis7rWp-hjs "Trip Planner") [![Trip Planner](https://img.youtube.com/vi/xis7rWp-hjs/maxresdefault.jpg)](https://www.youtube.com/watch?v=xis7rWp-hjs "Trip Planner")
### Stock Analysis ### Stock Analysis
[Check out code for this example](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/stock_analysis) or watch a video below: [Check out code for this example](https://github.com/crewAIInc/crewAI-examples/tree/main/stock_analysis) or watch a video below:
[![Stock Analysis](https://img.youtube.com/vi/e0Uj4yWdaAg/maxresdefault.jpg)](https://www.youtube.com/watch?v=e0Uj4yWdaAg "Stock Analysis") [![Stock Analysis](https://img.youtube.com/vi/e0Uj4yWdaAg/maxresdefault.jpg)](https://www.youtube.com/watch?v=e0Uj4yWdaAg "Stock Analysis")
@@ -674,9 +674,9 @@ CrewAI is released under the [MIT License](https://github.com/crewAIInc/crewAI/b
### Enterprise Features ### Enterprise Features
- [What additional features does CrewAI AMP offer?](#q-what-additional-features-does-crewai-amp-offer) - [What additional features does CrewAI Enterprise offer?](#q-what-additional-features-does-crewai-enterprise-offer)
- [Is CrewAI AMP available for cloud and on-premise deployments?](#q-is-crewai-amp-available-for-cloud-and-on-premise-deployments) - [Is CrewAI Enterprise available for cloud and on-premise deployments?](#q-is-crewai-enterprise-available-for-cloud-and-on-premise-deployments)
- [Can I try CrewAI AMP for free?](#q-can-i-try-crewai-amp-for-free) - [Can I try CrewAI Enterprise for free?](#q-can-i-try-crewai-enterprise-for-free)
### Q: What exactly is CrewAI? ### Q: What exactly is CrewAI?
@@ -732,17 +732,17 @@ A: Check out practical examples in the [CrewAI-examples repository](https://gith
A: Contributions are warmly welcomed! Fork the repository, create your branch, implement your changes, and submit a pull request. See the Contribution section of the README for detailed guidelines. A: Contributions are warmly welcomed! Fork the repository, create your branch, implement your changes, and submit a pull request. See the Contribution section of the README for detailed guidelines.
### Q: What additional features does CrewAI AMP offer? ### Q: What additional features does CrewAI Enterprise offer?
A: CrewAI AMP provides advanced features such as a unified control plane, real-time observability, secure integrations, advanced security, actionable insights, and dedicated 24/7 enterprise support. A: CrewAI Enterprise provides advanced features such as a unified control plane, real-time observability, secure integrations, advanced security, actionable insights, and dedicated 24/7 enterprise support.
### Q: Is CrewAI AMP available for cloud and on-premise deployments? ### Q: Is CrewAI Enterprise available for cloud and on-premise deployments?
A: Yes, CrewAI AMP supports both cloud-based and on-premise deployment options, allowing enterprises to meet their specific security and compliance requirements. A: Yes, CrewAI Enterprise supports both cloud-based and on-premise deployment options, allowing enterprises to meet their specific security and compliance requirements.
### Q: Can I try CrewAI AMP for free? ### Q: Can I try CrewAI Enterprise for free?
A: Yes, you can explore part of the CrewAI AMP Suite by accessing the [Crew Control Plane](https://app.crewai.com) for free. A: Yes, you can explore part of the CrewAI Enterprise Suite by accessing the [Crew Control Plane](https://app.crewai.com) for free.
### Q: Does CrewAI support fine-tuning or training custom models? ### Q: Does CrewAI support fine-tuning or training custom models?
@@ -762,7 +762,7 @@ A: CrewAI is highly scalable, supporting simple automations and large-scale ente
### Q: Does CrewAI offer debugging and monitoring tools? ### Q: Does CrewAI offer debugging and monitoring tools?
A: Yes, CrewAI AMP includes advanced debugging, tracing, and real-time observability features, simplifying the management and troubleshooting of your automations. A: Yes, CrewAI Enterprise includes advanced debugging, tracing, and real-time observability features, simplifying the management and troubleshooting of your automations.
### Q: What programming languages does CrewAI support? ### Q: What programming languages does CrewAI support?

1737
crewAI.excalidraw Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"$schema": "https://mintlify.com/docs.json", "$schema": "https://mintlify.com/docs.json",
"theme": "aspen", "theme": "mint",
"name": "CrewAI", "name": "CrewAI",
"colors": { "colors": {
"primary": "#EB6658", "primary": "#EB6658",
@@ -9,22 +9,7 @@
}, },
"favicon": "/images/favicon.svg", "favicon": "/images/favicon.svg",
"contextual": { "contextual": {
"options": [ "options": ["copy", "view", "chatgpt", "claude"]
"copy",
"view",
"chatgpt",
"claude",
"perplexity",
"mcp",
"cursor",
"vscode",
{
"title": "Request a feature",
"description": "Join the discussion on GitHub to request a new feature",
"icon": "plus",
"href": "https://github.com/crewAIInc/crewAI/issues/new/choose"
}
]
}, },
"navigation": { "navigation": {
"languages": [ "languages": [
@@ -43,31 +28,20 @@
"icon": "discourse" "icon": "discourse"
}, },
{ {
"anchor": "Blog", "anchor": "Crew GPT",
"href": "https://blog.crewai.com",
"icon": "newspaper"
},
{
"anchor": "CrewGPT",
"href": "https://chatgpt.com/g/g-qqTuUWsBY-crewai-assistant", "href": "https://chatgpt.com/g/g-qqTuUWsBY-crewai-assistant",
"icon": "robot" "icon": "robot"
},
{
"anchor": "Releases",
"href": "https://github.com/crewAIInc/crewAI/releases",
"icon": "tag"
} }
] ]
}, },
"tabs": [ "tabs": [
{
"tab": "Home",
"icon": "house",
"groups": [
{
"group": "Welcome",
"pages": ["index"]
}
]
},
{ {
"tab": "Documentation", "tab": "Documentation",
"icon": "book-open",
"groups": [ "groups": [
{ {
"group": "Get Started", "group": "Get Started",
@@ -78,22 +52,18 @@
"pages": [ "pages": [
{ {
"group": "Strategy", "group": "Strategy",
"icon": "compass",
"pages": ["en/guides/concepts/evaluating-use-cases"] "pages": ["en/guides/concepts/evaluating-use-cases"]
}, },
{ {
"group": "Agents", "group": "Agents",
"icon": "user",
"pages": ["en/guides/agents/crafting-effective-agents"] "pages": ["en/guides/agents/crafting-effective-agents"]
}, },
{ {
"group": "Crews", "group": "Crews",
"icon": "users",
"pages": ["en/guides/crews/first-crew"] "pages": ["en/guides/crews/first-crew"]
}, },
{ {
"group": "Flows", "group": "Flows",
"icon": "code-branch",
"pages": [ "pages": [
"en/guides/flows/first-flow", "en/guides/flows/first-flow",
"en/guides/flows/mastering-flow-state" "en/guides/flows/mastering-flow-state"
@@ -101,7 +71,6 @@
}, },
{ {
"group": "Advanced", "group": "Advanced",
"icon": "gear",
"pages": [ "pages": [
"en/guides/advanced/customizing-prompts", "en/guides/advanced/customizing-prompts",
"en/guides/advanced/fingerprinting" "en/guides/advanced/fingerprinting"
@@ -134,7 +103,6 @@
"group": "MCP Integration", "group": "MCP Integration",
"pages": [ "pages": [
"en/mcp/overview", "en/mcp/overview",
"en/mcp/dsl-integration",
"en/mcp/stdio", "en/mcp/stdio",
"en/mcp/sse", "en/mcp/sse",
"en/mcp/streamable-http", "en/mcp/streamable-http",
@@ -148,7 +116,6 @@
"en/tools/overview", "en/tools/overview",
{ {
"group": "File & Document", "group": "File & Document",
"icon": "folder-open",
"pages": [ "pages": [
"en/tools/file-document/overview", "en/tools/file-document/overview",
"en/tools/file-document/filereadtool", "en/tools/file-document/filereadtool",
@@ -168,7 +135,6 @@
}, },
{ {
"group": "Web Scraping & Browsing", "group": "Web Scraping & Browsing",
"icon": "globe",
"pages": [ "pages": [
"en/tools/web-scraping/overview", "en/tools/web-scraping/overview",
"en/tools/web-scraping/scrapewebsitetool", "en/tools/web-scraping/scrapewebsitetool",
@@ -188,7 +154,6 @@
}, },
{ {
"group": "Search & Research", "group": "Search & Research",
"icon": "magnifying-glass",
"pages": [ "pages": [
"en/tools/search-research/overview", "en/tools/search-research/overview",
"en/tools/search-research/serperdevtool", "en/tools/search-research/serperdevtool",
@@ -210,7 +175,6 @@
}, },
{ {
"group": "Database & Data", "group": "Database & Data",
"icon": "database",
"pages": [ "pages": [
"en/tools/database-data/overview", "en/tools/database-data/overview",
"en/tools/database-data/mysqltool", "en/tools/database-data/mysqltool",
@@ -225,7 +189,6 @@
}, },
{ {
"group": "AI & Machine Learning", "group": "AI & Machine Learning",
"icon": "brain",
"pages": [ "pages": [
"en/tools/ai-ml/overview", "en/tools/ai-ml/overview",
"en/tools/ai-ml/dalletool", "en/tools/ai-ml/dalletool",
@@ -239,26 +202,16 @@
}, },
{ {
"group": "Cloud & Storage", "group": "Cloud & Storage",
"icon": "cloud",
"pages": [ "pages": [
"en/tools/cloud-storage/overview", "en/tools/cloud-storage/overview",
"en/tools/cloud-storage/s3readertool", "en/tools/cloud-storage/s3readertool",
"en/tools/cloud-storage/s3writertool", "en/tools/cloud-storage/s3writertool",
"en/tools/cloud-storage/bedrockinvokeagenttool",
"en/tools/cloud-storage/bedrockkbretriever" "en/tools/cloud-storage/bedrockkbretriever"
] ]
}, },
{ {
"group": "Integrations", "group": "Automation & Integration",
"icon": "plug",
"pages": [
"en/tools/integration/overview",
"en/tools/integration/bedrockinvokeagenttool",
"en/tools/integration/crewaiautomationtool"
]
},
{
"group": "Automation",
"icon": "bolt",
"pages": [ "pages": [
"en/tools/automation/overview", "en/tools/automation/overview",
"en/tools/automation/apifyactorstool", "en/tools/automation/apifyactorstool",
@@ -272,10 +225,8 @@
{ {
"group": "Observability", "group": "Observability",
"pages": [ "pages": [
"en/observability/tracing",
"en/observability/overview", "en/observability/overview",
"en/observability/arize-phoenix", "en/observability/arize-phoenix",
"en/observability/braintrust",
"en/observability/langdb", "en/observability/langdb",
"en/observability/langfuse", "en/observability/langfuse",
"en/observability/langtrace", "en/observability/langtrace",
@@ -305,7 +256,6 @@
"en/learn/force-tool-output-as-result", "en/learn/force-tool-output-as-result",
"en/learn/hierarchical-process", "en/learn/hierarchical-process",
"en/learn/human-input-on-execution", "en/learn/human-input-on-execution",
"en/learn/human-in-the-loop",
"en/learn/kickoff-async", "en/learn/kickoff-async",
"en/learn/kickoff-for-each", "en/learn/kickoff-for-each",
"en/learn/llm-connections", "en/learn/llm-connections",
@@ -322,35 +272,22 @@
] ]
}, },
{ {
"tab": "AMP", "tab": "Enterprise",
"icon": "briefcase",
"groups": [ "groups": [
{ {
"group": "Getting Started", "group": "Getting Started",
"pages": ["en/enterprise/introduction"] "pages": ["en/enterprise/introduction"]
}, },
{ {
"group": "Build", "group": "Features",
"pages": [ "pages": [
"en/enterprise/features/automations", "en/enterprise/features/rbac",
"en/enterprise/features/crew-studio", "en/enterprise/features/tool-repository",
"en/enterprise/features/marketplace",
"en/enterprise/features/agent-repositories",
"en/enterprise/features/tools-and-integrations"
]
},
{
"group": "Operate",
"pages": [
"en/enterprise/features/traces",
"en/enterprise/features/webhook-streaming", "en/enterprise/features/webhook-streaming",
"en/enterprise/features/hallucination-guardrail" "en/enterprise/features/traces",
] "en/enterprise/features/hallucination-guardrail",
}, "en/enterprise/features/integrations",
{ "en/enterprise/features/agent-repositories"
"group": "Manage",
"pages": [
"en/enterprise/features/rbac"
] ]
}, },
{ {
@@ -362,20 +299,10 @@
"en/enterprise/integrations/github", "en/enterprise/integrations/github",
"en/enterprise/integrations/gmail", "en/enterprise/integrations/gmail",
"en/enterprise/integrations/google_calendar", "en/enterprise/integrations/google_calendar",
"en/enterprise/integrations/google_contacts",
"en/enterprise/integrations/google_docs",
"en/enterprise/integrations/google_drive",
"en/enterprise/integrations/google_sheets", "en/enterprise/integrations/google_sheets",
"en/enterprise/integrations/google_slides",
"en/enterprise/integrations/hubspot", "en/enterprise/integrations/hubspot",
"en/enterprise/integrations/jira", "en/enterprise/integrations/jira",
"en/enterprise/integrations/linear", "en/enterprise/integrations/linear",
"en/enterprise/integrations/microsoft_excel",
"en/enterprise/integrations/microsoft_onedrive",
"en/enterprise/integrations/microsoft_outlook",
"en/enterprise/integrations/microsoft_sharepoint",
"en/enterprise/integrations/microsoft_teams",
"en/enterprise/integrations/microsoft_word",
"en/enterprise/integrations/notion", "en/enterprise/integrations/notion",
"en/enterprise/integrations/salesforce", "en/enterprise/integrations/salesforce",
"en/enterprise/integrations/shopify", "en/enterprise/integrations/shopify",
@@ -384,22 +311,6 @@
"en/enterprise/integrations/zendesk" "en/enterprise/integrations/zendesk"
] ]
}, },
{
"group": "Triggers",
"pages": [
"en/enterprise/guides/automation-triggers",
"en/enterprise/guides/gmail-trigger",
"en/enterprise/guides/google-calendar-trigger",
"en/enterprise/guides/google-drive-trigger",
"en/enterprise/guides/outlook-trigger",
"en/enterprise/guides/onedrive-trigger",
"en/enterprise/guides/microsoft-teams-trigger",
"en/enterprise/guides/slack-trigger",
"en/enterprise/guides/hubspot-trigger",
"en/enterprise/guides/salesforce-trigger",
"en/enterprise/guides/zapier-trigger"
]
},
{ {
"group": "How-To Guides", "group": "How-To Guides",
"pages": [ "pages": [
@@ -408,13 +319,15 @@
"en/enterprise/guides/kickoff-crew", "en/enterprise/guides/kickoff-crew",
"en/enterprise/guides/update-crew", "en/enterprise/guides/update-crew",
"en/enterprise/guides/enable-crew-studio", "en/enterprise/guides/enable-crew-studio",
"en/enterprise/guides/capture_telemetry_logs",
"en/enterprise/guides/azure-openai-setup", "en/enterprise/guides/azure-openai-setup",
"en/enterprise/guides/tool-repository", "en/enterprise/guides/hubspot-trigger",
"en/enterprise/guides/react-component-export", "en/enterprise/guides/react-component-export",
"en/enterprise/guides/salesforce-trigger",
"en/enterprise/guides/slack-trigger",
"en/enterprise/guides/team-management", "en/enterprise/guides/team-management",
"en/enterprise/guides/webhook-automation",
"en/enterprise/guides/human-in-the-loop", "en/enterprise/guides/human-in-the-loop",
"en/enterprise/guides/webhook-automation" "en/enterprise/guides/zapier-trigger"
] ]
}, },
{ {
@@ -425,7 +338,6 @@
}, },
{ {
"tab": "API Reference", "tab": "API Reference",
"icon": "magnifying-glass",
"groups": [ "groups": [
{ {
"group": "Getting Started", "group": "Getting Started",
@@ -433,7 +345,6 @@
"en/api-reference/introduction", "en/api-reference/introduction",
"en/api-reference/inputs", "en/api-reference/inputs",
"en/api-reference/kickoff", "en/api-reference/kickoff",
"en/api-reference/resume",
"en/api-reference/status" "en/api-reference/status"
] ]
} }
@@ -441,23 +352,12 @@
}, },
{ {
"tab": "Examples", "tab": "Examples",
"icon": "code",
"groups": [ "groups": [
{ {
"group": "Examples", "group": "Examples",
"pages": ["en/examples/example", "en/examples/cookbooks"] "pages": ["en/examples/example", "en/examples/cookbooks"]
} }
] ]
},
{
"tab": "Changelog",
"icon": "clock",
"groups": [
{
"group": "Release Notes",
"pages": ["en/changelog"]
}
]
} }
] ]
}, },
@@ -476,31 +376,20 @@
"icon": "discourse" "icon": "discourse"
}, },
{ {
"anchor": "Blog", "anchor": "Crew GPT",
"href": "https://blog.crewai.com",
"icon": "newspaper"
},
{
"anchor": "CrewGPT",
"href": "https://chatgpt.com/g/g-qqTuUWsBY-crewai-assistant", "href": "https://chatgpt.com/g/g-qqTuUWsBY-crewai-assistant",
"icon": "robot" "icon": "robot"
},
{
"anchor": "Lançamentos",
"href": "https://github.com/crewAIInc/crewAI/releases",
"icon": "tag"
} }
] ]
}, },
"tabs": [ "tabs": [
{
"tab": "Início",
"icon": "house",
"groups": [
{
"group": "Bem-vindo",
"pages": ["pt-BR/index"]
}
]
},
{ {
"tab": "Documentação", "tab": "Documentação",
"icon": "book-open",
"groups": [ "groups": [
{ {
"group": "Começando", "group": "Começando",
@@ -515,22 +404,18 @@
"pages": [ "pages": [
{ {
"group": "Estratégia", "group": "Estratégia",
"icon": "compass",
"pages": ["pt-BR/guides/concepts/evaluating-use-cases"] "pages": ["pt-BR/guides/concepts/evaluating-use-cases"]
}, },
{ {
"group": "Agentes", "group": "Agentes",
"icon": "user",
"pages": ["pt-BR/guides/agents/crafting-effective-agents"] "pages": ["pt-BR/guides/agents/crafting-effective-agents"]
}, },
{ {
"group": "Crews", "group": "Crews",
"icon": "users",
"pages": ["pt-BR/guides/crews/first-crew"] "pages": ["pt-BR/guides/crews/first-crew"]
}, },
{ {
"group": "Flows", "group": "Flows",
"icon": "code-branch",
"pages": [ "pages": [
"pt-BR/guides/flows/first-flow", "pt-BR/guides/flows/first-flow",
"pt-BR/guides/flows/mastering-flow-state" "pt-BR/guides/flows/mastering-flow-state"
@@ -538,7 +423,6 @@
}, },
{ {
"group": "Avançado", "group": "Avançado",
"icon": "gear",
"pages": [ "pages": [
"pt-BR/guides/advanced/customizing-prompts", "pt-BR/guides/advanced/customizing-prompts",
"pt-BR/guides/advanced/fingerprinting" "pt-BR/guides/advanced/fingerprinting"
@@ -571,7 +455,6 @@
"group": "Integração MCP", "group": "Integração MCP",
"pages": [ "pages": [
"pt-BR/mcp/overview", "pt-BR/mcp/overview",
"pt-BR/mcp/dsl-integration",
"pt-BR/mcp/stdio", "pt-BR/mcp/stdio",
"pt-BR/mcp/sse", "pt-BR/mcp/sse",
"pt-BR/mcp/streamable-http", "pt-BR/mcp/streamable-http",
@@ -585,7 +468,6 @@
"pt-BR/tools/overview", "pt-BR/tools/overview",
{ {
"group": "Arquivo & Documento", "group": "Arquivo & Documento",
"icon": "folder-open",
"pages": [ "pages": [
"pt-BR/tools/file-document/overview", "pt-BR/tools/file-document/overview",
"pt-BR/tools/file-document/filereadtool", "pt-BR/tools/file-document/filereadtool",
@@ -603,7 +485,6 @@
}, },
{ {
"group": "Web Scraping & Navegação", "group": "Web Scraping & Navegação",
"icon": "globe",
"pages": [ "pages": [
"pt-BR/tools/web-scraping/overview", "pt-BR/tools/web-scraping/overview",
"pt-BR/tools/web-scraping/scrapewebsitetool", "pt-BR/tools/web-scraping/scrapewebsitetool",
@@ -622,7 +503,6 @@
}, },
{ {
"group": "Pesquisa", "group": "Pesquisa",
"icon": "magnifying-glass",
"pages": [ "pages": [
"pt-BR/tools/search-research/overview", "pt-BR/tools/search-research/overview",
"pt-BR/tools/search-research/serperdevtool", "pt-BR/tools/search-research/serperdevtool",
@@ -638,7 +518,6 @@
}, },
{ {
"group": "Dados", "group": "Dados",
"icon": "database",
"pages": [ "pages": [
"pt-BR/tools/database-data/overview", "pt-BR/tools/database-data/overview",
"pt-BR/tools/database-data/mysqltool", "pt-BR/tools/database-data/mysqltool",
@@ -651,7 +530,6 @@
}, },
{ {
"group": "IA & Machine Learning", "group": "IA & Machine Learning",
"icon": "brain",
"pages": [ "pages": [
"pt-BR/tools/ai-ml/overview", "pt-BR/tools/ai-ml/overview",
"pt-BR/tools/ai-ml/dalletool", "pt-BR/tools/ai-ml/dalletool",
@@ -665,26 +543,16 @@
}, },
{ {
"group": "Cloud & Armazenamento", "group": "Cloud & Armazenamento",
"icon": "cloud",
"pages": [ "pages": [
"pt-BR/tools/cloud-storage/overview", "pt-BR/tools/cloud-storage/overview",
"pt-BR/tools/cloud-storage/s3readertool", "pt-BR/tools/cloud-storage/s3readertool",
"pt-BR/tools/cloud-storage/s3writertool", "pt-BR/tools/cloud-storage/s3writertool",
"pt-BR/tools/cloud-storage/bedrockinvokeagenttool",
"pt-BR/tools/cloud-storage/bedrockkbretriever" "pt-BR/tools/cloud-storage/bedrockkbretriever"
] ]
}, },
{ {
"group": "Integrations", "group": "Automação & Integração",
"icon": "plug",
"pages": [
"pt-BR/tools/integration/overview",
"pt-BR/tools/integration/bedrockinvokeagenttool",
"pt-BR/tools/integration/crewaiautomationtool"
]
},
{
"group": "Automação",
"icon": "bolt",
"pages": [ "pages": [
"pt-BR/tools/automation/overview", "pt-BR/tools/automation/overview",
"pt-BR/tools/automation/apifyactorstool", "pt-BR/tools/automation/apifyactorstool",
@@ -699,7 +567,6 @@
"pages": [ "pages": [
"pt-BR/observability/overview", "pt-BR/observability/overview",
"pt-BR/observability/arize-phoenix", "pt-BR/observability/arize-phoenix",
"pt-BR/observability/braintrust",
"pt-BR/observability/langdb", "pt-BR/observability/langdb",
"pt-BR/observability/langfuse", "pt-BR/observability/langfuse",
"pt-BR/observability/langtrace", "pt-BR/observability/langtrace",
@@ -728,7 +595,6 @@
"pt-BR/learn/force-tool-output-as-result", "pt-BR/learn/force-tool-output-as-result",
"pt-BR/learn/hierarchical-process", "pt-BR/learn/hierarchical-process",
"pt-BR/learn/human-input-on-execution", "pt-BR/learn/human-input-on-execution",
"pt-BR/learn/human-in-the-loop",
"pt-BR/learn/kickoff-async", "pt-BR/learn/kickoff-async",
"pt-BR/learn/kickoff-for-each", "pt-BR/learn/kickoff-for-each",
"pt-BR/learn/llm-connections", "pt-BR/learn/llm-connections",
@@ -745,35 +611,21 @@
] ]
}, },
{ {
"tab": "AMP", "tab": "Enterprise",
"icon": "briefcase",
"groups": [ "groups": [
{ {
"group": "Começando", "group": "Começando",
"pages": ["pt-BR/enterprise/introduction"] "pages": ["pt-BR/enterprise/introduction"]
}, },
{ {
"group": "Construir", "group": "Funcionalidades",
"pages": [ "pages": [
"pt-BR/enterprise/features/automations", "pt-BR/enterprise/features/rbac",
"pt-BR/enterprise/features/crew-studio", "pt-BR/enterprise/features/tool-repository",
"pt-BR/enterprise/features/marketplace",
"pt-BR/enterprise/features/agent-repositories",
"pt-BR/enterprise/features/tools-and-integrations"
]
},
{
"group": "Operar",
"pages": [
"pt-BR/enterprise/features/traces",
"pt-BR/enterprise/features/webhook-streaming", "pt-BR/enterprise/features/webhook-streaming",
"pt-BR/enterprise/features/hallucination-guardrail" "pt-BR/enterprise/features/traces",
] "pt-BR/enterprise/features/hallucination-guardrail",
}, "pt-BR/enterprise/features/integrations"
{
"group": "Gerenciar",
"pages": [
"pt-BR/enterprise/features/rbac"
] ]
}, },
{ {
@@ -785,20 +637,10 @@
"pt-BR/enterprise/integrations/github", "pt-BR/enterprise/integrations/github",
"pt-BR/enterprise/integrations/gmail", "pt-BR/enterprise/integrations/gmail",
"pt-BR/enterprise/integrations/google_calendar", "pt-BR/enterprise/integrations/google_calendar",
"pt-BR/enterprise/integrations/google_contacts",
"pt-BR/enterprise/integrations/google_docs",
"pt-BR/enterprise/integrations/google_drive",
"pt-BR/enterprise/integrations/google_sheets", "pt-BR/enterprise/integrations/google_sheets",
"pt-BR/enterprise/integrations/google_slides",
"pt-BR/enterprise/integrations/hubspot", "pt-BR/enterprise/integrations/hubspot",
"pt-BR/enterprise/integrations/jira", "pt-BR/enterprise/integrations/jira",
"pt-BR/enterprise/integrations/linear", "pt-BR/enterprise/integrations/linear",
"pt-BR/enterprise/integrations/microsoft_excel",
"pt-BR/enterprise/integrations/microsoft_onedrive",
"pt-BR/enterprise/integrations/microsoft_outlook",
"pt-BR/enterprise/integrations/microsoft_sharepoint",
"pt-BR/enterprise/integrations/microsoft_teams",
"pt-BR/enterprise/integrations/microsoft_word",
"pt-BR/enterprise/integrations/notion", "pt-BR/enterprise/integrations/notion",
"pt-BR/enterprise/integrations/salesforce", "pt-BR/enterprise/integrations/salesforce",
"pt-BR/enterprise/integrations/shopify", "pt-BR/enterprise/integrations/shopify",
@@ -816,26 +658,13 @@
"pt-BR/enterprise/guides/update-crew", "pt-BR/enterprise/guides/update-crew",
"pt-BR/enterprise/guides/enable-crew-studio", "pt-BR/enterprise/guides/enable-crew-studio",
"pt-BR/enterprise/guides/azure-openai-setup", "pt-BR/enterprise/guides/azure-openai-setup",
"pt-BR/enterprise/guides/tool-repository",
"pt-BR/enterprise/guides/react-component-export",
"pt-BR/enterprise/guides/team-management",
"pt-BR/enterprise/guides/human-in-the-loop",
"pt-BR/enterprise/guides/webhook-automation"
]
},
{
"group": "Triggers",
"pages": [
"pt-BR/enterprise/guides/automation-triggers",
"pt-BR/enterprise/guides/gmail-trigger",
"pt-BR/enterprise/guides/google-calendar-trigger",
"pt-BR/enterprise/guides/google-drive-trigger",
"pt-BR/enterprise/guides/outlook-trigger",
"pt-BR/enterprise/guides/onedrive-trigger",
"pt-BR/enterprise/guides/microsoft-teams-trigger",
"pt-BR/enterprise/guides/slack-trigger",
"pt-BR/enterprise/guides/hubspot-trigger", "pt-BR/enterprise/guides/hubspot-trigger",
"pt-BR/enterprise/guides/react-component-export",
"pt-BR/enterprise/guides/salesforce-trigger", "pt-BR/enterprise/guides/salesforce-trigger",
"pt-BR/enterprise/guides/slack-trigger",
"pt-BR/enterprise/guides/team-management",
"pt-BR/enterprise/guides/webhook-automation",
"pt-BR/enterprise/guides/human-in-the-loop",
"pt-BR/enterprise/guides/zapier-trigger" "pt-BR/enterprise/guides/zapier-trigger"
] ]
}, },
@@ -849,7 +678,6 @@
}, },
{ {
"tab": "Referência da API", "tab": "Referência da API",
"icon": "magnifying-glass",
"groups": [ "groups": [
{ {
"group": "Começando", "group": "Começando",
@@ -857,7 +685,6 @@
"pt-BR/api-reference/introduction", "pt-BR/api-reference/introduction",
"pt-BR/api-reference/inputs", "pt-BR/api-reference/inputs",
"pt-BR/api-reference/kickoff", "pt-BR/api-reference/kickoff",
"pt-BR/api-reference/resume",
"pt-BR/api-reference/status" "pt-BR/api-reference/status"
] ]
} }
@@ -865,23 +692,12 @@
}, },
{ {
"tab": "Exemplos", "tab": "Exemplos",
"icon": "code",
"groups": [ "groups": [
{ {
"group": "Exemplos", "group": "Exemplos",
"pages": ["pt-BR/examples/example", "pt-BR/examples/cookbooks"] "pages": ["pt-BR/examples/example", "pt-BR/examples/cookbooks"]
} }
] ]
},
{
"tab": "Notas de Versão",
"icon": "clock",
"groups": [
{
"group": "Notas de Versão",
"pages": ["pt-BR/changelog"]
}
]
} }
] ]
}, },
@@ -900,31 +716,20 @@
"icon": "discourse" "icon": "discourse"
}, },
{ {
"anchor": "블로그", "anchor": "Crew GPT",
"href": "https://blog.crewai.com",
"icon": "newspaper"
},
{
"anchor": "CrewGPT",
"href": "https://chatgpt.com/g/g-qqTuUWsBY-crewai-assistant", "href": "https://chatgpt.com/g/g-qqTuUWsBY-crewai-assistant",
"icon": "robot" "icon": "robot"
},
{
"anchor": "릴리스",
"href": "https://github.com/crewAIInc/crewAI/releases",
"icon": "tag"
} }
] ]
}, },
"tabs": [ "tabs": [
{
"tab": "홈",
"icon": "house",
"groups": [
{
"group": "환영합니다",
"pages": ["ko/index"]
}
]
},
{ {
"tab": "기술 문서", "tab": "기술 문서",
"icon": "book-open",
"groups": [ "groups": [
{ {
"group": "시작 안내", "group": "시작 안내",
@@ -935,22 +740,18 @@
"pages": [ "pages": [
{ {
"group": "전략", "group": "전략",
"icon": "compass",
"pages": ["ko/guides/concepts/evaluating-use-cases"] "pages": ["ko/guides/concepts/evaluating-use-cases"]
}, },
{ {
"group": "에이전트 (Agents)", "group": "에이전트 (Agents)",
"icon": "user",
"pages": ["ko/guides/agents/crafting-effective-agents"] "pages": ["ko/guides/agents/crafting-effective-agents"]
}, },
{ {
"group": "크루 (Crews)", "group": "크루 (Crews)",
"icon": "users",
"pages": ["ko/guides/crews/first-crew"] "pages": ["ko/guides/crews/first-crew"]
}, },
{ {
"group": "플로우 (Flows)", "group": "플로우 (Flows)",
"icon": "code-branch",
"pages": [ "pages": [
"ko/guides/flows/first-flow", "ko/guides/flows/first-flow",
"ko/guides/flows/mastering-flow-state" "ko/guides/flows/mastering-flow-state"
@@ -958,7 +759,6 @@
}, },
{ {
"group": "고급", "group": "고급",
"icon": "gear",
"pages": [ "pages": [
"ko/guides/advanced/customizing-prompts", "ko/guides/advanced/customizing-prompts",
"ko/guides/advanced/fingerprinting" "ko/guides/advanced/fingerprinting"
@@ -991,7 +791,6 @@
"group": "MCP 통합", "group": "MCP 통합",
"pages": [ "pages": [
"ko/mcp/overview", "ko/mcp/overview",
"ko/mcp/dsl-integration",
"ko/mcp/stdio", "ko/mcp/stdio",
"ko/mcp/sse", "ko/mcp/sse",
"ko/mcp/streamable-http", "ko/mcp/streamable-http",
@@ -1005,7 +804,6 @@
"ko/tools/overview", "ko/tools/overview",
{ {
"group": "파일 & 문서", "group": "파일 & 문서",
"icon": "folder-open",
"pages": [ "pages": [
"ko/tools/file-document/overview", "ko/tools/file-document/overview",
"ko/tools/file-document/filereadtool", "ko/tools/file-document/filereadtool",
@@ -1025,7 +823,6 @@
}, },
{ {
"group": "웹 스크래핑 & 브라우징", "group": "웹 스크래핑 & 브라우징",
"icon": "globe",
"pages": [ "pages": [
"ko/tools/web-scraping/overview", "ko/tools/web-scraping/overview",
"ko/tools/web-scraping/scrapewebsitetool", "ko/tools/web-scraping/scrapewebsitetool",
@@ -1045,7 +842,6 @@
}, },
{ {
"group": "검색 및 연구", "group": "검색 및 연구",
"icon": "magnifying-glass",
"pages": [ "pages": [
"ko/tools/search-research/overview", "ko/tools/search-research/overview",
"ko/tools/search-research/serperdevtool", "ko/tools/search-research/serperdevtool",
@@ -1067,7 +863,6 @@
}, },
{ {
"group": "데이터베이스 & 데이터", "group": "데이터베이스 & 데이터",
"icon": "database",
"pages": [ "pages": [
"ko/tools/database-data/overview", "ko/tools/database-data/overview",
"ko/tools/database-data/mysqltool", "ko/tools/database-data/mysqltool",
@@ -1082,7 +877,6 @@
}, },
{ {
"group": "인공지능 & 머신러닝", "group": "인공지능 & 머신러닝",
"icon": "brain",
"pages": [ "pages": [
"ko/tools/ai-ml/overview", "ko/tools/ai-ml/overview",
"ko/tools/ai-ml/dalletool", "ko/tools/ai-ml/dalletool",
@@ -1096,26 +890,16 @@
}, },
{ {
"group": "클라우드 & 스토리지", "group": "클라우드 & 스토리지",
"icon": "cloud",
"pages": [ "pages": [
"ko/tools/cloud-storage/overview", "ko/tools/cloud-storage/overview",
"ko/tools/cloud-storage/s3readertool", "ko/tools/cloud-storage/s3readertool",
"ko/tools/cloud-storage/s3writertool", "ko/tools/cloud-storage/s3writertool",
"ko/tools/cloud-storage/bedrockinvokeagenttool",
"ko/tools/cloud-storage/bedrockkbretriever" "ko/tools/cloud-storage/bedrockkbretriever"
] ]
}, },
{ {
"group": "Integrations", "group": "자동화 & 통합",
"icon": "plug",
"pages": [
"ko/tools/integration/overview",
"ko/tools/integration/bedrockinvokeagenttool",
"ko/tools/integration/crewaiautomationtool"
]
},
{
"group": "자동화",
"icon": "bolt",
"pages": [ "pages": [
"ko/tools/automation/overview", "ko/tools/automation/overview",
"ko/tools/automation/apifyactorstool", "ko/tools/automation/apifyactorstool",
@@ -1131,7 +915,6 @@
"pages": [ "pages": [
"ko/observability/overview", "ko/observability/overview",
"ko/observability/arize-phoenix", "ko/observability/arize-phoenix",
"ko/observability/braintrust",
"ko/observability/langdb", "ko/observability/langdb",
"ko/observability/langfuse", "ko/observability/langfuse",
"ko/observability/langtrace", "ko/observability/langtrace",
@@ -1160,7 +943,6 @@
"ko/learn/force-tool-output-as-result", "ko/learn/force-tool-output-as-result",
"ko/learn/hierarchical-process", "ko/learn/hierarchical-process",
"ko/learn/human-input-on-execution", "ko/learn/human-input-on-execution",
"ko/learn/human-in-the-loop",
"ko/learn/kickoff-async", "ko/learn/kickoff-async",
"ko/learn/kickoff-for-each", "ko/learn/kickoff-for-each",
"ko/learn/llm-connections", "ko/learn/llm-connections",
@@ -1178,34 +960,21 @@
}, },
{ {
"tab": "엔터프라이즈", "tab": "엔터프라이즈",
"icon": "briefcase",
"groups": [ "groups": [
{ {
"group": "시작 안내", "group": "시작 안내",
"pages": ["ko/enterprise/introduction"] "pages": ["ko/enterprise/introduction"]
}, },
{ {
"group": "빌드", "group": "특징",
"pages": [ "pages": [
"ko/enterprise/features/automations", "ko/enterprise/features/rbac",
"ko/enterprise/features/crew-studio", "ko/enterprise/features/tool-repository",
"ko/enterprise/features/marketplace",
"ko/enterprise/features/agent-repositories",
"ko/enterprise/features/tools-and-integrations"
]
},
{
"group": "운영",
"pages": [
"ko/enterprise/features/traces",
"ko/enterprise/features/webhook-streaming", "ko/enterprise/features/webhook-streaming",
"ko/enterprise/features/hallucination-guardrail" "ko/enterprise/features/traces",
] "ko/enterprise/features/hallucination-guardrail",
}, "ko/enterprise/features/integrations",
{ "ko/enterprise/features/agent-repositories"
"group": "관리",
"pages": [
"ko/enterprise/features/rbac"
] ]
}, },
{ {
@@ -1217,20 +986,10 @@
"ko/enterprise/integrations/github", "ko/enterprise/integrations/github",
"ko/enterprise/integrations/gmail", "ko/enterprise/integrations/gmail",
"ko/enterprise/integrations/google_calendar", "ko/enterprise/integrations/google_calendar",
"ko/enterprise/integrations/google_contacts",
"ko/enterprise/integrations/google_docs",
"ko/enterprise/integrations/google_drive",
"ko/enterprise/integrations/google_sheets", "ko/enterprise/integrations/google_sheets",
"ko/enterprise/integrations/google_slides",
"ko/enterprise/integrations/hubspot", "ko/enterprise/integrations/hubspot",
"ko/enterprise/integrations/jira", "ko/enterprise/integrations/jira",
"ko/enterprise/integrations/linear", "ko/enterprise/integrations/linear",
"ko/enterprise/integrations/microsoft_excel",
"ko/enterprise/integrations/microsoft_onedrive",
"ko/enterprise/integrations/microsoft_outlook",
"ko/enterprise/integrations/microsoft_sharepoint",
"ko/enterprise/integrations/microsoft_teams",
"ko/enterprise/integrations/microsoft_word",
"ko/enterprise/integrations/notion", "ko/enterprise/integrations/notion",
"ko/enterprise/integrations/salesforce", "ko/enterprise/integrations/salesforce",
"ko/enterprise/integrations/shopify", "ko/enterprise/integrations/shopify",
@@ -1248,26 +1007,13 @@
"ko/enterprise/guides/update-crew", "ko/enterprise/guides/update-crew",
"ko/enterprise/guides/enable-crew-studio", "ko/enterprise/guides/enable-crew-studio",
"ko/enterprise/guides/azure-openai-setup", "ko/enterprise/guides/azure-openai-setup",
"ko/enterprise/guides/tool-repository",
"ko/enterprise/guides/react-component-export",
"ko/enterprise/guides/team-management",
"ko/enterprise/guides/human-in-the-loop",
"ko/enterprise/guides/webhook-automation"
]
},
{
"group": "트리거",
"pages": [
"ko/enterprise/guides/automation-triggers",
"ko/enterprise/guides/gmail-trigger",
"ko/enterprise/guides/google-calendar-trigger",
"ko/enterprise/guides/google-drive-trigger",
"ko/enterprise/guides/outlook-trigger",
"ko/enterprise/guides/onedrive-trigger",
"ko/enterprise/guides/microsoft-teams-trigger",
"ko/enterprise/guides/slack-trigger",
"ko/enterprise/guides/hubspot-trigger", "ko/enterprise/guides/hubspot-trigger",
"ko/enterprise/guides/react-component-export",
"ko/enterprise/guides/salesforce-trigger", "ko/enterprise/guides/salesforce-trigger",
"ko/enterprise/guides/slack-trigger",
"ko/enterprise/guides/team-management",
"ko/enterprise/guides/webhook-automation",
"ko/enterprise/guides/human-in-the-loop",
"ko/enterprise/guides/zapier-trigger" "ko/enterprise/guides/zapier-trigger"
] ]
}, },
@@ -1279,7 +1025,6 @@
}, },
{ {
"tab": "API 레퍼런스", "tab": "API 레퍼런스",
"icon": "magnifying-glass",
"groups": [ "groups": [
{ {
"group": "시작 안내", "group": "시작 안내",
@@ -1287,7 +1032,6 @@
"ko/api-reference/introduction", "ko/api-reference/introduction",
"ko/api-reference/inputs", "ko/api-reference/inputs",
"ko/api-reference/kickoff", "ko/api-reference/kickoff",
"ko/api-reference/resume",
"ko/api-reference/status" "ko/api-reference/status"
] ]
} }
@@ -1295,23 +1039,12 @@
}, },
{ {
"tab": "예시", "tab": "예시",
"icon": "code",
"groups": [ "groups": [
{ {
"group": "예시", "group": "예시",
"pages": ["ko/examples/example", "ko/examples/cookbooks"] "pages": ["ko/examples/example", "ko/examples/cookbooks"]
} }
] ]
},
{
"tab": "변경 로그",
"icon": "clock",
"groups": [
{
"group": "릴리스 노트",
"pages": ["ko/changelog"]
}
]
} }
] ]
} }
@@ -1321,23 +1054,15 @@
"light": "/images/crew_only_logo.png", "light": "/images/crew_only_logo.png",
"dark": "/images/crew_only_logo.png" "dark": "/images/crew_only_logo.png"
}, },
"fonts": {
"family": "Inter"
},
"appearance": { "appearance": {
"default": "system", "default": "dark",
"strict": false, "strict": false
"layout": "sidenav"
},
"background": {
"decoration": "grid"
}, },
"navbar": { "navbar": {
"links": [ "links": [
{ {
"label": "Start Cloud Trial", "label": "Start Cloud Trial",
"href": "https://app.crewai.com", "href": "https://app.crewai.com"
"icon": "arrow-up-right-from-square"
} }
], ],
"primary": { "primary": {
@@ -1356,20 +1081,7 @@
} }
}, },
"seo": { "seo": {
"indexing": "all", "indexing": "all"
"metatags": {
"og:type": "website",
"og:site_name": "CrewAI Documentation",
"og:image": "https://docs.crewai.com/images/crew_only_logo.png",
"twitter:card": "summary_large_image",
"twitter:site": "@crewAIInc",
"keywords": "AI agents, multi-agent systems, CrewAI, artificial intelligence, automation, Python framework, agent collaboration, AI workflows"
}
},
"feedback": {
"enabled": true,
"thumbsRating": true,
"suggestEdit": true
}, },
"redirects": [ "redirects": [
{ {
@@ -1390,7 +1102,7 @@
}, },
{ {
"source": "/changelog", "source": "/changelog",
"destination": "/en/changelog" "destination": "https://github.com/crewAIInc/crewAI/releases"
}, },
{ {
"source": "/telemetry", "source": "/telemetry",

View File

@@ -2,7 +2,6 @@
title: "GET /inputs" title: "GET /inputs"
description: "Get required inputs for your crew" description: "Get required inputs for your crew"
openapi: "/enterprise-api.en.yaml GET /inputs" openapi: "/enterprise-api.en.yaml GET /inputs"
mode: "wide"
--- ---

View File

@@ -1,29 +1,28 @@
--- ---
title: "Introduction" title: "Introduction"
description: "Complete reference for the CrewAI AMP REST API" description: "Complete reference for the CrewAI Enterprise REST API"
icon: "code" icon: "code"
mode: "wide"
--- ---
# CrewAI AMP API # CrewAI Enterprise API
Welcome to the CrewAI AMP API reference. This API allows you to programmatically interact with your deployed crews, enabling integration with your applications, workflows, and services. Welcome to the CrewAI Enterprise API reference. This API allows you to programmatically interact with your deployed crews, enabling integration with your applications, workflows, and services.
## Quick Start ## Quick Start
<Steps> <Steps>
<Step title="Get Your API Credentials"> <Step title="Get Your API Credentials">
Navigate to your crew's detail page in the CrewAI AMP dashboard and copy your Bearer Token from the Status tab. Navigate to your crew's detail page in the CrewAI Enterprise dashboard and copy your Bearer Token from the Status tab.
</Step> </Step>
<Step title="Discover Required Inputs"> <Step title="Discover Required Inputs">
Use the `GET /inputs` endpoint to see what parameters your crew expects. Use the `GET /inputs` endpoint to see what parameters your crew expects.
</Step> </Step>
<Step title="Start a Crew Execution"> <Step title="Start a Crew Execution">
Call `POST /kickoff` with your inputs to start the crew execution and receive a `kickoff_id`. Call `POST /kickoff` with your inputs to start the crew execution and receive a `kickoff_id`.
</Step> </Step>
<Step title="Monitor Progress"> <Step title="Monitor Progress">
Use `GET /status/{kickoff_id}` to check execution status and retrieve results. Use `GET /status/{kickoff_id}` to check execution status and retrieve results.
</Step> </Step>
@@ -46,7 +45,7 @@ curl -H "Authorization: Bearer YOUR_CREW_TOKEN" \
| **User Bearer Token** | User-scoped access | Limited permissions, suitable for user-specific operations | | **User Bearer Token** | User-scoped access | Limited permissions, suitable for user-specific operations |
<Tip> <Tip>
You can find both token types in the Status tab of your crew's detail page in the CrewAI AMP dashboard. You can find both token types in the Status tab of your crew's detail page in the CrewAI Enterprise dashboard.
</Tip> </Tip>
## Base URL ## Base URL
@@ -62,7 +61,7 @@ Replace `your-crew-name` with your actual crew's URL from the dashboard.
## Typical Workflow ## Typical Workflow
1. **Discovery**: Call `GET /inputs` to understand what your crew needs 1. **Discovery**: Call `GET /inputs` to understand what your crew needs
2. **Execution**: Submit inputs via `POST /kickoff` to start processing 2. **Execution**: Submit inputs via `POST /kickoff` to start processing
3. **Monitoring**: Poll `GET /status/{kickoff_id}` until completion 3. **Monitoring**: Poll `GET /status/{kickoff_id}` until completion
4. **Results**: Extract the final output from the completed response 4. **Results**: Extract the final output from the completed response
@@ -82,12 +81,12 @@ The API uses standard HTTP status codes:
## Interactive Testing ## Interactive Testing
<Info> <Info>
**Why no "Send" button?** Since each CrewAI AMP user has their own unique crew URL, we use **reference mode** instead of an interactive playground to avoid confusion. This shows you exactly what the requests should look like without non-functional send buttons. **Why no "Send" button?** Since each CrewAI Enterprise user has their own unique crew URL, we use **reference mode** instead of an interactive playground to avoid confusion. This shows you exactly what the requests should look like without non-functional send buttons.
</Info> </Info>
Each endpoint page shows you: Each endpoint page shows you:
- ✅ **Exact request format** with all parameters - ✅ **Exact request format** with all parameters
- ✅ **Response examples** for success and error cases - ✅ **Response examples** for success and error cases
- ✅ **Code samples** in multiple languages (cURL, Python, JavaScript, etc.) - ✅ **Code samples** in multiple languages (cURL, Python, JavaScript, etc.)
- ✅ **Authentication examples** with proper Bearer token format - ✅ **Authentication examples** with proper Bearer token format
@@ -104,7 +103,7 @@ Each endpoint page shows you:
**Example workflow:** **Example workflow:**
1. **Copy this cURL example** from any endpoint page 1. **Copy this cURL example** from any endpoint page
2. **Replace `your-actual-crew-name.crewai.com`** with your real crew URL 2. **Replace `your-actual-crew-name.crewai.com`** with your real crew URL
3. **Replace the Bearer token** with your real token from the dashboard 3. **Replace the Bearer token** with your real token from the dashboard
4. **Run the request** in your terminal or API client 4. **Run the request** in your terminal or API client

View File

@@ -2,7 +2,6 @@
title: "POST /kickoff" title: "POST /kickoff"
description: "Start a crew execution" description: "Start a crew execution"
openapi: "/enterprise-api.en.yaml POST /kickoff" openapi: "/enterprise-api.en.yaml POST /kickoff"
mode: "wide"
--- ---

View File

@@ -1,6 +0,0 @@
---
title: "POST /resume"
description: "Resume crew execution with human feedback"
openapi: "/enterprise-api.en.yaml POST /resume"
mode: "wide"
---

View File

@@ -2,7 +2,6 @@
title: "GET /status/{kickoff_id}" title: "GET /status/{kickoff_id}"
description: "Get execution status" description: "Get execution status"
openapi: "/enterprise-api.en.yaml GET /status/{kickoff_id}" openapi: "/enterprise-api.en.yaml GET /status/{kickoff_id}"
mode: "wide"
--- ---

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,6 @@
title: Agents title: Agents
description: Detailed guide on creating and managing agents within the CrewAI framework. description: Detailed guide on creating and managing agents within the CrewAI framework.
icon: robot icon: robot
mode: "wide"
--- ---
## Overview of an Agent ## Overview of an Agent
@@ -20,7 +19,7 @@ Think of an agent as a specialized team member with specific skills, expertise,
</Tip> </Tip>
<Note type="info" title="Enterprise Enhancement: Visual Agent Builder"> <Note type="info" title="Enterprise Enhancement: Visual Agent Builder">
CrewAI AMP includes a Visual Agent Builder that simplifies agent creation and configuration without writing code. Design your agents visually and test them in real-time. CrewAI Enterprise includes a Visual Agent Builder that simplifies agent creation and configuration without writing code. Design your agents visually and test them in real-time.
![Visual Agent Builder Screenshot](/images/enterprise/crew-studio-interface.png) ![Visual Agent Builder Screenshot](/images/enterprise/crew-studio-interface.png)

View File

@@ -2,10 +2,9 @@
title: CLI title: CLI
description: Learn how to use the CrewAI CLI to interact with CrewAI. description: Learn how to use the CrewAI CLI to interact with CrewAI.
icon: terminal icon: terminal
mode: "wide"
--- ---
<Warning>Since release 0.140.0, CrewAI AMP started a process of migrating their login provider. As such, the authentication flow via CLI was updated. Users that use Google to login, or that created their account after July 3rd, 2025 will be unable to log in with older versions of the `crewai` library.</Warning> <Warning>Since release 0.140.0, CrewAI Enterprise started a process of migrating their login provider. As such, the authentication flow via CLI was updated. Users that use Google to login, or that created their account after July 3rd, 2025 will be unable to log in with older versions of the `crewai` library.</Warning>
## Overview ## Overview
@@ -186,9 +185,9 @@ def crew(self) -> Crew:
### 10. Deploy ### 10. Deploy
Deploy the crew or flow to [CrewAI AMP](https://app.crewai.com). Deploy the crew or flow to [CrewAI Enterprise](https://app.crewai.com).
- **Authentication**: You need to be authenticated to deploy to CrewAI AMP. - **Authentication**: You need to be authenticated to deploy to CrewAI Enterprise.
You can login or create an account with: You can login or create an account with:
```shell Terminal ```shell Terminal
crewai login crewai login
@@ -203,7 +202,7 @@ Deploy the crew or flow to [CrewAI AMP](https://app.crewai.com).
### 11. Organization Management ### 11. Organization Management
Manage your CrewAI AMP organizations. Manage your CrewAI Enterprise organizations.
```shell Terminal ```shell Terminal
crewai org [COMMAND] [OPTIONS] crewai org [COMMAND] [OPTIONS]
@@ -227,17 +226,17 @@ crewai org switch <organization_id>
``` ```
<Note> <Note>
You must be authenticated to CrewAI AMP to use these organization management commands. You must be authenticated to CrewAI Enterprise to use these organization management commands.
</Note> </Note>
- **Create a deployment** (continued): - **Create a deployment** (continued):
- Links the deployment to the corresponding remote GitHub repository (it usually detects this automatically). - Links the deployment to the corresponding remote GitHub repository (it usually detects this automatically).
- **Deploy the Crew**: Once you are authenticated, you can deploy your crew or flow to CrewAI AMP. - **Deploy the Crew**: Once you are authenticated, you can deploy your crew or flow to CrewAI Enterprise.
```shell Terminal ```shell Terminal
crewai deploy push crewai deploy push
``` ```
- Initiates the deployment process on the CrewAI AMP platform. - Initiates the deployment process on the CrewAI Enterprise platform.
- Upon successful initiation, it will output the Deployment created successfully! message along with the Deployment Name and a unique Deployment ID (UUID). - Upon successful initiation, it will output the Deployment created successfully! message along with the Deployment Name and a unique Deployment ID (UUID).
- **Deployment Status**: You can check the status of your deployment with: - **Deployment Status**: You can check the status of your deployment with:
@@ -262,7 +261,7 @@ You must be authenticated to CrewAI AMP to use these organization management com
```shell Terminal ```shell Terminal
crewai deploy remove crewai deploy remove
``` ```
This deletes the deployment from the CrewAI AMP platform. This deletes the deployment from the CrewAI Enterprise platform.
- **Help Command**: You can get help with the CLI with: - **Help Command**: You can get help with the CLI with:
```shell Terminal ```shell Terminal
@@ -270,36 +269,20 @@ You must be authenticated to CrewAI AMP to use these organization management com
``` ```
This shows the help message for the CrewAI Deploy CLI. This shows the help message for the CrewAI Deploy CLI.
Watch this video tutorial for a step-by-step demonstration of deploying your crew to [CrewAI AMP](http://app.crewai.com) using the CLI. Watch this video tutorial for a step-by-step demonstration of deploying your crew to [CrewAI Enterprise](http://app.crewai.com) using the CLI.
<iframe <iframe
className="w-full aspect-video rounded-xl" width="100%"
height="400"
src="https://www.youtube.com/embed/3EqSV-CYDZA" src="https://www.youtube.com/embed/3EqSV-CYDZA"
title="CrewAI Deployment Guide" title="CrewAI Deployment Guide"
frameBorder="0" frameborder="0"
style={{ borderRadius: '10px' }}
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen allowfullscreen
></iframe> ></iframe>
### 11. Login ### 11. API Keys
Authenticate with CrewAI AMP using a secure device code flow (no email entry required).
```shell Terminal
crewai login
```
What happens:
- A verification URL and short code are displayed in your terminal
- Your browser opens to the verification URL
- Enter/confirm the code to complete authentication
Notes:
- The OAuth2 provider and domain are configured via `crewai config` (defaults use `login.crewai.com`)
- After successful login, the CLI also attempts to authenticate to the Tool Repository automatically
- If you reset your configuration, run `crewai login` again to re-authenticate
### 12. API Keys
When running ```crewai create crew``` command, the CLI will show you a list of available LLM providers to choose from, followed by model selection for your chosen provider. When running ```crewai create crew``` command, the CLI will show you a list of available LLM providers to choose from, followed by model selection for your chosen provider.
@@ -327,7 +310,7 @@ See the following link for each provider's key name:
* [LiteLLM Providers](https://docs.litellm.ai/docs/providers) * [LiteLLM Providers](https://docs.litellm.ai/docs/providers)
### 13. Configuration Management ### 12. Configuration Management
Manage CLI configuration settings for CrewAI. Manage CLI configuration settings for CrewAI.
@@ -354,7 +337,7 @@ crewai config reset
#### Available Configuration Parameters #### Available Configuration Parameters
- `enterprise_base_url`: Base URL of the CrewAI AMP instance - `enterprise_base_url`: Base URL of the CrewAI Enterprise instance
- `oauth2_provider`: OAuth2 provider used for authentication (e.g., workos, okta, auth0) - `oauth2_provider`: OAuth2 provider used for authentication (e.g., workos, okta, auth0)
- `oauth2_audience`: OAuth2 audience value, typically used to identify the target API or resource - `oauth2_audience`: OAuth2 audience value, typically used to identify the target API or resource
- `oauth2_client_id`: OAuth2 client ID issued by the provider, used during authentication requests - `oauth2_client_id`: OAuth2 client ID issued by the provider, used during authentication requests
@@ -368,15 +351,19 @@ crewai config list
``` ```
Example output: Example output:
| Setting | Value | Description | ```
| :------------------ | :----------------------- | :---------------------------------------------------------- | CrewAI CLI Configuration
| enterprise_base_url | https://app.crewai.com | Base URL of the CrewAI AMP instance | ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
| org_name | Not set | Name of the currently active organization | ┃ Setting ┃ Value ┃ Description ┃
| org_uuid | Not set | UUID of the currently active organization | ┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
| oauth2_provider | workos | OAuth2 provider (e.g., workos, okta, auth0) | │ enterprise_base_url│ https://app.crewai.com │ Base URL of the CrewAI Enterprise instance
| oauth2_audience | client_01YYY | Audience identifying the target API/resource | org_name │ Not set │ Name of the currently active organization │
| oauth2_client_id | client_01XXX | OAuth2 client ID issued by the provider | org_uuid │ Not set │ UUID of the currently active organization │
| oauth2_domain | login.crewai.com | Provider domain (e.g., your-org.auth0.com) | oauth2_provider │ workos │ OAuth2 provider used for authentication (e.g., workos, okta, auth0).
│ oauth2_audience │ client_01YYY │ OAuth2 audience value, typically used to identify the target API or resource. │
│ oauth2_client_id │ client_01XXX │ OAuth2 client ID issued by the provider, used during authentication requests. │
│ oauth2_domain │ login.crewai.com │ OAuth2 provider's domain (e.g., your-org.auth0.com) used for issuing tokens. │
```
Set the enterprise base URL: Set the enterprise base URL:
```shell Terminal ```shell Terminal
@@ -398,14 +385,6 @@ Reset all configuration to defaults:
crewai config reset crewai config reset
``` ```
<Tip>
After resetting configuration, re-run `crewai login` to authenticate again.
</Tip>
<Tip>
CrewAI CLI handles authentication to the Tool Repository automatically when adding packages to your project. Just append `crewai` before any `uv` command to use it. E.g. `crewai uv add requests`. For more information, see [Tool Repository](https://docs.crewai.com/enterprise/features/tool-repository) docs.
</Tip>
<Note> <Note>
Configuration settings are stored in `~/.config/crewai/settings.json`. Some settings like organization name and UUID are read-only and managed through authentication and organization commands. Tool repository related settings are hidden and cannot be set directly by users. Configuration settings are stored in `~/.config/crewai/settings.json`. Some settings like organization name and UUID are read-only and managed through authentication and organization commands. Tool repository related settings are hidden and cannot be set directly by users.
</Note> </Note>

View File

@@ -2,7 +2,6 @@
title: Collaboration title: Collaboration
description: How to enable agents to work together, delegate tasks, and communicate effectively within CrewAI teams. description: How to enable agents to work together, delegate tasks, and communicate effectively within CrewAI teams.
icon: screen-users icon: screen-users
mode: "wide"
--- ---
## Overview ## Overview

View File

@@ -2,7 +2,6 @@
title: Crews title: Crews
description: Understanding and utilizing crews in the crewAI framework with comprehensive attributes and functionalities. description: Understanding and utilizing crews in the crewAI framework with comprehensive attributes and functionalities.
icon: people-group icon: people-group
mode: "wide"
--- ---
## Overview ## Overview

View File

@@ -2,7 +2,6 @@
title: 'Event Listeners' title: 'Event Listeners'
description: 'Tap into CrewAI events to build custom integrations and monitoring' description: 'Tap into CrewAI events to build custom integrations and monitoring'
icon: spinner icon: spinner
mode: "wide"
--- ---
## Overview ## Overview
@@ -20,7 +19,7 @@ CrewAI uses an event bus architecture to emit events throughout the execution li
When specific actions occur in CrewAI (like a Crew starting execution, an Agent completing a task, or a tool being used), the system emits corresponding events. You can register handlers for these events to execute custom code when they occur. When specific actions occur in CrewAI (like a Crew starting execution, an Agent completing a task, or a tool being used), the system emits corresponding events. You can register handlers for these events to execute custom code when they occur.
<Note type="info" title="Enterprise Enhancement: Prompt Tracing"> <Note type="info" title="Enterprise Enhancement: Prompt Tracing">
CrewAI AMP provides a built-in Prompt Tracing feature that leverages the event system to track, store, and visualize all prompts, completions, and associated metadata. This provides powerful debugging capabilities and transparency into your agent operations. CrewAI Enterprise provides a built-in Prompt Tracing feature that leverages the event system to track, store, and visualize all prompts, completions, and associated metadata. This provides powerful debugging capabilities and transparency into your agent operations.
![Prompt Tracing Dashboard](/images/enterprise/traces-overview.png) ![Prompt Tracing Dashboard](/images/enterprise/traces-overview.png)
@@ -45,12 +44,12 @@ To create a custom event listener, you need to:
Here's a simple example of a custom event listener class: Here's a simple example of a custom event listener class:
```python ```python
from crewai.events import ( from crewai.utilities.events import (
CrewKickoffStartedEvent, CrewKickoffStartedEvent,
CrewKickoffCompletedEvent, CrewKickoffCompletedEvent,
AgentExecutionCompletedEvent, AgentExecutionCompletedEvent,
) )
from crewai.events import BaseEventListener from crewai.utilities.events.base_event_listener import BaseEventListener
class MyCustomListener(BaseEventListener): class MyCustomListener(BaseEventListener):
def __init__(self): def __init__(self):
@@ -147,7 +146,7 @@ my_project/
```python ```python
# my_custom_listener.py # my_custom_listener.py
from crewai.events import BaseEventListener from crewai.utilities.events.base_event_listener import BaseEventListener
# ... import events ... # ... import events ...
class MyCustomListener(BaseEventListener): class MyCustomListener(BaseEventListener):
@@ -280,7 +279,7 @@ Additional fields vary by event type. For example, `CrewKickoffCompletedEvent` i
For temporary event handling (useful for testing or specific operations), you can use the `scoped_handlers` context manager: For temporary event handling (useful for testing or specific operations), you can use the `scoped_handlers` context manager:
```python ```python
from crewai.events import crewai_event_bus, CrewKickoffStartedEvent from crewai.utilities.events import crewai_event_bus, CrewKickoffStartedEvent
with crewai_event_bus.scoped_handlers(): with crewai_event_bus.scoped_handlers():
@crewai_event_bus.on(CrewKickoffStartedEvent) @crewai_event_bus.on(CrewKickoffStartedEvent)

View File

@@ -2,7 +2,6 @@
title: Flows title: Flows
description: Learn how to create and manage AI workflows using CrewAI Flows. description: Learn how to create and manage AI workflows using CrewAI Flows.
icon: arrow-progress icon: arrow-progress
mode: "wide"
--- ---
## Overview ## Overview
@@ -98,13 +97,7 @@ The state's unique ID and stored data can be useful for tracking flow executions
### @start() ### @start()
The `@start()` decorator marks entry points for a Flow. You can: The `@start()` decorator is used to mark a method as the starting point of a Flow. When a Flow is started, all the methods decorated with `@start()` are executed in parallel. You can have multiple start methods in a Flow, and they will all be executed when the Flow is started.
- Declare multiple unconditional starts: `@start()`
- Gate a start on a prior method or router label: `@start("method_or_label")`
- Provide a callable condition to control when a start should fire
All satisfied `@start()` methods will execute (often in parallel) when the Flow begins or resumes.
### @listen() ### @listen()
@@ -875,13 +868,14 @@ By exploring these examples, you can gain insights into how to leverage CrewAI F
Also, check out our YouTube video on how to use flows in CrewAI below! Also, check out our YouTube video on how to use flows in CrewAI below!
<iframe <iframe
className="w-full aspect-video rounded-xl" width="560"
height="315"
src="https://www.youtube.com/embed/MTb5my6VOT8" src="https://www.youtube.com/embed/MTb5my6VOT8"
title="CrewAI Flows overview" title="YouTube video player"
frameBorder="0" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
referrerPolicy="strict-origin-when-cross-origin" referrerpolicy="strict-origin-when-cross-origin"
allowFullScreen allowfullscreen
></iframe> ></iframe>
## Running Flows ## Running Flows

View File

@@ -2,7 +2,6 @@
title: Knowledge title: Knowledge
description: What is knowledge in CrewAI and how to use it. description: What is knowledge in CrewAI and how to use it.
icon: book icon: book
mode: "wide"
--- ---
## Overview ## Overview
@@ -25,41 +24,6 @@ For file-based Knowledge Sources, make sure to place your files in a `knowledge`
Also, use relative paths from the `knowledge` directory when creating the source. Also, use relative paths from the `knowledge` directory when creating the source.
</Tip> </Tip>
### Vector store (RAG) client configuration
CrewAI exposes a provider-neutral RAG client abstraction for vector stores. The default provider is ChromaDB, and Qdrant is supported as well. You can switch providers using configuration utilities.
Supported today:
- ChromaDB (default)
- Qdrant
```python Code
from crewai.rag.config.utils import set_rag_config, get_rag_client, clear_rag_config
# ChromaDB (default)
from crewai.rag.chromadb.config import ChromaDBConfig
set_rag_config(ChromaDBConfig())
chromadb_client = get_rag_client()
# Qdrant
from crewai.rag.qdrant.config import QdrantConfig
set_rag_config(QdrantConfig())
qdrant_client = get_rag_client()
# Example operations (same API for any provider)
client = qdrant_client # or chromadb_client
client.create_collection(collection_name="docs")
client.add_documents(
collection_name="docs",
documents=[{"id": "1", "content": "CrewAI enables collaborative AI agents."}],
)
results = client.search(collection_name="docs", query="collaborative agents", limit=3)
clear_rag_config() # optional reset
```
This RAG client is separate from Knowledges built-in storage. Use it when you need direct vector-store control or custom retrieval pipelines.
### Basic String Knowledge Example ### Basic String Knowledge Example
```python Code ```python Code
@@ -717,11 +681,11 @@ CrewAI emits events during the knowledge retrieval process that you can listen f
#### Example: Monitoring Knowledge Retrieval #### Example: Monitoring Knowledge Retrieval
```python ```python
from crewai.events import ( from crewai.utilities.events import (
KnowledgeRetrievalStartedEvent, KnowledgeRetrievalStartedEvent,
KnowledgeRetrievalCompletedEvent, KnowledgeRetrievalCompletedEvent,
BaseEventListener,
) )
from crewai.utilities.events.base_event_listener import BaseEventListener
class KnowledgeMonitorListener(BaseEventListener): class KnowledgeMonitorListener(BaseEventListener):
def setup_listeners(self, crewai_event_bus): def setup_listeners(self, crewai_event_bus):

View File

@@ -2,7 +2,6 @@
title: 'LLMs' title: 'LLMs'
description: 'A comprehensive guide to configuring and using Large Language Models (LLMs) in your CrewAI projects' description: 'A comprehensive guide to configuring and using Large Language Models (LLMs) in your CrewAI projects'
icon: 'microchip-ai' icon: 'microchip-ai'
mode: "wide"
--- ---
## Overview ## Overview
@@ -734,10 +733,10 @@ CrewAI supports streaming responses from LLMs, allowing your application to rece
CrewAI emits events for each chunk received during streaming: CrewAI emits events for each chunk received during streaming:
```python ```python
from crewai.events import ( from crewai.utilities.events import (
LLMStreamChunkEvent LLMStreamChunkEvent
) )
from crewai.events import BaseEventListener from crewai.utilities.events.base_event_listener import BaseEventListener
class MyCustomListener(BaseEventListener): class MyCustomListener(BaseEventListener):
def setup_listeners(self, crewai_event_bus): def setup_listeners(self, crewai_event_bus):
@@ -759,8 +758,8 @@ CrewAI supports streaming responses from LLMs, allowing your application to rece
```python ```python
from crewai import LLM, Agent, Task, Crew from crewai import LLM, Agent, Task, Crew
from crewai.events import LLMStreamChunkEvent from crewai.utilities.events import LLMStreamChunkEvent
from crewai.events import BaseEventListener from crewai.utilities.events.base_event_listener import BaseEventListener
class MyCustomListener(BaseEventListener): class MyCustomListener(BaseEventListener):
def setup_listeners(self, crewai_event_bus): def setup_listeners(self, crewai_event_bus):

View File

@@ -2,12 +2,11 @@
title: Memory title: Memory
description: Leveraging memory systems in the CrewAI framework to enhance agent capabilities. description: Leveraging memory systems in the CrewAI framework to enhance agent capabilities.
icon: database icon: database
mode: "wide"
--- ---
## Overview ## Overview
The CrewAI framework provides a sophisticated memory system designed to significantly enhance AI agent capabilities. CrewAI offers **two distinct memory approaches** that serve different use cases: The CrewAI framework provides a sophisticated memory system designed to significantly enhance AI agent capabilities. CrewAI offers **three distinct memory approaches** that serve different use cases:
1. **Basic Memory System** - Built-in short-term, long-term, and entity memory 1. **Basic Memory System** - Built-in short-term, long-term, and entity memory
2. **External Memory** - Standalone external memory providers 2. **External Memory** - Standalone external memory providers
@@ -739,17 +738,6 @@ print(f"OpenAI: {openai_time:.2f}s")
print(f"Ollama: {ollama_time:.2f}s") print(f"Ollama: {ollama_time:.2f}s")
``` ```
### Entity Memory batching behavior
Entity Memory supports batching when saving multiple entities at once. When you pass a list of `EntityMemoryItem`, the system:
- Emits a single MemorySaveStartedEvent with `entity_count`
- Saves each entity internally, collecting any partial errors
- Emits MemorySaveCompletedEvent with aggregate metadata (saved count, errors)
- Raises a partial-save exception if some entities failed (includes counts)
This improves performance and observability when writing many entities in one operation.
## 2. External Memory ## 2. External Memory
External Memory provides a standalone memory system that operates independently from the crew's built-in memory. This is ideal for specialized memory providers or cross-application memory sharing. External Memory provides a standalone memory system that operates independently from the crew's built-in memory. This is ideal for specialized memory providers or cross-application memory sharing.
@@ -1053,8 +1041,8 @@ CrewAI emits the following memory-related events:
Track memory operation timing to optimize your application: Track memory operation timing to optimize your application:
```python ```python
from crewai.events import ( from crewai.utilities.events.base_event_listener import BaseEventListener
BaseEventListener, from crewai.utilities.events import (
MemoryQueryCompletedEvent, MemoryQueryCompletedEvent,
MemorySaveCompletedEvent MemorySaveCompletedEvent
) )
@@ -1088,8 +1076,8 @@ memory_monitor = MemoryPerformanceMonitor()
Log memory operations for debugging and insights: Log memory operations for debugging and insights:
```python ```python
from crewai.events import ( from crewai.utilities.events.base_event_listener import BaseEventListener
BaseEventListener, from crewai.utilities.events import (
MemorySaveStartedEvent, MemorySaveStartedEvent,
MemoryQueryStartedEvent, MemoryQueryStartedEvent,
MemoryRetrievalCompletedEvent MemoryRetrievalCompletedEvent
@@ -1129,8 +1117,8 @@ memory_logger = MemoryLogger()
Capture and respond to memory errors: Capture and respond to memory errors:
```python ```python
from crewai.events import ( from crewai.utilities.events.base_event_listener import BaseEventListener
BaseEventListener, from crewai.utilities.events import (
MemorySaveFailedEvent, MemorySaveFailedEvent,
MemoryQueryFailedEvent MemoryQueryFailedEvent
) )
@@ -1179,8 +1167,8 @@ error_tracker = MemoryErrorTracker(notify_email="admin@example.com")
Memory events can be forwarded to analytics and monitoring platforms to track performance metrics, detect anomalies, and visualize memory usage patterns: Memory events can be forwarded to analytics and monitoring platforms to track performance metrics, detect anomalies, and visualize memory usage patterns:
```python ```python
from crewai.events import ( from crewai.utilities.events.base_event_listener import BaseEventListener
BaseEventListener, from crewai.utilities.events import (
MemoryQueryCompletedEvent, MemoryQueryCompletedEvent,
MemorySaveCompletedEvent MemorySaveCompletedEvent
) )

View File

@@ -2,7 +2,6 @@
title: Planning title: Planning
description: Learn how to add planning to your CrewAI Crew and improve their performance. description: Learn how to add planning to your CrewAI Crew and improve their performance.
icon: ruler-combined icon: ruler-combined
mode: "wide"
--- ---
## Overview ## Overview

View File

@@ -2,7 +2,6 @@
title: Processes title: Processes
description: Detailed guide on workflow management through processes in CrewAI, with updated implementation details. description: Detailed guide on workflow management through processes in CrewAI, with updated implementation details.
icon: bars-staggered icon: bars-staggered
mode: "wide"
--- ---
## Overview ## Overview

View File

@@ -2,7 +2,6 @@
title: Reasoning title: Reasoning
description: "Learn how to enable and use agent reasoning to improve task execution." description: "Learn how to enable and use agent reasoning to improve task execution."
icon: brain icon: brain
mode: "wide"
--- ---
## Overview ## Overview

View File

@@ -2,7 +2,6 @@
title: Tasks title: Tasks
description: Detailed guide on managing and creating tasks within the CrewAI framework. description: Detailed guide on managing and creating tasks within the CrewAI framework.
icon: list-check icon: list-check
mode: "wide"
--- ---
## Overview ## Overview
@@ -14,7 +13,7 @@ Tasks provide all necessary details for execution, such as a description, the ag
Tasks within CrewAI can be collaborative, requiring multiple agents to work together. This is managed through the task properties and orchestrated by the Crew's process, enhancing teamwork and efficiency. Tasks within CrewAI can be collaborative, requiring multiple agents to work together. This is managed through the task properties and orchestrated by the Crew's process, enhancing teamwork and efficiency.
<Note type="info" title="Enterprise Enhancement: Visual Task Builder"> <Note type="info" title="Enterprise Enhancement: Visual Task Builder">
CrewAI AMP includes a Visual Task Builder in Crew Studio that simplifies complex task creation and chaining. Design your task flows visually and test them in real-time without writing code. CrewAI Enterprise includes a Visual Task Builder in Crew Studio that simplifies complex task creation and chaining. Design your task flows visually and test them in real-time without writing code.
![Task Builder Screenshot](/images/enterprise/crew-studio-interface.png) ![Task Builder Screenshot](/images/enterprise/crew-studio-interface.png)
@@ -60,12 +59,6 @@ crew = Crew(
| **Output Pydantic** _(optional)_ | `output_pydantic` | `Optional[Type[BaseModel]]` | A Pydantic model for task output. | | **Output Pydantic** _(optional)_ | `output_pydantic` | `Optional[Type[BaseModel]]` | A Pydantic model for task output. |
| **Callback** _(optional)_ | `callback` | `Optional[Any]` | Function/object to be executed after task completion. | | **Callback** _(optional)_ | `callback` | `Optional[Any]` | Function/object to be executed after task completion. |
| **Guardrail** _(optional)_ | `guardrail` | `Optional[Callable]` | Function to validate task output before proceeding to next task. | | **Guardrail** _(optional)_ | `guardrail` | `Optional[Callable]` | Function to validate task output before proceeding to next task. |
| **Guardrail Max Retries** _(optional)_ | `guardrail_max_retries` | `Optional[int]` | Maximum number of retries when guardrail validation fails. Defaults to 3. |
<Note type="warning" title="Deprecated: max_retries">
The task attribute `max_retries` is deprecated and will be removed in v1.0.0.
Use `guardrail_max_retries` instead to control retry attempts when a guardrail fails.
</Note>
## Creating Tasks ## Creating Tasks
@@ -438,7 +431,7 @@ When a guardrail returns `(False, error)`:
2. The agent attempts to fix the issue 2. The agent attempts to fix the issue
3. The process repeats until: 3. The process repeats until:
- The guardrail returns `(True, result)` - The guardrail returns `(True, result)`
- Maximum retries are reached (`guardrail_max_retries`) - Maximum retries are reached
Example with retry handling: Example with retry handling:
```python Code ```python Code
@@ -459,7 +452,7 @@ task = Task(
expected_output="A valid JSON object", expected_output="A valid JSON object",
agent=analyst, agent=analyst,
guardrail=validate_json_output, guardrail=validate_json_output,
guardrail_max_retries=3 # Limit retry attempts max_retries=3 # Limit retry attempts
) )
``` ```
@@ -897,13 +890,14 @@ except RuntimeError as e:
Check out the video below to see how to use structured outputs in CrewAI: Check out the video below to see how to use structured outputs in CrewAI:
<iframe <iframe
className="w-full aspect-video rounded-xl" width="560"
height="315"
src="https://www.youtube.com/embed/dNpKQk5uxHw" src="https://www.youtube.com/embed/dNpKQk5uxHw"
title="Structured outputs in CrewAI" title="YouTube video player"
frameBorder="0" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
referrerPolicy="strict-origin-when-cross-origin" referrerpolicy="strict-origin-when-cross-origin"
allowFullScreen allowfullscreen
></iframe> ></iframe>
## Conclusion ## Conclusion

View File

@@ -2,7 +2,6 @@
title: Testing title: Testing
description: Learn how to test your CrewAI Crew and evaluate their performance. description: Learn how to test your CrewAI Crew and evaluate their performance.
icon: vial icon: vial
mode: "wide"
--- ---
## Overview ## Overview

View File

@@ -2,7 +2,6 @@
title: Tools title: Tools
description: Understanding and leveraging tools within the CrewAI framework for agent collaboration and task execution. description: Understanding and leveraging tools within the CrewAI framework for agent collaboration and task execution.
icon: screwdriver-wrench icon: screwdriver-wrench
mode: "wide"
--- ---
## Overview ## Overview
@@ -17,7 +16,7 @@ This includes tools from the [CrewAI Toolkit](https://github.com/joaomdmoura/cre
enabling everything from simple searches to complex interactions and effective teamwork among agents. enabling everything from simple searches to complex interactions and effective teamwork among agents.
<Note type="info" title="Enterprise Enhancement: Tools Repository"> <Note type="info" title="Enterprise Enhancement: Tools Repository">
CrewAI AMP provides a comprehensive Tools Repository with pre-built integrations for common business systems and APIs. Deploy agents with enterprise tools in minutes instead of days. CrewAI Enterprise provides a comprehensive Tools Repository with pre-built integrations for common business systems and APIs. Deploy agents with enterprise tools in minutes instead of days.
The Enterprise Tools Repository includes: The Enterprise Tools Repository includes:
- Pre-built connectors for popular enterprise systems - Pre-built connectors for popular enterprise systems
@@ -208,7 +207,7 @@ from crewai.tools import BaseTool
class AsyncCustomTool(BaseTool): class AsyncCustomTool(BaseTool):
name: str = "async_custom_tool" name: str = "async_custom_tool"
description: str = "An asynchronous custom tool" description: str = "An asynchronous custom tool"
async def _run(self, query: str = "") -> str: async def _run(self, query: str = "") -> str:
"""Asynchronously run the tool""" """Asynchronously run the tool"""
# Your async implementation here # Your async implementation here

View File

@@ -2,7 +2,6 @@
title: Training title: Training
description: Learn how to train your CrewAI agents by giving them feedback early on and get consistent results. description: Learn how to train your CrewAI agents by giving them feedback early on and get consistent results.
icon: dumbbell icon: dumbbell
mode: "wide"
--- ---
## Overview ## Overview

Some files were not shown because too many files have changed in this diff Show More