R API
The MLflow R API allows you to use MLflow Tracking, Projects and Models.
You can use the R API to install MLflow, start the user interface, create and list experiments, save models, run projects and serve models among many other functions available in the R API.
Table of Contents
install_mlflow
mlflow_client
mlflow_create_experiment
mlflow_delete_experiment
mlflow_delete_run
mlflow_download_artifacts
mlflow_end_run
mlflow_get_experiment
mlflow_get_metric_history
mlflow_get_run
mlflow_get_tracking_uri
mlflow_id
mlflow_list_artifacts
mlflow_list_experiments
mlflow_list_run_infos
mlflow_load_flavor
mlflow_load_model
mlflow_log_artifact
mlflow_log_batch
mlflow_log_metric
mlflow_log_model
mlflow_log_param
mlflow_param
mlflow_predict
mlflow_rename_experiment
mlflow_restore_experiment
mlflow_restore_run
mlflow_rfunc_serve
mlflow_run
mlflow_save_model.crate
mlflow_search_runs
mlflow_server
mlflow_set_experiment
mlflow_set_tag
mlflow_set_tracking_uri
mlflow_source
mlflow_start_run
mlflow_ui
install_mlflow
Install MLflow
Installs auxiliary dependencies of MLflow (e.g. the MLflow CLI). As a one-time setup step, you must run install_mlflow() to install these dependencies before calling other MLflow APIs.
install_mlflow()
Details
install_mlflow() requires Python and Conda to be installed. See https://www.python.org/getit/ and https://docs.conda.io/projects/conda/en/latest/user-guide/install/ .
mlflow_client
Initialize an MLflow Client
Initializes and returns an MLflow client that communicates with the tracking server or store at the specified URI.
mlflow_client(tracking_uri = NULL)
mlflow_create_experiment
Create Experiment
Creates an MLflow experiment and returns its id.
mlflow_create_experiment(name, artifact_location = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
name |
The name of the experiment to create. |
artifact_location |
Location where all artifacts for this experiment are stored. If not provided, the remote server will select an appropriate default. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_delete_experiment
Delete Experiment
Marks an experiment and associated runs, params, metrics, etc. for deletion. If the experiment uses FileStore, artifacts associated with experiment are also deleted.
mlflow_delete_experiment(experiment_id, client = NULL)
Arguments
Argument | Description |
---|---|
experiment_id |
ID of the associated experiment. This field is required. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_delete_run
Delete a Run
Deletes the run with the specified ID.
mlflow_delete_run(run_id, client = NULL)
Arguments
Argument | Description |
---|---|
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_download_artifacts
Download Artifacts
Download an artifact file or directory from a run to a local directory if applicable, and return a local path for it.
mlflow_download_artifacts(path, run_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
path |
Relative source path to the desired artifact. |
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_end_run
End a Run
Terminates a run. Attempts to end the current active run if run_id
is not specified.
mlflow_end_run(status = c("FINISHED", "FAILED", "KILLED"),
end_time = NULL, run_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
status |
Updated status of the run. Defaults
to FINISHED . Can also be set to
“FAILED” or “KILLED”. |
end_time |
Unix timestamp of when the run ended in milliseconds. |
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_get_experiment
Get Experiment
Gets metadata for an experiment and a list of runs for the experiment.
Attempts to obtain the active experiment if both experiment_id
and
name
are unspecified.
mlflow_get_experiment(experiment_id = NULL, name = NULL,
client = NULL)
Arguments
Argument | Description |
---|---|
experiment_id |
Identifer to get an experiment. |
name |
The experiment name. Only one of
name or experiment_id should
be specified. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_get_metric_history
Get Metric History
Get a list of all values for the specified metric for a given run.
mlflow_get_metric_history(metric_key, run_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
metric_key |
Name of the metric. |
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_get_run
Get Run
Gets metadata, params, tags, and metrics for a run. Returns a single value for each metric key: the most recently logged metric value at the largest step.
mlflow_get_run(run_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_get_tracking_uri
Get Remote Tracking URI
Gets the remote tracking URI.
mlflow_get_tracking_uri()
mlflow_id
Get Run or Experiment ID
Extracts the ID of the run or experiment.
mlflow_id(object)
list(list("mlflow_id"), list("mlflow_run"))(object)
list(list("mlflow_id"), list("mlflow_experiment"))(object)
mlflow_list_artifacts
List Artifacts
Gets a list of artifacts.
mlflow_list_artifacts(path = NULL, run_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
path |
The run’s relative artifact path to list from. If not specified, it is set to the root artifact path |
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_list_experiments
List Experiments
Gets a list of all experiments.
mlflow_list_experiments(view_type = c("ACTIVE_ONLY", "DELETED_ONLY",
"ALL"), client = NULL)
Arguments
Argument | Description |
---|---|
view_type |
Qualifier for type of experiments to
be returned. Defaults to
ACTIVE_ONLY . |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_list_run_infos
List Run Infos
Returns a tibble whose columns contain run metadata (run ID, etc) for all runs under the specified experiment.
mlflow_list_run_infos(run_view_type = c("ACTIVE_ONLY", "DELETED_ONLY",
"ALL"), experiment_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
run_view_type |
Run view type. |
experiment_id |
Experiment ID. Attempts to use the active experiment if not specified. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_load_flavor
Load MLflow Model Flavor
Loads an MLflow model using a specific flavor. This method is called internally by mlflow_load_model , but is exposed for package authors to extend the supported MLflow models. See https://mlflow.org/docs/latest/models.html#storage-format for more info on MLflow model flavors.
mlflow_load_flavor(flavor, model_path)
Arguments
Argument | Description |
---|---|
flavor |
An MLflow flavor object loaded by mlflow_load_model , with class loaded from the flavor field in an MLmodel file. |
model_path |
The path to the MLflow model wrapped in the correct class. |
mlflow_load_model
Load MLflow Model
Loads an MLflow model. MLflow models can have multiple model flavors. Not all flavors / models can be loaded in R. This method by default searches for a flavor supported by R/MLflow.
mlflow_load_model(model_uri, flavor = NULL, client = mlflow_client())
Arguments
Argument | Description |
---|---|
model_uri |
The location, in URI format, of the MLflow model. |
flavor |
Optional flavor specification (string). Can be used to load a particular flavor in case there are multiple flavors available. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
Details
The URI scheme must be supported by MLflow - i.e. there has to be an MLflow artifact repository corresponding to the scheme of the URI. The content is expected to point to a directory containing MLmodel. The following are examples of valid model uris:
file:///absolute/path/to/local/model
file:relative/path/to/local/model
s3://my_bucket/path/to/model
runs:/<mlflow_run_id>/run-relative/path/to/model
For more information about supported URI schemes, see the Artifacts Documentation at https://www.mlflow.org/docs/latest/tracking.html#supported-artifact-stores.
mlflow_log_artifact
Log Artifact
Logs a specific file or directory as an artifact for a run.
mlflow_log_artifact(path, artifact_path = NULL, run_id = NULL,
client = NULL)
Arguments
Argument | Description |
---|---|
path |
The file or directory to log as an artifact. |
artifact_path |
Destination path within the run’s artifact URI. |
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
Details
When logging to Amazon S3, ensure that you have the s3:PutObject, s3:GetObject, s3:ListBucket, and s3:GetBucketLocation permissions on your bucket.
Additionally, at least the AWS_ACCESS_KEY_ID
and
AWS_SECRET_ACCESS_KEY
environment variables must be set to the
corresponding key and secrets provided by Amazon IAM.
mlflow_log_batch
Log Batch
Log a batch of metrics, params, and/or tags for a run. The server will respond with an error (non-200 status code) if any data failed to be persisted. In case of error (due to internal server error or an invalid request), partial data may be written.
mlflow_log_batch(metrics = NULL, params = NULL, tags = NULL,
run_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
metrics |
A dataframe of metrics to log, containing the following columns: “key”, “value”, “step”, “timestamp”. This dataframe cannot contain any missing (‘NA’) entries. |
params |
A dataframe of params to log, containing the following columns: “key”, “value”. This dataframe cannot contain any missing (‘NA’) entries. |
tags |
A dataframe of tags to log, containing the following columns: “key”, “value”. This dataframe cannot contain any missing (‘NA’) entries. |
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_log_metric
Log Metric
Logs a metric for a run. Metrics key-value pair that records a single float measure. During a single execution of a run, a particular metric can be logged several times. The MLflow Backend keeps track of historical metric values along two axes: timestamp and step.
mlflow_log_metric(key, value, timestamp = NULL, step = NULL,
run_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
key |
Name of the metric. |
value |
Float value for the metric being logged. |
timestamp |
Timestamp at which to log the metric. Timestamp is rounded to the nearest integer. If unspecified, the number of milliseconds since the Unix epoch is used. |
step |
Step at which to log the metric. Step is rounded to the nearest integer. If unspecified, the default value of zero is used. |
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_log_model
Log Model
Logs a model for this run. Similar to mlflow_save_model()
but stores
model as an artifact within the active run.
mlflow_log_model(model, artifact_path, ...)
Arguments
Argument | Description |
---|---|
model |
The model that will perform a prediction. |
artifact_path |
Destination path where this MLflow compatible model will be saved. |
... |
Optional additional arguments passed
to mlflow_save_model() when
persisting the model. For example,
conda_env = /path/to/conda.yaml
may be passed to specify a conda
dependencies file for flavors
(e.g. keras) that support conda
environments. |
mlflow_log_param
Log Parameter
Logs a parameter for a run. Examples are params and hyperparams used for ML training, or constant dates and values used in an ETL pipeline. A param is a STRING key-value pair. For a run, a single parameter is allowed to be logged only once.
mlflow_log_param(key, value, run_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
key |
Name of the parameter. |
value |
String value of the parameter. |
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_param
Read Command-Line Parameter
Reads a command-line parameter passed to an MLflow project MLflow allows you to define named, typed input parameters to your R scripts via the mlflow_param API. This is useful for experimentation, e.g. tracking multiple invocations of the same script with different parameters.
mlflow_param(name, default = NULL, type = NULL, description = NULL)
Arguments
Argument | Description |
---|---|
name |
The name of the parameter. |
default |
The default value of the parameter. |
type |
Type of this parameter. Required if
default is not set. If
specified, must be one of “numeric”,
“integer”, or “string”. |
description |
Optional description for the parameter. |
Examples
# This parametrized script trains a GBM model on the Iris dataset and can be run as an MLflow
# project. You can run this script (assuming it's saved at /some/directory/params_example.R)
# with custom parameters via:
# mlflow_run(entry_point = "params_example.R", uri = "/some/directory",
# parameters = list(num_trees = 200, learning_rate = 0.1))
install.packages("gbm")
library(mlflow)
library(gbm)
# define and read input parameters
num_trees <- mlflow_param(name = "num_trees", default = 200, type = "integer")
lr <- mlflow_param(name = "learning_rate", default = 0.1, type = "numeric")
# use params to fit a model
ir.adaboost <- gbm(Species ~., data=iris, n.trees=num_trees, shrinkage=lr)
mlflow_predict
Generate Prediction with MLflow Model
Performs prediction over a model loaded using mlflow_load_model()
,
to be used by package authors to extend the supported MLflow models.
mlflow_predict(model, data, ...)
mlflow_rename_experiment
Rename Experiment
Renames an experiment.
mlflow_rename_experiment(new_name, experiment_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
new_name |
The experiment’s name will be changed to this. The new name must be unique. |
experiment_id |
ID of the associated experiment. This field is required. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_restore_experiment
Restore Experiment
Restores an experiment marked for deletion. This also restores associated metadata, runs, metrics, and params. If experiment uses FileStore, underlying artifacts associated with experiment are also restored.
mlflow_restore_experiment(experiment_id, client = NULL)
Arguments
Argument | Description |
---|---|
experiment_id |
ID of the associated experiment. This field is required. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_restore_run
Restore a Run
Restores the run with the specified ID.
mlflow_restore_run(run_id, client = NULL)
Arguments
Argument | Description |
---|---|
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_rfunc_serve
Serve an RFunc MLflow Model
Serves an RFunc MLflow model as a local web API.
mlflow_rfunc_serve(model_uri, host = "127.0.0.1", port = 8090,
daemonized = FALSE, browse = !daemonized, ...)
Arguments
Argument | Description |
---|---|
model_uri |
The location, in URI format, of the MLflow model. |
host |
Address to use to serve model, as a string. |
port |
Port to use to serve model, as numeric. |
daemonized |
Makes httpuv server daemonized
so R interactive sessions are not
blocked to handle requests. To
terminate a daemonized server, call
httpuv::stopDaemonizedServer()
with the handle returned from this
call. |
browse |
Launch browser with serving landing page? |
... |
Optional arguments passed to
mlflow_predict() . |
Details
The URI scheme must be supported by MLflow - i.e. there has to be an MLflow artifact repository corresponding to the scheme of the URI. The content is expected to point to a directory containing MLmodel. The following are examples of valid model uris:
file:///absolute/path/to/local/model
file:relative/path/to/local/model
s3://my_bucket/path/to/model
runs:/<mlflow_run_id>/run-relative/path/to/model
For more information about supported URI schemes, see the Artifacts Documentation at https://www.mlflow.org/docs/latest/tracking.html#supported-artifact-stores.
mlflow_run
Run an MLflow Project
Wrapper for the mlflow run
CLI command. See
https://www.mlflow.org/docs/latest/cli.html#run for more info.
mlflow_run(uri = ".", entry_point = NULL, version = NULL,
parameters = NULL, experiment_id = NULL, experiment_name = NULL,
backend = NULL, backend_config = NULL, no_conda = FALSE,
storage_dir = NULL)
Arguments
Argument | Description |
---|---|
uri |
A directory containing modeling scripts, defaults to the current directory. |
entry_point |
Entry point within project, defaults
to main if not specified. |
version |
Version of the project to run, as a Git commit reference for Git projects. |
parameters |
A list of parameters. |
experiment_id |
ID of the experiment under which to launch the run. |
experiment_name |
Name of the experiment under which to launch the run. |
backend |
Execution backend to use for run. |
backend_config |
Path to JSON file which will be passed to the backend. For the Databricks backend, it should describe the cluster to use when launching a run on Databricks. |
no_conda |
If specified, assume that MLflow is running within a Conda environment with the necessary dependencies for the current project instead of attempting to create a new Conda environment. Only valid if running locally. |
storage_dir |
Valid only when backend is
local. MLflow downloads artifacts
from distributed URIs passed to
parameters of type path to
subdirectories of storage_dir . |
Examples
# This parametrized script trains a GBM model on the Iris dataset and can be run as an MLflow
# project. You can run this script (assuming it's saved at /some/directory/params_example.R)
# with custom parameters via:
# mlflow_run(entry_point = "params_example.R", uri = "/some/directory",
# parameters = list(num_trees = 200, learning_rate = 0.1))
install.packages("gbm")
library(mlflow)
library(gbm)
# define and read input parameters
num_trees <- mlflow_param(name = "num_trees", default = 200, type = "integer")
lr <- mlflow_param(name = "learning_rate", default = 0.1, type = "numeric")
# use params to fit a model
ir.adaboost <- gbm(Species ~., data=iris, n.trees=num_trees, shrinkage=lr)
mlflow_save_model.crate
Save Model for MLflow
Saves model in MLflow format that can later be used for prediction and serving. This method is generic to allow package authors to save custom model types.
list(list("mlflow_save_model"), list("crate"))(model, path, ...)
list(list("mlflow_save_model"), list("keras.engine.training.Model"))(model, path,
conda_env = NULL, ...)
mlflow_save_model(model, path, ...)
mlflow_search_runs
Search Runs
Search for runs that satisfy expressions. Search expressions can use Metric and Param keys.
mlflow_search_runs(filter = NULL, run_view_type = c("ACTIVE_ONLY",
"DELETED_ONLY", "ALL"), experiment_ids = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
filter |
A filter expression over params, metrics, and tags, allowing returning a subset of runs. The syntax is a subset of SQL which allows only ANDing together binary operations between a param/metric/tag and a constant. |
run_view_type |
Run view type. |
experiment_ids |
List of string experiment IDs (or a single string experiment ID) to search over. Attempts to use active experiment if not specified. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_server
Run MLflow Tracking Server
Wrapper for mlflow server
.
mlflow_server(file_store = "mlruns", default_artifact_root = NULL,
host = "127.0.0.1", port = 5000, workers = 4,
static_prefix = NULL)
Arguments
Argument | Description |
---|---|
file_store |
The root of the backing file store for experiment and run data. |
default_artifact_root |
Local or S3 URI to store artifacts in, for newly created experiments. |
host |
The network address to listen on (default: 127.0.0.1). |
port |
The port to listen on (default: 5000). |
workers |
Number of gunicorn worker processes to handle requests (default: 4). |
static_prefix |
A prefix which will be prepended to the path of all static paths. |
mlflow_set_experiment
Set Experiment
Sets an experiment as the active experiment. Either the name or ID of the experiment can be provided. If the a name is provided but the experiment does not exist, this function creates an experiment with provided name. Returns the ID of the active experiment.
mlflow_set_experiment(experiment_name = NULL, experiment_id = NULL,
artifact_location = NULL)
mlflow_set_tag
Set Tag
Sets a tag on a run. Tags are run metadata that can be updated during a run and after a run completes.
mlflow_set_tag(key, value, run_id = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
key |
Name of the tag. Maximum size is 255 bytes. This field is required. |
value |
String value of the tag being logged. Maximum size is 500 bytes. This field is required. |
run_id |
Run ID. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_set_tracking_uri
Set Remote Tracking URI
Specifies the URI to the remote MLflow server that will be used to track experiments.
mlflow_set_tracking_uri(uri)
mlflow_source
Source a Script with MLflow Params
This function should not be used interactively. It is designed to be
called via Rscript
from the terminal or through the MLflow CLI.
mlflow_source(uri)
mlflow_start_run
Start Run
Starts a new run. If client
is not provided, this function infers
contextual information such as source name and version, and also
registers the created run as the active run. If client
is provided,
no inference is done, and additional arguments such as start_time
can be provided.
mlflow_start_run(run_id = NULL, experiment_id = NULL,
start_time = NULL, tags = NULL, client = NULL)
Arguments
Argument | Description |
---|---|
run_id |
If specified, get the run with the specified UUID and log metrics and params under that run. The run’s end time is unset and its status is set to running, but the run’s other attributes remain unchanged. |
experiment_id |
Used only when run_id is
unspecified. ID of the experiment
under which to create the current
run. If unspecified, the run is
created under a new experiment with
a randomly generated name. |
start_time |
Unix timestamp of when the run
started in milliseconds. Only used
when client is specified. |
tags |
Additional metadata for run in
key-value pairs. Only used when
client is specified. |
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
mlflow_ui
Run MLflow User Interface
Launches the MLflow user interface.
mlflow_ui(client, ...)
Arguments
Argument | Description |
---|---|
client |
(Optional) An MLflow client object returned from mlflow_client . If specified, MLflow will use the tracking server associated with the passed-in client. If unspecified (the common case), MLflow will use the tracking server associated with the current tracking URI. |
... |
Optional arguments passed to
mlflow_server() when x is a
path to a file store. |