2.3.2

AgentChatAppEnvironment

Package: flyte.ai.chat

An :class:~flyte.app.AppEnvironment that spins up a FastAPI chat interface backed by any object satisfying the :class:Agent protocol.

Parameters

agent: Any object implementing the :class:Agent protocol. title: Title displayed in the UI header and browser tab. Defaults to the environment name. subtitle: Optional short subtitle displayed below the title in the header area. Use it to explain what the agent does. prompt_nudges: Optional list of prompt-nudge cards shown before the first message. Each entry is a dict with "label" (short card title) and "prompt" (the query text sent when clicked). theme: Optional :class:CustomTheme instance that controls the UI accent colors via human-readable attributes. When provided, the theme CSS is generated automatically and prepended to any custom_css. custom_css: Optional CSS string appended after the default styles (and after theme CSS, if a theme is provided). Use this for fine-grained overrides beyond what :class:CustomTheme exposes. logo_url: Optional URL to an image displayed to the left of the title in the header bar. When None (default), no logo is shown. additional_buttons: Optional list of action-button dicts rendered to the right of the Send button. Each dict must have "button_text" and "button_url" keys. The first entry is displayed as a prominent primary button; any extra entries appear in a drop-up menu accessed via a chevron. passthrough_auth: When True, the FastAPI app initializes flyte.init_passthrough at startup and adds FastAPIPassthroughAuthMiddleware so incoming Authorization / cookie headers are forwarded to Flyte remote calls. Enable this when using CodeModeAgent with @env.task tools — nested task execution needs caller credentials (same pattern as FlyteWebhookAppEnvironment). passthrough_auth_excluded_paths: Paths skipped by passthrough middleware. When omitted, defaults include the HTML shell (/), /api/tools, /api/nudges, health, and docs routes so the sidebar and nudges load without Authorization headers; /api/chat still requires credentials. Only used when passthrough_auth is True. task_entrypoint: Optional Flyte task used as the chat handler entrypoint.

When set, ``/api/chat`` calls the task (via ``task_entrypoint.aio``)
instead of calling ``agent.run`` directly. This is useful for agents
whose tool calls must run under a parent task context (e.g. a
``CodeModeAgent`` using durable ``@env.task`` tools). When streaming
chat (``stream: true``), progress lines use :meth:`~flyte.remote.Run.watch`
on the returned run (first ``RUNNING`` → ``generating_code``, next →
``executing``). Fine-grained codemode phases still require
``agent.run`` in the web process, or future worker-side signaling.

The entrypoint may accept either:

- ``(message: str, history: list[dict[str, str]])``; or
- ``(message: str)``.

The return value may be an :class:`~flyte.ai.agents.protocol.AgentResult`,
a dict with keys like ``summary``/``charts``/``code``, or a plain string
(treated as ``summary``).

Parameters

class AgentChatAppEnvironment(
    name: str,
    depends_on: List[Environment],
    pod_template: Optional[Union[str, PodTemplate]],
    description: Optional[str],
    secrets: Optional[SecretRequest],
    env_vars: Optional[Dict[str, str]],
    resources: Optional[Resources],
    interruptible: bool,
    image: Union[str, Image, Literal['auto'], None],
    include: Tuple[str, ...],
    port: int | Port,
    args: *args,
    command: Optional[Union[List[str], str]],
    requires_auth: bool,
    scaling: Scaling,
    domain: Domain | None,
    links: List[Link],
    parameters: List[Parameter],
    cluster_pool: str,
    timeouts: Timeouts,
    type: str,
    agent: Any,
    title: str | None,
    subtitle: str | None,
    prompt_nudges: list[dict[str, str]],
    theme: CustomTheme | None,
    custom_css: str,
    logo_url: str | None,
    additional_buttons: list[dict[str, str]],
    passthrough_auth: bool,
    passthrough_auth_excluded_paths: frozenset[str] | None,
    task_entrypoint: Any | None,
    _caller_frame: inspect.FrameInfo | None,
)
Parameter Type Description
name str
depends_on List[Environment]
pod_template Optional[Union[str, PodTemplate]]
description Optional[str]
secrets Optional[SecretRequest]
env_vars Optional[Dict[str, str]]
resources Optional[Resources]
interruptible bool
image Union[str, Image, Literal['auto'], None]
include Tuple[str, ...]
port int | Port
args *args
command Optional[Union[List[str], str]]
requires_auth bool
scaling Scaling
domain Domain | None
links List[Link]
parameters List[Parameter]
cluster_pool str
timeouts Timeouts
type str
agent Any
title str | None
subtitle str | None
prompt_nudges list[dict[str, str]]
theme CustomTheme | None
custom_css str
logo_url str | None
additional_buttons list[dict[str, str]]
passthrough_auth bool
passthrough_auth_excluded_paths frozenset[str] | None
task_entrypoint Any | None
_caller_frame inspect.FrameInfo | None

Properties

Property Type Description
endpoint str

Methods

Method Description
add_dependency() Add one or more environment dependencies so they are deployed together.
build_fastapi_app() Construct the FastAPI application (routes, HTML shell, optional auth).
clone_with()
container_args()
container_cmd()
container_command()
get_port()
on_shutdown() Decorator to define the shutdown function for the app environment.
on_startup() Decorator to define the startup function for the app environment.
server() Decorator to define the server function for the app environment.

add_dependency()

def add_dependency(
    env: Environment,
)

Add one or more environment dependencies so they are deployed together.

When you deploy this environment, any environments added via add_dependency will also be deployed. This is an alternative to passing depends_on=[...] at construction time, useful when the dependency is defined after the environment is created.

Duplicate dependencies are silently ignored. An environment cannot depend on itself.

Parameter Type Description
env Environment One or more Environment instances to add as dependencies.

build_fastapi_app()

def build_fastapi_app()

Construct the FastAPI application (routes, HTML shell, optional auth).

Useful for tests and advanced mounting; the deployed server uses this via :meth:_fastapi_server.

clone_with()

def clone_with(
    name: str,
    image: Optional[Union[str, Image, Literal['auto']]],
    resources: Optional[Resources],
    env_vars: Optional[dict[str, str]],
    secrets: Optional[SecretRequest],
    depends_on: Optional[List[Environment]],
    description: Optional[str],
    interruptible: Optional[bool],
    kwargs: **kwargs,
) -> AppEnvironment
Parameter Type Description
name str
image Optional[Union[str, Image, Literal['auto']]]
resources Optional[Resources]
env_vars Optional[dict[str, str]]
secrets Optional[SecretRequest]
depends_on Optional[List[Environment]]
description Optional[str]
interruptible Optional[bool]
kwargs **kwargs

container_args()

def container_args(
    serialize_context: SerializationContext,
) -> List[str]
Parameter Type Description
serialize_context SerializationContext

container_cmd()

def container_cmd(
    serialize_context: SerializationContext,
    parameter_overrides: list[Parameter] | None,
) -> List[str]
Parameter Type Description
serialize_context SerializationContext
parameter_overrides list[Parameter] | None

container_command()

def container_command(
    serialization_context: SerializationContext,
) -> list[str]
Parameter Type Description
serialization_context SerializationContext

get_port()

def get_port()

on_shutdown()

def on_shutdown(
    fn: Callable[..., None],
) -> Callable[..., None]

Decorator to define the shutdown function for the app environment.

This function is called after the server function is called.

This decorated function can be a sync or async function, and accepts input parameters based on the Parameters defined in the AppEnvironment definition.

Parameter Type Description
fn Callable[..., None]

on_startup()

def on_startup(
    fn: Callable[..., None],
) -> Callable[..., None]

Decorator to define the startup function for the app environment.

This function is called before the server function is called.

The decorated function can be a sync or async function, and accepts input parameters based on the Parameters defined in the AppEnvironment definition.

Parameter Type Description
fn Callable[..., None]

server()

def server(
    fn: Callable[..., None],
) -> Callable[..., None]

Decorator to define the server function for the app environment.

This decorated function can be a sync or async function, and accepts input parameters based on the Parameters defined in the AppEnvironment definition.

Parameter Type Description
fn Callable[..., None]