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:
["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:
{
"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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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.
