Getting Started

RxInferServer is a web server that provides a REST API for running Bayesian inference using the RxInfer.jl package. It allows users to define probabilistic models, upload data, and run inference through HTTP requests. This guide will walk you through the installation process and shows how to start the server.

Installation

To begin using RxInferServer, first clone the repository:

git clone git@github.com:lazydynamics/RxInferServer.git

and navigate to the repository's directory by running:

cd RxInferServer
Note

While the server is technically implemented as a Julia package, it relies on locally auto-generated code from the OpenAPI specification. This makes it more challenging (though not impossible) to use it as a direct dependency in another Julia project. For the same reason, the server is not registered as a Julia package and cannot be installed using Pkg.jl. Please refer to the Pkg.jl documentation for more information on working with such packages.

Makefile

The repository includes a Makefile for convenience. To check the available commands, run:

make help

Database setup

The server requires a database to store model and inference related information. Read more about the database in the Database section. For development purposes, the server can be started with make docker command which will automatically start the database in a docker container

make docker

Starting the Server

To start the development version of the server, run:

make serve

This will automatically start Julia and call the RxInferServer.serve function with default settings. Read more about available options in the Configuration section.

It is also possible to manually start the server from the Julia REPL:

julia --project
julia> using RxInferServer

julia> ENV["RXINFER_SERVER_ENABLE_HOT_RELOAD"] = "true"

julia> RxInferServer.serve()

Note that the RxInferServer.serve is a blocking function and will keep the REPL busy. To start the server in the background, you can use the @async or Threads.@spawn macros. Read more about the @async and Threads.@spawn macros in the Julia Documentation.

Configuration

To change the configuration of the server, you can set the environment variables before starting the server. Read more about the configuration in the Configuration section. Alternatively, you can change the configuration using the .env files.

Closing the Server

To close the server, type q and hit ENTER. Alternatively, you can use the Ctrl-C shortcut.

Note

When running the server from script, e.g. make serve, Ctrl-C might not work properly. See How do I catch CTRL-C in a script? for more information.

API Reference

RxInferServer.serveFunction
serve() -> HTTP.Server

Start the RxInfer API server with the configured settings. Official documentation is available at https://server.rxinfer.com/

Description

Initializes and starts an HTTP server that exposes RxInfer functionality through a REST API. The server uses the OpenAPI specification defined in RxInferServerOpenAPI module to register endpoints.

Features

  • Configurable port via the RXINFER_SERVER_PORT environment variable (default: 8000)
  • Graceful shutdown with proper resource cleanup when interrupted
  • Loads the .env files based on the RXINFER_SERVER_ENV environment variable
  • When Revise.jl is loaded in the current Julia session, and the RXINFER_SERVER_ENABLE_HOT_RELOAD environment variable is set to "true", the server will hot reload the source code and models when the source code changes.

This is a blocking operation that runs until interrupted (e.g., with Ctrl+C). To gracefully shut down the server, type the q or quit and press ENTER in the REPL. Note that Ctrl+C cannot be catched reliably when running in a non-interactive session.

Examples

using RxInferServer

# Start the server with default settings (blocks until interrupted)
RxInferServer.serve()

See Also

source

Where to go next?

  • Read more about the different configuration options in the Configuration section
  • Create your first model with the Model management section
  • For detailed information about how to create and add your own models to the server, check out the How to Add a Model manual
  • If you want to contribute to the project, read more about the Development section