Skip to main content
Settings allow you to customize how pluto behaves during initialization and runtime. You can configure settings through environment variables or by passing parameters directly to pluto.init().
Performance: pluto is designed to be fast and non-blocking. Settings allow you to customize behavior without impacting your training performance.
Source: These settings are available in pluto version 0.1.0+. Make sure you’re using the latest version: pip install pluto-ml

List of Environment Variables

Configure pluto behavior by setting these environment variables before running your script:

Setting Environment Variables

Option 1: Export in Shell

Set environment variables before running your Python script:

Option 2: Inline with Command

Option 3: In Python Script

When setting environment variables in Python, make sure to set them before importing pluto for them to take effect.

Customizing Settings via Code

You can also pass settings directly when initializing pluto, which will override environment variables. pluto logger officially supports customizing the following settings:

Using Dictionary

Using Settings Object

Debug Levels

The PLUTO_DEBUG_LEVEL environment variable controls how much logging information pluto outputs: Default: INFO (20)

Failed Request Logging

When PLUTO_DEBUG_LEVEL is set to DEBUG, pluto automatically logs failed requests to:
Each failed request entry includes:
  • Timestamp (UTC)
  • Request type and URL
  • Payload information
  • Error details
  • Number of retries attempted
This is useful for debugging network issues or investigating why certain metrics weren’t logged.

URL Configuration

Override default Pluto URLs for:
  • Self-hosted deployments: Point pluto to your own infrastructure
  • Development/staging environments: Test against non-production servers

Example: Self-Hosted Server Setup

You can run Pluto on your own infrastructure and configure the client to connect to it.

Running the Server

Start the Pluto server using Docker Compose provided in the server repo and updating the .env.example:
Make sure you have Docker and Docker Compose installed on your machine before running this command.

Configuring the Client

Once your server is running, configure the pluto client to connect to your self-hosted instance by setting the URL environment variables:
Or configure it directly in your Python code and pass into pluto.init:
Adjust the port numbers according to your server’s configuration. Check your .env file or Docker Compose configuration for the correct ports.

Settings Precedence

When the same setting is specified in multiple places, pluto uses this priority order (highest to lowest):
  1. Direct parameters to pluto.init(settings=...)
  2. Environment variables (PLUTO_*)
  3. Default values

Example

Common Use Cases

Debugging Failed Uploads

Example: Host with High Availability on EKS

See our guide for deploying the pluto server stack on EKS with terraform here: https://github.com/Trainy-ai/pluto-server/tree/main/terraform Prerequisites:
  • An existing clickhouse instance
  • A domain you own to house your stack (i.e. example.com )
    • pluto.example.com
    • pluto-api.example.com
    • pluto-ingest.example.com
    • pluto-py.example.com
  • Either Google or Github OAuth2 credentials
The terraform deploys:
  • A dedicated VPC
  • An RDS Postgres instance
  • An EKS auto cluster
  • An S3 bucket for storing media files
  • The 4 pluto services as k8s deployments
    • frontend - 2 replica default
    • backend - 3 replicas default
    • ingest - 3 replicas default
    • py - 1 replica default
  • Redis