Skip to main content

Configuration options

Pixeltable can be configured through:
  • Environment variables
  • System configuration file (~/.pixeltable/config.toml on Linux/macOS or C:\Users\<username>\.pixeltable\config.toml on Windows)
  • pxt.init(), for the calling process only: pxt.init({'openai.api_key': '...'})
The settings governing the file cache that the whole instance shares are read from the config file only: file_cache_size_g and file_cache_lease_s.
Prefer environment variable names (PIXELTABLE_API_KEY, PIXELTABLE_OUTPUT_MEDIA_DEST). Pixeltable resolves environment variables from the process environment and never loads a .env file itself, so source one yourself first (set -a; source .env; set +a) or load it with a dotenv library. Provider keys go under Secrets or pxt secret. On a hosted Cloud database the home bucket is already the default media store; dest env vars are for local Pixeltable and bring-your-own buckets. See Cloud storage.
Example config.toml:

System settings

Per-database settings

Media destinations and the OTLP endpoint and protocol can also be set for a single database. Each database has a [[pixeltable.database]] entry in pixeltable.toml. Add a db_<key> field to that entry to set <key> for that database only. A [[pixeltable.database]] entry with no name corresponds to the local database. A [[pixeltable.database]] entry named pxt://org:db is a hosted database; its pods pick up the config when doing a pxt db update, and a running service moves onto it with pxt service update.
Settings are resolved in this order:
  1. Database entry: db_<key> in [[pixeltable.database]]
  2. Environment variable: the variable from the table above, or a pxt.init() override
  3. Global config: <key> under [pixeltable] / [otel] in config.toml, shared by every database on the installation
  4. Fallback: a hosted database uses its home bucket for media
The OTLP auth headers are a secret and do not go in the entry: set OTEL_EXPORTER_OTLP_HEADERS in the environment, and on a hosted database with pxt secret set pxt://org:db OTEL_EXPORTER_OTLP_HEADERS=... (see pxt secret).

API configuration

Rate limit configuration

Pixeltable supports two patterns for configuring API rate limits in config.toml. Refer to the docstring of the relevant udf in the SDK Reference for details on the rate limiting pattern used by that udf.

Single rate limit per provider

For providers with a single rate limit across all models, add a rate_limit key to the provider’s config section:

Per-model rate limits

For providers that support different rate limits for different models, add a <provider>.rate_limits section and list the rate limits for each model:
If no rate limit is configured, Pixeltable uses a default of 600 requests per minute.

Configuration best practices

Security considerations

When configuring API keys and sensitive information:
  • Avoid hardcoding API keys in your code
  • Use environment variables for temporary access
  • Use the config file for persistent configuration
  • Ensure your config.toml file has appropriate permissions (readable only by you)

Performance tuning

  • Adjust file_cache_size_g based on your available system memory
  • For large datasets, increase the cache size to improve performance
  • Set appropriate verbosity level based on your debugging needs

Applying configuration changes

Configuration changes take effect when you restart your Python session.

Installation Guide

Return to the installation guide for setup instructions
Last modified on September 26, 2026