Skip to main content
Use pyproject.toml to define one or more fal apps in a project. Each entry in [tool.fal.apps] gives an app a stable local name that you can pass to fal run or fal deploy instead of repeating a file path and class reference.
App paths are resolved from the directory that contains pyproject.toml.
fal deploy respects auth from pyproject.toml. fal run currently defaults to public auth and only changes auth mode when you pass --auth.

Package Entry Points

Use python_entry_point when your fal app is importable as a Python package and you want fal to load it by module path:
python_entry_point must use <module>:<symbol> format. It is mutually exclusive with ref. Runtime and deployment settings for entry-point apps are read from pyproject.toml, not from class attributes or function decorator options in the imported package. For packaging requirements, monorepo examples, and custom-container usage, see Package Entry Points.

Multiple Apps

Define multiple apps in the same project by using app-specific tables:
Deploy each app by its key:

App Fields

no_scale is deprecated. Use app_scale_settings instead.

Health Check

Container Image

Use the [tool.fal.apps.<app-name>.image] section to configure a container from pyproject.toml. Build from a Dockerfile:
Or reference an existing image:
Set either dockerfile or image under [tool.fal.apps.<app-name>.image]. Use registries when the Dockerfile pulls a private base image or when image references a private image. Container apps can use ref, python_entry_point, or neither. If both ref and python_entry_point are omitted, fal treats the container as an image-only app and does not use the fal Python app loader. When a container app uses python_entry_point, make sure the Dockerfile or existing image installs the package that contains the referenced module.