Skip to content

Introduction

This documentation is automatically generated by raydoc. If you see any errors, open an issue. The base struct for this page is rayconfig.

The field types in this documentation are declared just like go types, here's a quick rundown on how those work:

Types

There are two different kinds of types, basic types and structs. Structs have a specific structure and all the structs used by the base struct (rayconfig) is documented on this page. Basic types are:

Note that when setting a byte array ([]byte) in JSON, you will need to use a base64-encoded string as there is no byte array data type in JSON.

Arrays

Arrays are denoted as an open and closing bracket followed by a type. For example, []string would be an array of strings. In JSON form:

json
["a string", "another string", "yet another string"]

Maps (Dictionaries)

Maps are denoted as the keyword "map" followed by a type enclosed in brackets. This first type is the type of the key. This is followed by another type, which is the type of the value For example, map[string]bool would be a map/dictionary where the keys are strings and the values are booleans. In JSON form:

json
{
    "first key" : true,
    "second key:" : false,
    "3rd key" : true
}

Reference

The base struct for this page is rayconfig.

Project (project)

A project

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "CompatibilityMode": "", //Special compatibility mode for this project. Enum, may be set to "docker". Do not set if using standard ray build system.
  "DockerOptions": , //Special options when using DCM (Docker Compatability Mode)
  "DeployOn": [
    ""
  ], //RLS servers to deploy this project onto. Use "local" for the local server. If left blank, it is set to ["local"].
  "EnvVars": {
    "": ""
  }, //Enviroument variables, use for secrets or simple configuration.
  "Files": , //Files declare files that will be created or zips that will be extracted in a deployments directory before the build process. Use for configuration files.
  "PluginImplementation": "", //The plugin this project implements, if any. It's HIGHLY recommended to not avoid this and instead use the project config's PluginImplementation field. Setting this field instead of the project config's field works very weird internally and will/can cause quirks especially with RLS.
  "Options": {
    "": ""
  }, //Special options, used for a couple of different obscure options.
  "Middleware": "", //Tells ray router to proxy request to this project somewhere else (eg. localhost:3000).
  "ForcedRenrollment": 0, //Any user enrolled into a channel before this timestamp will be renrolled into a new channel. Unix time.
  "Src": "", //Url of the git repository of the project (eg. https://github.com/pyrretsoftware/ray) or the image refrence if using DCM (eg. glanceapp/glance)
  "Name": "", //Unique name of the project
  "Domain": "", //Host where your project will be accessible at, matched by ray router against the http Host header. Do not set if NonNetworked.
  "Deployments": , //List of deployments. [See this page.](https://ray.pyrret.com/guides/deploying-a-project/more.html#different-deployments)
  "ProdType": "" //Type of the production deployment, works the same as deployment.Type.
}

EnvVars map[string]string

Enviroument variables, use for secrets or simple configuration.

Files []ProjectFile

Files declare files that will be created or zips that will be extracted in a deployments directory before the build process. Use for configuration files.

PluginImplementation string

WARNING

This property is deprecated, it's highly recommended to avoid it.

The plugin this project implements, if any. It's HIGHLY recommended to not avoid this and instead use the project config's PluginImplementation field. Setting this field instead of the project config's field works very weird internally and will/can cause quirks especially with RLS.

Options map[string]string

WARNING

This property is deprecated, it's highly recommended to avoid it.

Special options, used for a couple of different obscure options.

Middleware string

Tells ray router to proxy request to this project somewhere else (eg. localhost:3000).

ForcedRenrollment int64

Any user enrolled into a channel before this timestamp will be renrolled into a new channel. Unix time.

Src string

Url of the git repository of the project (eg. https://github.com/pyrretsoftware/ray) or the image refrence if using DCM (eg. glanceapp/glance)

Name string

Unique name of the project

Domain string

Host where your project will be accessible at, matched by ray router against the http Host header. Do not set if NonNetworked.

Deployments []deployment

List of deployments. See this page.

ProdType string

Type of the production deployment, works the same as deployment.Type.

CompatibilityMode string

Special compatibility mode for this project. Enum, may be set to "docker". Do not set if using standard ray build system.

DockerOptions DockerOptions

Special options when using DCM (Docker Compatability Mode)

DeployOn []string

RLS servers to deploy this project onto. Use "local" for the local server. If left blank, it is set to ["local"].

Git Authentication Config (gitAuth)

Used to configure HTTP git authentication for automatic updates

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Username": "", //HTTP basic auth username (use your username for github)
  "Password": "" //HTTP basic auth password (use a [Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic) for github)
}

Username string

HTTP basic auth username (use your username for github)

Password string

HTTP basic auth password (use a Personal Access Token for github)

RLS Helper server (helperServer)

For defining RLS Servers. See this guide

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Host": "", //Where to connect for this server. Can be a private/public ip or a hostname/domain that resolves to an ip.
  "Name": "", //Unique name.
  "Weight": 0.00 //How many more requests the server should receive relative to the local server where the local server has a weight of 1.
}

Host string

Where to connect for this server. Can be a private/public ip or a hostname/domain that resolves to an ip.

Name string

Unique name.

Weight float64

How many more requests the server should receive relative to the local server where the local server has a weight of 1.

Comline (HTTPComLine)

Comlines allow you to access a ray server over the internet or from another program on the server.

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Host": "", //The host (works the same as a project's domain field) for comlines over the internet or the file path for unix sockets
  "Type": "", //Either "tcp" for comlines over the internet or "unix" for unix sockets.
  "ExtensionsEnabled": false, //Whether or not the comline accepts extensions, this only has effect on unix comlines for security reasons.
  "handler": , //
  "close":  //
}

close ````

Host string

The host (works the same as a project's domain field) for comlines over the internet or the file path for unix sockets

Type string

Either "tcp" for comlines over the internet or "unix" for unix sockets.

ExtensionsEnabled bool

Whether or not the comline accepts extensions, this only has effect on unix comlines for security reasons.

handler ````

Comline configuration (ComConfig)

Comlines allow you to access a ray server over the internet or from another program on the server.

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Lines": , //Comlines of this server
  "Keys":  //Comline keys
}

Keys []Key

Comline keys

Lines []HTTPComLine

Comlines of this server

Channel (deployment)

A channel/deployment is a version of a project based on a git branch. It is sometimes used synonymously with branch.

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Branch": "", //Git branch to base this deployment/channel on. This is also used as the channel's name.
  "Type": "", //Type of channel, enum which can be set to "dev" (requires access to server to access channel), "test" (enroll a percentage of new users onto the channel) or "hidden" (no restrictions on who can access the channel but users are not enrolled automatically)
  "Enrollment": 0.00 //Percentage of user to enroll into the channel. Should not be set unless Type is "test"
}

Branch string

Git branch to base this deployment/channel on. This is also used as the channel's name.

Type string

Type of channel, enum which can be set to "dev" (requires access to server to access channel), "test" (enroll a percentage of new users onto the channel) or "hidden" (no restrictions on who can access the channel but users are not enrolled automatically)

Enrollment float64

Percentage of user to enroll into the channel. Should not be set unless Type is "test"

Docker Options (DockerOptions)

Special docker-specific options for DCM

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "NonNetworked": false, //Does the same thing as ProjectConfig's NonNetworked, that is disable ray router for this project and do not expect it to listen on RAY_PORT or RAY_SOCK_PATH
  "ContainerPort": 0, //What port inside the container ray router should send requests to
  "Volumes": {
    "": ""
  } //See [docker volumes](https://docs.docker.com/engine/storage/volumes/). The key of this map is the source file (use Ray Files to create this) and the values of this map are the mount points inside the container.
}

Volumes map[string]string

See docker volumes. The key of this map is the source file (use Ray Files to create this) and the values of this map are the mount points inside the container.

NonNetworked bool

Does the same thing as ProjectConfig's NonNetworked, that is disable ray router for this project and do not expect it to listen on RAY_PORT or RAY_SOCK_PATH

ContainerPort int

What port inside the container ray router should send requests to

Ray Config (rayconfig)

The thing you configure ray with, the file is usually located at /usr/bin/ray-env/rayconfig.json on Linux.

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Com": , //Comline config
  "Projects": , //This ray servers projects
  "TLS": , //Configuration for TLS (HTTPS)
  "EnableRayUtil": false, //Enables rayutil. See [this page](https://ray.pyrret.com/guides/deploying-a-project/more.html#rayutil)
  "GitAuth": , //Git Authentication Config
  "RLSConfig": , //RLS Config. See [this guide](https://ray.pyrret.com/guides/rls/)
  "AutofixDisabled": false, //Whether or not to disable ray's catastrophe prevention mechanism autofix,
  "Monitoring":  //Monitoring conifg
}

AutofixDisabled bool

Whether or not to disable ray's catastrophe prevention mechanism autofix,

Monitoring monitoringConfig

Monitoring conifg

Com ComConfig

Comline config

Projects []project

This ray servers projects

TLS tlsConfig

Configuration for TLS (HTTPS)

EnableRayUtil bool

Enables rayutil. See this page

GitAuth gitAuth

Git Authentication Config

RLSConfig rlsConfig

RLS Config. See this guide

TLS Config (tlsConfig)

TLS configuration options

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "PrivateKey": "", //The private key in PEM format. Only used when provider is custom.
  "Provider": "", //Configures a provider. Enum, possile vals are "letsencrypt" and "custom". By setting to letsencrypt, you agree to [their TOS](https://letsencrypt.org/documents/LE-SA-v1.6-August-18-2025.pdf)
  "Certificate": "" //The certificate in PEM format. Only used when provider is custom.
}

Provider string

Configures a provider. Enum, possile vals are "letsencrypt" and "custom". By setting to letsencrypt, you agree to their TOS

Certificate string

The certificate in PEM format. Only used when provider is custom.

PrivateKey string

The private key in PEM format. Only used when provider is custom.

RLS config (rlsConfig)

For configuring RLS. See this guide

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Helpers": , //Helper servers
  "Enabled": false //Whether or not to enable RLS. Must be true if Helper servers are defined.
}

Helpers []helperServer

Helper servers

Enabled bool

Whether or not to enable RLS. Must be true if Helper servers are defined.

Webhook (webhook)

A monitoring webhook

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Url": "", //Webhook url
  "Type": "" //Type of webhook. enum, either "discord", "slack" or "generic"
}

Type string

Type of webhook. enum, either "discord", "slack" or "generic"

Url string

Webhook url

Monitoring config (monitoringConfig)

Monitoring notifies you when things happen to your servers

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Webhooks": , //List of monitoring webhooks
  "TriggerOn": [
    ""
  ], //What events to trigger on, can contain "all", or event names (eg. "processError")
  "CatMode": false //Whether or not to send a cat picture along monitoring information (discord only).
}

Webhooks []webhook

List of monitoring webhooks

TriggerOn []string

What events to trigger on, can contain "all", or event names (eg. "processError")

CatMode bool

Whether or not to send a cat picture along monitoring information (discord only).

Key (Key)

Comline authentication key

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Type": "", //For features coming later, always set to 'hardcode' for now
  "Key": "", //The key as a string, if type is "hardcode".
  "Permissons": [
    ""
  ], //List of permissons this key has. The key defaults to no permissons. If this includes "special:all", all permsissons are given, but remember [the principle of least privilege](https://en.wikipedia.org/wiki/Principle_of_least_privilege)
  "DisplayName": "" //A display name for the key, like who or what uses it.
}

Type string

For features coming later, always set to 'hardcode' for now

Key string

The key as a string, if type is "hardcode".

Permissons []string

List of permissons this key has. The key defaults to no permissons. If this includes "special:all", all permsissons are given, but remember the principle of least privilege

DisplayName string

A display name for the key, like who or what uses it.

File (ProjectFile)

Ray Files are files that you can define in your config that will be placed in each deployments directory. This can be used for configuration files among other things.

View JSON documentation
json
// Note that this is not a proper example, but just shows docs in JSON form
{
  "Path": "", //Where the file should be placed relative to the deployment directory. When Type is set to "zip", this is the path of the directory the files will be unzipped to.
  "Type": "", //Type of file, either "zip" for zips or ommited for regular files
  "Blob":  //Base64 blob for the file. This may be in any format for regular files but should be in zip format for zip files.
}

Path string

Where the file should be placed relative to the deployment directory. When Type is set to "zip", this is the path of the directory the files will be unzipped to.

Type string

Type of file, either "zip" for zips or ommited for regular files

Blob []byte

Base64 blob for the file. This may be in any format for regular files but should be in zip format for zip files.