Skip to main content

Optional extras

The core autoair package installs only what every mode needs (FastAPI, Pydantic, httpx2, fsspec, Jinja, jedi, Typer, PyYAML, cryptography, Pillow and the Prometheus client). Everything else is an extra. A feature whose extra is missing is either switched off with a log message or reports a clear error that names the extra to install.

Not every extra can be installed next to every Airflow version: mcp does not resolve with Airflow 3.1. See Airflow compatibility for the matrix.

Installing extras​

Extras go in square brackets. Quote the requirement so the shell does not expand the brackets.

# pip
pip install 'autoair[standalone,format,git,mcp,collab,postgres]'

# uv, in a project
uv add 'autoair[standalone,format,git,mcp,collab,postgres]'

# uv, one-off tool run
uvx --from 'autoair[standalone,airflow]' autoair local

# a local wheel
pip install "dist/autoair-0.1.0-py3-none-any.whl[standalone,format]"

Inside an Airflow image, install AutoAir with the extras in the same pip install as your providers, and pin apache-airflow to the image's version so pip does not change it (the demo Dockerfile does pip install "apache-airflow==${AIRFLOW_VERSION}" "<wheel>[standalone,format,git,ai,ai-openai,ai-anthropic,collab,collab-redis,postgres,otel,yaml]" apache-airflow-providers-standard apache-airflow-providers-git).

Which extras for which mode​

ModeRecommended extras
Local modestandalone,airflow (add format for formatted output)
Airflow pluginformat,git,mcp plus ai and a provider extra such as ai-anthropic for AI (add collab, postgres, otel, shell as needed); never airflow (Airflow is already installed) and not standalone (Airflow's API server serves AutoAir). On Airflow 3.1 leave out mcp and run the MCP server separately
Standalone serverstandalone,format,git,mcp,collab plus postgres for several replicas and ai,ai-<provider> for AI
Separate AI servicestandalone,mcp,ai plus the ai-* provider extras you use (the main server then needs no ai extra)

Reference​

Runtime and server​

ExtraInstallsEnablesTurned on by
airflowapache-airflow>=3.0,<4, apache-airflow-providers-standardA standard operator palette (the operators and sensors of apache-airflow-providers-standard, such as BashOperator, PythonOperator and EmptyOperator) and the DagBag import check when AutoAir runs without an Airflow installation, mainly for autoair localInstalled packages are picked up automatically. In local mode import_check_on_deploy is turned on only when Airflow is importable.
standaloneuvicorn[standard]The HTTP server behind autoair serve, autoair local, autoair mcp-serve --http and autoair ai-serve. Without it these commands exit with code 1 and a message naming the extra to install (autoair local also suggests airflow while Airflow is not installed).Running one of those commands. Not needed in plugin mode.
formatruffruff format of generated DAG files and live ruff lint of Python task code in the editorAutomatic when ruff is found on PATH or importable. Tune with codegen.line_length, codegen.format_timeout, editor.python_lint_select. Without ruff, generated code is emitted unformatted.
yamlpyyamlYAML configuration files (AUTOAIR_CONFIG_FILE=/etc/autoair/autoair.yaml)PyYAML is also a core dependency; the extra is a stable install name. A missing PyYAML is reported as "YAML configuration files need PyYAML: pip install 'autoair[yaml]'".
otelopentelemetry-instrumentation-fastapi, opentelemetry-sdk, opentelemetry-exporter-otlp-proto-httpOpenTelemetry tracing of the APIAUTOAIR_OTEL_ENABLED=true. Exporter settings use the standard OTEL_* variables (OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_SERVICE_NAME); inside Airflow an existing tracer provider is reused. server.otel_excluded_urls skips health, ready and metrics.

Deploy targets and state​

ExtraInstallsEnablesTurned on by
gitnothingStable install name for the Git deploy targetAUTOAIR_STORAGE__MODE=git, AUTOAIR_STORAGE__GIT__PROVIDER, AUTOAIR_STORAGE__GIT__REPO and credentials (AUTOAIR_STORAGE__GIT__CONN_ID or AUTOAIR_STORAGE__GIT__TOKEN); every option is listed under storage.git. The Git target talks to GitHub, GitLab, Bitbucket and Azure DevOps through their REST APIs; storage.git.provider=local (any remote) and gitea (Gitea or Forgejo) run the git command-line tool, which must be on PATH.
sqlitesqlalchemy (1.4.49 or newer; Airflow 3.0 installs 1.4)AutoAir state (saved templates, the audit trail, reviews and deploy proposals, the deploy target chosen in the UI, custom icons, AI memory, the AI audit log, AI knowledge overrides, per-user AI model settings, collaboration room snapshots, users seen and replica heartbeats) in one SQLite fileAUTOAIR_DATABASE__BACKEND=sqlite, optionally AUTOAIR_DATABASE__URL=sqlite:////var/lib/autoair/autoair.db (default <state>/autoair.db). Suits several workers on one host.
postgressqlalchemy, psycopg[binary]AutoAir state in PostgreSQL, shared by every replicaAUTOAIR_DATABASE__BACKEND=postgresql, AUTOAIR_DATABASE__URL=postgresql+psycopg://autoair@db:5432/autoair, AUTOAIR_DATABASE__PASSWORD. Missing driver: "cannot load the postgresql driver (...): pip install 'autoair[postgres]'". On Airflow 3.0 (SQLAlchemy 1.4) the driver is psycopg2: see PostgreSQL on Airflow 3.0.
note

The git extra is empty: every Git provider uses either the host's REST API (over httpx2, a core dependency) or the git CLI, so AutoAir needs no Python Git library. The extra only keeps autoair[git] (and autoair[all]) installable under a stable name; a Git deploy target works without it as long as the git binary is installed where the local or gitea provider runs. (Airflow's GitDagBundle needs apache-airflow-providers-git on the Airflow side, which brings its own dependencies.)

Object storage targets (AUTOAIR_STORAGE__MODE=object) use fsspec, which is a core dependency; install the fsspec implementation for your store yourself (s3fs, gcsfs, adlfs). See Object storage and Database.

Collaboration​

ExtraInstallsEnablesTurned on by
collabpycrdt, pycrdt-websocketLive co-editing (Yjs over WebSockets at /collab/<dag_id>)AUTOAIR_FEATURES__COLLAB=true (default). Without the packages the /collab WebSocket endpoint is not mounted, so co-editing is unavailable. Several standalone replicas also need AUTOAIR_COLLAB_SECRET (or a shared database) and collab.sync.
collab-redisredisFan-out of collaboration rooms through Redis pub/subAUTOAIR_COLLAB__SYNC=redis and AUTOAIR_COLLAB__REDIS_URL=redis://redis:6379/0. collab.sync=auto (default) picks Redis when collab.redis_url is set.

Agents and AI​

ExtraInstallsEnablesTurned on by
mcpfastmcp, mcpThe MCP endpoint at /mcp (plugin: /autoair/mcp/), autoair mcp (stdio) and autoair mcp-serveAUTOAIR_FEATURES__MCP=true (default). Without the packages the server logs "MCP endpoint disabled: ... (install autoair[mcp])", /api/meta reports mcp_unavailable_reason and the admin Features tab shows mcp as Not installed. Writes are controlled by ai.mcp.allow_writes. Cannot be installed next to Airflow 3.1 (why).
aipydantic-ai-slimThe AI runtime (pydantic-ai, as used by Airflow's common.ai provider; compatible with it in one environment). Without it AI is off: /api/meta reports ai_unavailable_reason, the admin panel shows the hint, only GET /api/ai/status answers, the AI MCP tools are hidden and the admin Features tab shows ai as Not installed and autoair ai-serve exits with the extra to install.Install it with a provider extra, then configure AUTOAIR_AI__PROVIDER, AUTOAIR_AI__MODEL, AUTOAIR_AI__API_KEY (or AUTOAIR_AI__LLM_CONN_ID, a pydanticai connection).
ai-anthropicpydantic-ai-slim[anthropic] (the anthropic SDK)ClaudeAUTOAIR_AI__PROVIDER=anthropic
ai-openaipydantic-ai-slim[openai] (the openai SDK)OpenAI, Azure OpenAI and OpenAI-compatible servers (vLLM, LM Studio, LiteLLM)AUTOAIR_AI__PROVIDER=openai / azure; AUTOAIR_AI__BASE_URL for compatible servers
ai-googlepydantic-ai-slim[google] (google-genai)Gemini and Vertex AIAUTOAIR_AI__PROVIDER=gemini / google-cloud
ai-ollamapydantic-ai-slim[openai]Ollama (its OpenAI-compatible API)AUTOAIR_AI__PROVIDER=ollama, AUTOAIR_AI__BASE_URL=http://ollama:11434
ai-bedrock, ai-groq, ai-mistral, ai-coherepydantic-ai-slim[bedrock] / [groq] / [mistral] / [cohere]Amazon Bedrock, Groq, Mistral, CohereAUTOAIR_AI__PROVIDER=bedrock / groq / mistral / cohere and AUTOAIR_AI__MODEL
ai-allevery provider extra aboveAll providers
ai-reranksentence-transformers (pulls PyTorch; large)Local cross-encoder reranking for AI retrievalAUTOAIR_AI__RETRIEVAL__RERANKER=cross_encoder, optional AUTOAIR_AI__RETRIEVAL__RERANK_MODEL. Without it the reranker is skipped with a warning.
ai-guardrailsllm-guardThe LLM Guard input scanners as an extra guardrailAUTOAIR_AI__GUARDRAILS__EXTERNAL='["llm_guard"]'. NeMo Guardrails (nemo:<config dir>) and Guardrails AI (guardrails_ai) need nemoguardrails or guardrails-ai installed separately.

See AI providers, Guardrails, AI service and MCP.

Documentation knowledge base​

The knowledge base works without these extras on its default local store (SQLite, no dependencies).

ExtraInstallsEnablesTurned on by
kb-pgvectorsqlalchemy (1.4.49 or newer), psycopg[binary] (psycopg2 on SQLAlchemy 1.4)The pgvector knowledge-base store in PostgreSQLAUTOAIR_KB__STORE=pgvector, optionally AUTOAIR_KB__PGVECTOR__URL (default: AutoAir's own database when database.backend=postgresql)
kb-elasticsearchnothingStable install name for the elasticsearch store, which uses the REST API over httpx2AUTOAIR_KB__STORE=elasticsearch, AUTOAIR_KB__ELASTICSEARCH__URL

See Knowledge base.

Editors​

ExtraInstallsEnablesTurned on by
shellshellcheck-py (the ShellCheck binary)ShellCheck diagnostics for bash_command, @task.bash and .sh script files, in the editor and as validation warningsAutomatic when installed. editor.shellcheck_in_validation, editor.shellcheck_exclude, editor.shellcheck_exclude_extra, editor.shellcheck_timeout.
lsppython-lsp-server, python-lsp-ruffIDE-grade Python IntelliSense through pylspAUTOAIR_FEATURES__IDE_LANGUAGE_SERVER=true and AUTOAIR_LSP__PYTHON_SERVER=pylsp
lsp-pyrightbasedpyright (bundles Node through nodejs-wheel)IDE-grade Python IntelliSense through basedpyrightAUTOAIR_FEATURES__IDE_LANGUAGE_SERVER=true (lsp.python_server defaults to basedpyright)

Without a language server the editors keep the built-in jedi completion, hover and signature help. Bash IntelliSense through a language server needs npm i -g bash-language-server (lsp.bash_command); without it shell fields keep the built-in completion and ShellCheck. Limits: lsp.max_sessions (16), lsp.max_sessions_per_user (4), lsp.idle_timeout (600 s), lsp.start_timeout (30 s), lsp.memory_limit_mb (2048), lsp.cpu_limit_seconds (3600) and lsp.max_message_bytes (8 MiB); see lsp in the configuration reference.

Astronomer Blueprint​

ExtraInstallsEnablesTurned on by
blueprintairflow-blueprint>=0.3,<1Config schemas, task previews and config validation of Blueprint steps (templates are imported in a child process). Airflow needs the package too, to parse the generated DAGsfeatures.blueprints (default on) and templates from entry points, blueprints.template_dirs or blueprints.modules

all​

autoair[all] is a shortcut for standalone,format,git,ai,ai-anthropic,ai-openai,otel,collab,shell,yaml: everything that installs next to every supported Airflow. It does not include mcp (it cannot be installed with Airflow 3.1), airflow, sqlite, postgres, collab-redis, kb-pgvector, kb-elasticsearch, the other ai-* extras (ai-google, ai-bedrock, ..., ai-rerank, ai-guardrails), lsp or lsp-pyright; add those explicitly.

pip install 'autoair[all,mcp,postgres]' # Airflow 3.0, 3.2 and newer, or standalone
pip install 'autoair[all,postgres]' # Airflow 3.1

Checking what is active​

  • autoair config show --changed prints the settings that differ from the defaults and where each came from.
  • The admin panel shows the AutoAir version, the state backend and its schema version, and the operator catalog statistics. See Admin panel.
  • Server logs name each optional feature that was switched off because its extra is missing.