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:

  1. More production capabilities directly in Fn CLI
  2. Simpler command options for common configuration
  3. 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.

Resources