Welcome to OpenFunction
Documentation GitHub

OpenFunction is a cloud-native open source FaaS (Function as a Service) platform aiming to enable users to focus on their business logic without worrying about the underlying runtime environment and infrastructure. Users only need to submit business-related source code in the form of functions.

OpenFunction Architecture

OpenFunction features

  • Cloud-native, open source

  • Automatically build code into OCI-compliant images

  • Automatically deploys application with dynamic scaling capabilities

  • Provides events framework to make functions event-driven

  • Provides function version control and ingress traffic management capabilities


The core function of OpenFunction is to enable users to develop, run, and manage business applications as execution units of code functions. OpenFunction implements the following custom resource definitions


Function is a resource that is directly defined and controlled by the user. It is a description of the user’s application, i.e. what raw materials (source code) are used to make the product (application image) and how it will ultimately work (workload, runtime).

In OpenFunction, the Function resource controls the coordination of Builder and Serving in an orderly manner according to the configuration, thus implementing the lifecycle management of user functions.

See Function concept for more information.


Builder defines the build work in OpenFunction for generating application images from source code.

Currently, OpenFunction Builder uses Shipwright and Cloud Native Buildpacks to build application images. It controls the build process of application images through Shipwright, including acquiring code, generating image artefacts and publishing images through Cloud Native Buildpacks.

See Builder concept for more information.


The goal of Serving is to run applications in a highly elastic way (dynamic scaling: 0 <-> N).

Currently, OpenFunction Serving supports two kinds of workload runtimes: Knative and OpenFuncAsync. Serving will only work when one of the them is set.

See Serving concept for more information.

If you have already installed the OpenFunction platform,

refer to OpenFunction samples to run a sample function.

Contributions welcome!

We do a Pull Request contributions workflow on GitHub. New users are always welcome!

Find us in GitHub