We’re excited to announce enhancements to Fn CLI that bring more OCI capabilities into the developer CLI experience, simplify common commands, and streamline deployment automation. Developers using OCI Functions have historically had to move between Fn CLI, OCI CLI, raw annotations, and lower-level request payloads to manage production workflows.
With the latest Fn CLI enhancements, developers can stay in Fn CLI for more of the OCI Functions lifecycle, from initialization and deployment through configuration, invocation, and automation.
The update focuses on three areas:
- More production capabilities directly in Fn CLI
- Simpler command options for common configuration
- Better support for repeatable CI/CD and automation workflows
Operate more of the Functions lifecycle from Fn CLI
Fn CLI now supports more of the capabilities needed to configure and operate OCI Functions in production.
Configure provisioned concurrency
Provisioned concurrency can now be configured directly when creating or updating a function:
fn create function <app> <fn> <image> \
--provisioned-concurrency constant:5
To disable it later:
fn update function <app> <fn> \
--provisioned-concurrency none
Provisioned concurrency can also be configured during initialization and persisted in func.yaml:
fn init --runtime java hello-java \
--provisioned-concurrency constant:5
Configure long-running functions
Detached execution can now be configured with readable durations and concise destination formats.
fn create function <app> <fn> <image> \
--detached-timeout 20m \
--on-success stream:<stream_ocid> \
--on-failure notifications:<topic_ocid>
Destinations can be removed explicitly:
fn update function <app> <fn> \
--clear-on-success \
--clear-on-failure
Fn CLI also adds more invocation controls, including detached invocation, invocation intent, dry-run validation, and call ID display.
Discover and deploy Pre-Built Functions
You can now discover and create Pre-Built Functions directly from Fn CLI:
fn list pbfs --search "Document"
fn create function <app> <fn> \
--pbf <pbf_listing_ocid>
Fn CLI also exposes additional OCI-specific configuration across application and function operations, including tracing, image policy configuration, security attributes, and network security groups.
Replace lower-level configuration with simpler command options
Several workflows that previously required annotations or request payloads can now be expressed directly through Fn CLI options.
Configure application subnets
Previously, configuring application networking could require raw annotation JSON. You can now specify subnets directly:
fn create app <app> \
--subnet-id <subnet_ocid>
For multiple subnets, repeat the option:
fn create app <app> \
--subnet-id <first_subnet_ocid> \
--subnet-id <second_subnet_ocid>
Manage tags directly
Fn CLI now includes dedicated options for managing free-form and defined tags, including: --tag --defined-tag --remove-tag --remove-defined-tag --clear-tags --clear-freeform-tags --clear-defined-tags
For example:
fn update function <app> <fn> \
--tag Team=Payments \
--remove-tag Department \
--clear-defined-tags
These options make common configuration changes easier to discover and automate without constructing lower-level payloads.
Build more reliable automation
Fn CLI now provides additional controls designed for CI/CD pipelines and repeatable deployment workflows.
Supply parameters using JSON
The new --from-json option lets you provide parameters inline or from a file:
fn create app my-app \
--from-json file:///absolute/path/app-create.json
fn create function my-app my-fn \
--from-json file:///absolute/path/fn-create.json
This is useful for deployment pipelines where inputs are stored as reusable, version-controlled configuration.
Control resource operations
OCI-style request and lifecycle controls are also available across application and function operations:
--if-match for optimistic concurrency--wait-for-state to wait for a target lifecycle state--max-wait-seconds to limit total wait time--wait-interval-seconds to control polling frequency
These controls help automated workflows handle resource state changes and concurrent updates more predictably.
One CLI across more of the Functions lifecycle
Together, these enhancements make Fn CLI a more complete interface for developing and operating OCI Functions.
Developers can now use Fn CLI to:
- Initialize functions with OCI deployment settings.
- Create and update applications and functions.
- Configure production features such as provisioned concurrency and detached execution.
- Discover and deploy Pre-Built Functions.
- Manage networking, tags, security, and request behaviour.
- Invoke functions with detached, intent, and dry-run controls.
- Build repeatable, JSON-driven CI/CD workflows.
Fn CLI remains compatible with local Fn server workflows. OCI-specific options are identified when they are used against a local Fn server.
Upgrade Fn CLI
Upgrade to the latest Fn CLI release to use these capabilities in your OCI Functions workflows. Start by moving one production workflow – such as configuring provisioned concurrency, invoking functions in detached mode, configuring subnets, or deploying with JSON -into Fn CLI. Then explore the other enhancements to simplify more of your development and operations lifecycle.

