{
  "schemaVersion": "1.0",
  "title": "CrewAI connector configuration",
  "description": "This reference describes the product settings accepted by aip-host-crewai and aip-crewai-sidecar at the reviewed source revision. A complete deployment combines them with the shared connector-host identity, PostgreSQL, routing, signing, lif",
  "canonical": "https://getaip.org/docs/connectors/crewai/reference/configuration",
  "route": "/docs/connectors/crewai/reference/configuration",
  "source": "docs/connectors/crewai/reference/configuration.md",
  "protocol": "Agent Interoperability Protocol",
  "protocolVersion": "1.0",
  "section": "Connectors",
  "documentType": "Connector",
  "language": "en",
  "downloads": {
    "md": "/docs/download/connectors/crewai/reference/configuration.md",
    "txt": "/docs/download/connectors/crewai/reference/configuration.txt",
    "json": "/docs/download/connectors/crewai/reference/configuration.json",
    "pdf": "/docs/download/connectors/crewai/reference/configuration.pdf"
  },
  "content": {
    "format": "text/markdown",
    "markdown": "---\ntitle: CrewAI connector configuration\ndescription: >-\n  Look up CrewAI host and sidecar settings, defaults, limits, storage rules,\n  readiness, and reload ownership\nkind: reference\naudience: operator\nappliesTo: \"1.x\"\nwritingStandard: \"aip-docs/1.0\"\nlastReviewedRevision: \"97be86e9efedf07ecf1783b03800f683f107fb04\"\nconnector: crewai\naliases:\n  - CrewAI environment variables\n  - CrewAI sidecar settings\n  - CrewAI execution limits\n---\n\n# CrewAI connector configuration\n\nThis reference describes the product settings accepted by `aip-host-crewai`\nand `aip-crewai-sidecar` at the reviewed source revision. A complete deployment\ncombines them with the shared connector-host identity, PostgreSQL, routing,\nsigning, lifecycle, and optional stream-callback settings.\n\nAll CrewAI product settings are read when their process starts. Only the\nshared non-secret credential-revision policy is re-read before provider side\neffects.\n\n## Configuration identity\n\n| Property | Value |\n|---|---|\n| Rust host binary | `aip-host-crewai` |\n| Python package | `aip-crewai-sidecar` `1.0.0` |\n| AIP workspace version | `1.0.0` |\n| Reviewed AIP source | `97be86e9efedf07ecf1783b03800f683f107fb04` |\n| Connector ID | `crewai` |\n| Connector profile | `aip.connector.crewai.v1` |\n| CrewAI package in default product image | `1.15.5` |\n| Optional source-overlay revision | `bfa652a7be8637562cc9b0833f75d927a64552d1`, source version `1.15.2` |\n| Python range | `>=3.10,<3.14` |\n\nThe sidecar artifact also pins FastAPI, Pydantic, Uvicorn, the Python base\nimage, the package installer, and the complete Python lockfile.\n\n## Configure the Rust host\n\n| Environment variable | Command-line flag | Required | Default | Meaning |\n|---|---|---:|---|---|\n| `AIP_CREWAI_SIDECAR_URL` | `--sidecar-url` | Yes | None | Fixed base URL of the separately deployed sidecar |\n| `AIP_CREWAI_SIDECAR_TOKEN_FILE` | `--sidecar-token-file` | Yes | None | Owner-controlled bearer-token file used by the host |\n| `AIP_CREWAI_CREWS_FILE` | `--crews-file` | Yes | None | JSON array of admitted crew descriptors |\n| `AIP_CREWAI_MAX_RESPONSE_BYTES` | `--max-response-bytes` | No | `67108864` | Maximum blocking response or complete sidecar event stream |\n\nThe source rejects credentials, a query, and a fragment. HTTPS is required\nexcept for explicit loopback HTTP, and redirects are disabled.\n\nA path prefix is accepted but discarded by absolute `/health` and `/jobs`\njoins. Configure an origin-only value to keep reviewed and effective routes\nidentical.\n\nThe host reads a regular owner-only file with a 16 KiB ceiling, trims\nsurrounding ASCII whitespace, and requires non-empty UTF-8. The connector\nrejects an empty value or any control character; it does not reject an\ninterior plain space.\n\n`AIP_CREWAI_MAX_RESPONSE_BYTES` accepts `1` through `268435456`. The same\nconfigured value bounds one blocking sidecar response and the accumulated\nbytes of one event stream.\n\n## Configure admitted crew descriptors\n\nThe descriptor file is a JSON array of one to 1,000 entries and may not exceed\n4 MiB.\n\n```json\n[\n  {\n    \"id\": \"support-primary\",\n    \"name\": \"Support primary\",\n    \"description\": \"Reviewed support workflow\",\n    \"allowed_operations\": [\n      \"run\",\n      \"status\",\n      \"events\",\n      \"cancel\"\n    ]\n  }\n]\n```\n\n| Field | Required | Constraint |\n|---|---:|---|\n| `id` | Yes | Non-empty after trimming, unique, no control characters, valid inside capability IDs |\n| `name` | Yes | Non-empty after trimming; no field-specific byte or control-character bound at this revision |\n| `description` | No | No field-specific byte or control-character bound at this revision |\n| `allowed_operations` | No | Non-empty known-operation set; omission uses `run`, `status`, `events`, and `cancel` |\n\nThe 4 MiB file limit remains the combined payload ceiling. Apply a stricter\ndeployment schema before descriptor text reaches a public manifest.\n\nThe ten accepted operation names are `run`, `status`, `events`, `cancel`,\n`batch_run`, `replay`, `train`, `test`, `knowledge_query`, and\n`memory_reset`.\n\n## Configure the sidecar listener and authentication\n\n| Environment variable | Required | Default | Accepted value |\n|---|---:|---|---|\n| `AIP_CREWAI_HOST` | No | `0.0.0.0` | Uvicorn bind host |\n| `AIP_CREWAI_PORT` | No | `8090` | Integer Uvicorn port |\n| `AIP_CREWAI_BEARER_TOKEN_FILE` | Production | None | Protected UTF-8 file, 1 byte through 16 KiB |\n| `AIP_CREWAI_BEARER_TOKEN` | No | None | Mutually exclusive inline token for controlled development |\n| `AIP_CREWAI_ALLOW_UNAUTHENTICATED` | Development only | `false` | `1` or `true`, effective only on a loopback bind host |\n\nThe bearer file must be a regular non-symlink with no group or world\npermission bits. The sidecar checks the inspected and opened inode and uses\nconstant-time comparison for the complete Bearer header.\n\nThe controlled fleet places both components on a private network and uses one\nshared mounted token file. It still treats the host and sidecar as separate\nprocess identities.\n\n## Configure the registry and operation set\n\n| Environment variable | Required | Default | Meaning |\n|---|---:|---|---|\n| `AIP_CREWAI_REGISTRY` | Yes | None | Python `module:attribute` resolving to a non-empty crew mapping |\n| `AIP_CREWAI_ALLOWED_OPERATIONS` | No | `run` | Comma-separated startable operation set |\n\nRegistry values are zero-argument factories or cloneable Crew instances. The\nsidecar creates a new result or deep clone for every job.\n\nThe allowed sidecar set can contain:\n\n```text\nrun,batch_run,replay,train,test,knowledge_query,memory_reset\n```\n\n`status`, `events`, and `cancel` are control routes and appear in sidecar\nhealth automatically. Supplying a control operation in the environment value\nis invalid.\n\nThe host descriptor may be narrower than sidecar policy. Host readiness fails\nif any descriptor operation is absent from the authenticated sidecar health\nresponse.\n\n## Configure durable state\n\n| Environment variable | Required | Default | Range or role |\n|---|---:|---|---|\n| `AIP_CREWAI_STATE_FILE` | Production | None | Durable JSON journal path |\n| `AIP_CREWAI_ALLOW_EPHEMERAL` | Development only | `false` | Permits no journal only on a loopback bind host |\n| `AIP_CREWAI_MAX_RETAINED_RUNS` | No | `2000` | `max_concurrency` through `100000` |\n| `AIP_CREWAI_MAX_EVENTS_PER_RUN` | No | `1000` | `2` through `100000` |\n| `AIP_CREWAI_MAX_EVENT_BYTES` | No | `262144` | `1024` through `4194304` |\n| `AIP_CREWAI_MAX_STATE_BYTES` | No | `268435456` | `1048576` through `4294967296` |\n| `AIP_CREWAI_STREAM_CHECKPOINT_EVENTS` | No | `128` | `1` through `10000` |\n\nThe journal parent must be a non-symlink directory with no group or world\nwrite bit. The sidecar holds an exclusive non-blocking lock in a regular\n`0600` companion file.\n\nAn existing journal must be a regular non-symlink `0600` file within the\nconfigured byte limit. Restore rejects duplicate Action IDs, excessive runs,\nexcessive events, and oversized events.\n\nState writes use a same-directory temporary file, file sync, atomic replace,\nand directory sync. A configured maximum is a retention and integrity bound,\nnot permission to delete records inside the AIP replay window.\n\nThe default product image places `CREWAI_STORAGE_DIR` and `HOME` under the\nsidecar volume. Persist that volume with the journal; losing the durable home\ncan make locally encrypted provider credentials unreadable.\n\nThe optional source-overlay Dockerfile does not set those two paths at this\nrevision. A deployment using it must configure and persist an equivalent\nCrewAI home explicitly.\n\n## Configure execution and training\n\n| Environment variable | Required | Default | Range or role |\n|---|---:|---|---|\n| `AIP_CREWAI_MAX_CONCURRENCY` | No | `4` | `1` through `1024` concurrent jobs |\n| `AIP_CREWAI_TRAINING_DIR` | When `train` is enabled | None | Protected directory for controlled training artifacts |\n\nThe training directory is created with owner access when absent. It must be a\nnon-symlink directory and must not be group- or world-writable.\n\nThe Action's `timeout_ms` accepts `1` through `3600000`. Omission uses the\nsidecar default of `600000` milliseconds.\n\nTelemetry defaults are set before the registry loads:\n\n```text\nCREWAI_DISABLE_TELEMETRY=true\nCREWAI_TRACING_ENABLED=false\nOTEL_SDK_DISABLED=true\n```\n\nAn explicit deployment environment can override these existing variables.\nReview content and destination exposure before doing so.\n\n## Apply relevant shared host settings\n\nThe global host reference owns the exhaustive common matrix. These groups are\nrequired for CrewAI behavior.\n\n### Identity and route\n\n| Setting | Role |\n|---|---|\n| `AIP_CONNECTOR_HOST_PUBLIC_ENDPOINT` | Reachable native endpoint ending in `/aip/v1/messages` |\n| `AIP_CONNECTOR_HOST_TYPE_ID` | Admitted CrewAI connector type |\n| `AIP_CONNECTOR_HOST_VERSION_ID` | Immutable admitted version |\n| `AIP_CONNECTOR_HOST_INSTANCE_ID` | Logical runtime and task-store boundary |\n| `AIP_CONNECTOR_HOST_REPLICA_ID` | Concrete process identity |\n| `AIP_CONNECTOR_HOST_TENANT_ID` | Verified tenant owned by the instance |\n| `AIP_CONNECTOR_HOST_MEMBERSHIP_ID` | Stable membership assertion |\n| `AIP_CONNECTOR_HOST_ARTIFACT_DIGEST` | Exact Rust-host artifact digest |\n| `AIP_CONNECTOR_HOST_SECRET_PROVIDER_REF` | Non-secret secret-provider reference |\n\nAn optional external-account ID and system must appear together. The reviewed\nhost does not compare that metadata automatically with a crew descriptor.\n\n### PostgreSQL, signing, and lifecycle\n\n| Setting | Required or default |\n|---|---|\n| `AIP_CONNECTOR_HOST_BIND` | Default `0.0.0.0:8081` |\n| `AIP_CONNECTOR_HOST_DATABASE_URL_FILE` | Required owner-controlled PostgreSQL URL |\n| `AIP_CONNECTOR_HOST_SIGNING_SEED_FILE` | Required owner-controlled Ed25519 seed |\n| `AIP_CONNECTOR_HOST_CONTROL_ENDPOINT` | Required lifecycle endpoint |\n| `AIP_CONNECTOR_HOST_CONTROL_DID` or `_FILE` | Exactly one control-plane DID source |\n| `AIP_CONNECTOR_HOST_GATEWAY_PRINCIPAL_ID` | Required trusted gateway principal |\n| `AIP_CONNECTOR_HOST_GATEWAY_DID` or `_FILE` | Exactly one gateway DID source |\n| `AIP_CONNECTOR_HOST_TRUST_DOMAIN` | Required trust domain |\n| `AIP_CONNECTOR_HOST_TLS_CA_FILE` | Optional private-PKI root |\n| `AIP_CONNECTOR_HOST_MAX_IN_FLIGHT` | Default `32` |\n| `AIP_CONNECTOR_HOST_LEASE_TTL_MS` | Default `30000` |\n| `AIP_CONNECTOR_HOST_HEARTBEAT_MS` | Default `10000` |\n| `AIP_CONNECTOR_HOST_DRAIN_TIMEOUT_MS` | Default `30000` |\n| `AIP_CONNECTOR_HOST_HEALTH_TIMEOUT_MS` | Default `2000` |\n| `AIP_CONNECTOR_HOST_CONTROL_TIMEOUT_MS` | Default `5000` |\n\nShared credential ID, issuer, scopes, revision, and revision-policy settings\nare optional as one complete unit. They fence route authorization but do not\nreplace sidecar or CrewAI provider credentials.\n\n### Stream callback\n\n| Setting | Default |\n|---|---|\n| `AIP_CONNECTOR_HOST_CALLBACK_ENDPOINT` | None |\n| `AIP_CONNECTOR_HOST_CALLBACK_ALLOW_HTTP` | `false` |\n| `AIP_CONNECTOR_HOST_CALLBACK_ALLOW_PRIVATE` | `false` |\n\nConfigure callback behavior for the selected gateway topology. The product\nsettings do not make a callback mandatory for blocking operations.\n\n## Use the effective limits\n\n| Boundary | Reviewed value |\n|---|---:|\n| Native AIP request body, common default | 4 MiB |\n| Crew descriptor file | 4 MiB |\n| Crew descriptors | 1,000 |\n| Host and sidecar bearer file | 16 KiB |\n| Sidecar-validated operation input | 1 MiB |\n| Sidecar output | 4 MiB |\n| Sidecar event, default | 256 KiB |\n| Sidecar events per run, default | 1,000 |\n| Sidecar retained runs, default | 2,000 |\n| Sidecar journal, default | 256 MiB |\n| Connector SSE frame | 1 MiB |\n| Connector SSE events | 100,000 |\n| Host response, default | 64 MiB |\n| Host response, maximum | 256 MiB |\n| Sidecar execution timeout, default | 600,000 ms |\n| Sidecar execution timeout, maximum | 3,600,000 ms |\n| Rust HTTP connect timeout | 10 seconds |\n\nThe effective ceiling is the smallest applicable bound. Raising the host\nresponse limit does not enlarge the input, sidecar output, event, native\nenvelope, or journal limits.\n\nThe reviewed Rust client has no explicit total HTTP request deadline. The\nsidecar's operation timeout bounds its wait for a job, but it does not replace\na transport-wide client deadline.\n\n## Understand readiness\n\nThe Rust connector sends an authenticated `GET /health`. It reports ready only\nwhen the response has all of these properties:\n\n- `status` is `ready`;\n- `durable_journal` is `true`;\n- every descriptor crew ID appears in `crews`;\n- every descriptor operation appears in `operations`.\n\nCommon host readiness also requires PostgreSQL, a valid lease, correct\nlifecycle state, and other shared controls.\n\nReadiness does not run a crew, model, tool, training task, evaluator, knowledge\nquery, memory reset, cancellation race, or event recovery sequence.\n\n## Know startup and reload ownership\n\n| Value | Read |\n|---|---|\n| Sidecar base URL, token, descriptors, and response bound | Rust-host startup |\n| Listener, sidecar token, registry, operations, and runtime limits | Sidecar startup |\n| Journal and training paths | Sidecar startup |\n| Shared identity, storage, endpoints, and lifecycle limits | Rust-host startup |\n| Connector task-store scope | Constructed from the instance ID at startup |\n| Credential-revision policy file | Startup, then before provider side effects |\n\nChange startup-owned values through a controlled replacement. Editing a\nmounted file does not update a running registry, descriptor set, bearer token,\nmanifest, instance scope, or execution limit.\n\n## Diagnose configuration failures\n\n| Failure | First decision |\n|---|---|\n| Misleading sidecar path prefix | Supply an HTTPS origin-only value; absolute route joins discard the prefix |\n| Token file is rejected | Check regular-file type, permissions, UTF-8, size, and content without printing it |\n| Descriptor file is rejected | Check its 4 MiB bound, count, non-empty IDs and names, ID controls, uniqueness, capability syntax, and operation set |\n| Registry is rejected | Verify importability, `module:attribute`, non-empty mapping, and factory or clone shape |\n| Durable state is required | Configure a protected state path, not the loopback-only ephemeral exception |\n| Journal is already owned | Stop the competing sidecar or assign an independent state volume |\n| Training directory is required | Configure its protected path before enabling `train` |\n| Runtime integer is outside range | Correct the exact setting instead of weakening validation |\n| Host remains unready | Compare authenticated sidecar crews and operations with every descriptor |\n| Journal retention is full | Archive only terminal records after the required replay-retention window |\n\n## Related documentation\n\n- [CrewAI connector overview](../README.md)\n- [Authentication and admitted crews](../getting-started/authentication-and-admitted-crews.md)\n- [Connector host configuration](../../../reference/connector-host-configuration.md)\n- [Connector host lifecycle](../../../guides/connector-host-lifecycle.md)\n- [Environment variables](../../../reference/environment-variables.md)\n",
    "text": "CrewAI connector configuration\n\nThis reference describes the product settings accepted by aip-host-crewai\nand aip-crewai-sidecar at the reviewed source revision. A complete deployment\ncombines them with the shared connector-host identity, PostgreSQL, routing,\nsigning, lifecycle, and optional stream-callback settings.\n\nAll CrewAI product settings are read when their process starts. Only the\nshared non-secret credential-revision policy is re-read before provider side\neffects.\n\nConfiguration identity\n\n| Property | Value |\n\n| Rust host binary | aip-host-crewai |\n| Python package | aip-crewai-sidecar 1.0.0 |\n| AIP workspace version | 1.0.0 |\n| Reviewed AIP source | 97be86e9efedf07ecf1783b03800f683f107fb04 |\n| Connector ID | crewai |\n| Connector profile | aip.connector.crewai.v1 |\n| CrewAI package in default product image | 1.15.5 |\n| Optional source-overlay revision | bfa652a7be8637562cc9b0833f75d927a64552d1, source version 1.15.2 |\n| Python range | >=3.10,<3.14 |\n\nThe sidecar artifact also pins FastAPI, Pydantic, Uvicorn, the Python base\nimage, the package installer, and the complete Python lockfile.\n\nConfigure the Rust host\n\n| Environment variable | Command-line flag | Required | Default | Meaning |\n\n| AIPCREWAISIDECARURL | --sidecar-url | Yes | None | Fixed base URL of the separately deployed sidecar |\n| AIPCREWAISIDECARTOKENFILE | --sidecar-token-file | Yes | None | Owner-controlled bearer-token file used by the host |\n| AIPCREWAICREWSFILE | --crews-file | Yes | None | JSON array of admitted crew descriptors |\n| AIPCREWAIMAXRESPONSEBYTES | --max-response-bytes | No | 67108864 | Maximum blocking response or complete sidecar event stream |\n\nThe source rejects credentials, a query, and a fragment. HTTPS is required\nexcept for explicit loopback HTTP, and redirects are disabled.\n\nA path prefix is accepted but discarded by absolute /health and /jobs\njoins. Configure an origin-only value to keep reviewed and effective routes\nidentical.\n\nThe host reads a regular owner-only file with a 16 KiB ceiling, trims\nsurrounding ASCII whitespace, and requires non-empty UTF-8. The connector\nrejects an empty value or any control character; it does not reject an\ninterior plain space.\n\nAIPCREWAIMAXRESPONSEBYTES accepts 1 through 268435456. The same\nconfigured value bounds one blocking sidecar response and the accumulated\nbytes of one event stream.\n\nConfigure admitted crew descriptors\n\nThe descriptor file is a JSON array of one to 1,000 entries and may not exceed\n4 MiB.\n\n[\n  {\n    \"id\": \"support-primary\",\n    \"name\": \"Support primary\",\n    \"description\": \"Reviewed support workflow\",\n    \"allowedoperations\": [\n      \"run\",\n      \"status\",\n      \"events\",\n      \"cancel\"\n    ]\n  }\n]\n\n| Field | Required | Constraint |\n\n| id | Yes | Non-empty after trimming, unique, no control characters, valid inside capability IDs |\n| name | Yes | Non-empty after trimming; no field-specific byte or control-character bound at this revision |\n| description | No | No field-specific byte or control-character bound at this revision |\n| allowedoperations | No | Non-empty known-operation set; omission uses run, status, events, and cancel |\n\nThe 4 MiB file limit remains the combined payload ceiling. Apply a stricter\ndeployment schema before descriptor text reaches a public manifest.\n\nThe ten accepted operation names are run, status, events, cancel,\nbatchrun, replay, train, test, knowledgequery, and\nmemoryreset.\n\nConfigure the sidecar listener and authentication\n\n| Environment variable | Required | Default | Accepted value |\n\n| AIPCREWAIHOST | No | 0.0.0.0 | Uvicorn bind host |\n| AIPCREWAIPORT | No | 8090 | Integer Uvicorn port |\n| AIPCREWAIBEARERTOKENFILE | Production | None | Protected UTF-8 file, 1 byte through 16 KiB |\n| AIPCREWAIBEARERTOKEN | No | None | Mutually exclusive inline token for controlled development |\n| AIPCREWAIALLOWUNAUTHENTICATED | Development only | false | 1 or true, effective only on a loopback bind host |\n\nThe bearer file must be a regular non-symlink with no group or world\npermission bits. The sidecar checks the inspected and opened inode and uses\nconstant-time comparison for the complete Bearer header.\n\nThe controlled fleet places both components on a private network and uses one\nshared mounted token file. It still treats the host and sidecar as separate\nprocess identities.\n\nConfigure the registry and operation set\n\n| Environment variable | Required | Default | Meaning |\n\n| AIPCREWAIREGISTRY | Yes | None | Python module:attribute resolving to a non-empty crew mapping |\n| AIPCREWAIALLOWEDOPERATIONS | No | run | Comma-separated startable operation set |\n\nRegistry values are zero-argument factories or cloneable Crew instances. The\nsidecar creates a new result or deep clone for every job.\n\nThe allowed sidecar set can contain:\n\nrun,batchrun,replay,train,test,knowledgequery,memoryreset\n\nstatus, events, and cancel are control routes and appear in sidecar\nhealth automatically. Supplying a control operation in the environment value\nis invalid.\n\nThe host descriptor may be narrower than sidecar policy. Host readiness fails\nif any descriptor operation is absent from the authenticated sidecar health\nresponse.\n\nConfigure durable state\n\n| Environment variable | Required | Default | Range or role |\n\n| AIPCREWAISTATEFILE | Production | None | Durable JSON journal path |\n| AIPCREWAIALLOWEPHEMERAL | Development only | false | Permits no journal only on a loopback bind host |\n| AIPCREWAIMAXRETAINEDRUNS | No | 2000 | maxconcurrency through 100000 |\n| AIPCREWAIMAXEVENTSPERRUN | No | 1000 | 2 through 100000 |\n| AIPCREWAIMAXEVENTBYTES | No | 262144 | 1024 through 4194304 |\n| AIPCREWAIMAXSTATEBYTES | No | 268435456 | 1048576 through 4294967296 |\n| AIPCREWAISTREAMCHECKPOINTEVENTS | No | 128 | 1 through 10000 |\n\nThe journal parent must be a non-symlink directory with no group or world\nwrite bit. The sidecar holds an exclusive non-blocking lock in a regular\n0600 companion file.\n\nAn existing journal must be a regular non-symlink 0600 file within the\nconfigured byte limit. Restore rejects duplicate Action IDs, excessive runs,\nexcessive events, and oversized events.\n\nState writes use a same-directory temporary file, file sync, atomic replace,\nand directory sync. A configured maximum is a retention and integrity bound,\nnot permission to delete records inside the AIP replay window.\n\nThe default product image places CREWAISTORAGEDIR and HOME under the\nsidecar volume. Persist that volume with the journal; losing the durable home\ncan make locally encrypted provider credentials unreadable.\n\nThe optional source-overlay Dockerfile does not set those two paths at this\nrevision. A deployment using it must configure and persist an equivalent\nCrewAI home explicitly.\n\nConfigure execution and training\n\n| Environment variable | Required | Default | Range or role |\n\n| AIPCREWAIMAXCONCURRENCY | No | 4 | 1 through 1024 concurrent jobs |\n| AIPCREWAITRAININGDIR | When train is enabled | None | Protected directory for controlled training artifacts |\n\nThe training directory is created with owner access when absent. It must be a\nnon-symlink directory and must not be group- or world-writable.\n\nThe Action's timeoutms accepts 1 through 3600000. Omission uses the\nsidecar default of 600000 milliseconds.\n\nTelemetry defaults are set before the registry loads:\n\nCREWAIDISABLETELEMETRY=true\nCREWAITRACINGENABLED=false\nOTELSDKDISABLED=true\n\nAn explicit deployment environment can override these existing variables.\nReview content and destination exposure before doing so.\n\nApply relevant shared host settings\n\nThe global host reference owns the exhaustive common matrix. These groups are\nrequired for CrewAI behavior.\n\nIdentity and route\n\n| Setting | Role |\n\n| AIPCONNECTORHOSTPUBLICENDPOINT | Reachable native endpoint ending in /aip/v1/messages |\n| AIPCONNECTORHOSTTYPEID | Admitted CrewAI connector type |\n| AIPCONNECTORHOSTVERSIONID | Immutable admitted version |\n| AIPCONNECTORHOSTINSTANCEID | Logical runtime and task-store boundary |\n| AIPCONNECTORHOSTREPLICAID | Concrete process identity |\n| AIPCONNECTORHOSTTENANTID | Verified tenant owned by the instance |\n| AIPCONNECTORHOSTMEMBERSHIPID | Stable membership assertion |\n| AIPCONNECTORHOSTARTIFACTDIGEST | Exact Rust-host artifact digest |\n| AIPCONNECTORHOSTSECRETPROVIDERREF | Non-secret secret-provider reference |\n\nAn optional external-account ID and system must appear together. The reviewed\nhost does not compare that metadata automatically with a crew descriptor.\n\nPostgreSQL, signing, and lifecycle\n\n| Setting | Required or default |\n\n| AIPCONNECTORHOSTBIND | Default 0.0.0.0:8081 |\n| AIPCONNECTORHOSTDATABASEURLFILE | Required owner-controlled PostgreSQL URL |\n| AIPCONNECTORHOSTSIGNINGSEEDFILE | Required owner-controlled Ed25519 seed |\n| AIPCONNECTORHOSTCONTROLENDPOINT | Required lifecycle endpoint |\n| AIPCONNECTORHOSTCONTROLDID or FILE | Exactly one control-plane DID source |\n| AIPCONNECTORHOSTGATEWAYPRINCIPALID | Required trusted gateway principal |\n| AIPCONNECTORHOSTGATEWAYDID or FILE | Exactly one gateway DID source |\n| AIPCONNECTORHOSTTRUSTDOMAIN | Required trust domain |\n| AIPCONNECTORHOSTTLSCAFILE | Optional private-PKI root |\n| AIPCONNECTORHOSTMAXINFLIGHT | Default 32 |\n| AIPCONNECTORHOSTLEASETTLMS | Default 30000 |\n| AIPCONNECTORHOSTHEARTBEATMS | Default 10000 |\n| AIPCONNECTORHOSTDRAINTIMEOUTMS | Default 30000 |\n| AIPCONNECTORHOSTHEALTHTIMEOUTMS | Default 2000 |\n| AIPCONNECTORHOSTCONTROLTIMEOUTMS | Default 5000 |\n\nShared credential ID, issuer, scopes, revision, and revision-policy settings\nare optional as one complete unit. They fence route authorization but do not\nreplace sidecar or CrewAI provider credentials.\n\nStream callback\n\n| Setting | Default |\n\n| AIPCONNECTORHOSTCALLBACKENDPOINT | None |\n| AIPCONNECTORHOSTCALLBACKALLOWHTTP | false |\n| AIPCONNECTORHOSTCALLBACKALLOWPRIVATE | false |\n\nConfigure callback behavior for the selected gateway topology. The product\nsettings do not make a callback mandatory for blocking operations.\n\nUse the effective limits\n\n| Boundary | Reviewed value |\n\n| Native AIP request body, common default | 4 MiB |\n| Crew descriptor file | 4 MiB |\n| Crew descriptors | 1,000 |\n| Host and sidecar bearer file | 16 KiB |\n| Sidecar-validated operation input | 1 MiB |\n| Sidecar output | 4 MiB |\n| Sidecar event, default | 256 KiB |\n| Sidecar events per run, default | 1,000 |\n| Sidecar retained runs, default | 2,000 |\n| Sidecar journal, default | 256 MiB |\n| Connector SSE frame | 1 MiB |\n| Connector SSE events | 100,000 |\n| Host response, default | 64 MiB |\n| Host response, maximum | 256 MiB |\n| Sidecar execution timeout, default | 600,000 ms |\n| Sidecar execution timeout, maximum | 3,600,000 ms |\n| Rust HTTP connect timeout | 10 seconds |\n\nThe effective ceiling is the smallest applicable bound. Raising the host\nresponse limit does not enlarge the input, sidecar output, event, native\nenvelope, or journal limits.\n\nThe reviewed Rust client has no explicit total HTTP request deadline. The\nsidecar's operation timeout bounds its wait for a job, but it does not replace\na transport-wide client deadline.\n\nUnderstand readiness\n\nThe Rust connector sends an authenticated GET /health. It reports ready only\nwhen the response has all of these properties:\n• status is ready;\n• durablejournal is true;\n• every descriptor crew ID appears in crews;\n• every descriptor operation appears in operations.\n\nCommon host readiness also requires PostgreSQL, a valid lease, correct\nlifecycle state, and other shared controls.\n\nReadiness does not run a crew, model, tool, training task, evaluator, knowledge\nquery, memory reset, cancellation race, or event recovery sequence.\n\nKnow startup and reload ownership\n\n| Value | Read |\n\n| Sidecar base URL, token, descriptors, and response bound | Rust-host startup |\n| Listener, sidecar token, registry, operations, and runtime limits | Sidecar startup |\n| Journal and training paths | Sidecar startup |\n| Shared identity, storage, endpoints, and lifecycle limits | Rust-host startup |\n| Connector task-store scope | Constructed from the instance ID at startup |\n| Credential-revision policy file | Startup, then before provider side effects |\n\nChange startup-owned values through a controlled replacement. Editing a\nmounted file does not update a running registry, descriptor set, bearer token,\nmanifest, instance scope, or execution limit.\n\nDiagnose configuration failures\n\n| Failure | First decision |\n\n| Misleading sidecar path prefix | Supply an HTTPS origin-only value; absolute route joins discard the prefix |\n| Token file is rejected | Check regular-file type, permissions, UTF-8, size, and content without printing it |\n| Descriptor file is rejected | Check its 4 MiB bound, count, non-empty IDs and names, ID controls, uniqueness, capability syntax, and operation set |\n| Registry is rejected | Verify importability, module:attribute, non-empty mapping, and factory or clone shape |\n| Durable state is required | Configure a protected state path, not the loopback-only ephemeral exception |\n| Journal is already owned | Stop the competing sidecar or assign an independent state volume |\n| Training directory is required | Configure its protected path before enabling train |\n| Runtime integer is outside range | Correct the exact setting instead of weakening validation |\n| Host remains unready | Compare authenticated sidecar crews and operations with every descriptor |\n| Journal retention is full | Archive only terminal records after the required replay-retention window |\n\nRelated documentation\n• CrewAI connector overview (../README.md)\n• Authentication and admitted crews (../getting-started/authentication-and-admitted-crews.md)\n• Connector host configuration (../../../reference/connector-host-configuration.md)\n• Connector host lifecycle (../../../guides/connector-host-lifecycle.md)\n• Environment variables (../../../reference/environment-variables.md)\n"
  },
  "integrity": {
    "algorithm": "sha256",
    "sourceDigest": "9c764e8dcb1a56fc322482b39509cc8cf62e8b42ab6d7309e3be4303f5370c41"
  }
}
