Nuvom Configuration Guide¶
Nuvom is fully configurable via environment variables and .env files. This guide explains supported settings, how they affect runtime behavior, and plugin integration, including the scheduler backend.
Where Settings Come From¶
Nuvom loads configuration in order of precedence:
.envfile in your project root (viapydantic-settings)- Environment variables (
export FOO=...) - Defaults defined in code if not overridden
Example .env¶
NUVOM_QUEUE_BACKEND=file
NUVOM_RESULT_BACKEND=memory
NUVOM_SERIALIZATION_BACKEND=msgpack
NUVOM_SCHEDULER_BACKEND=file
NUVOM_ENVIRONMENT=dev
NUVOM_LOG_LEVEL=INFO
NUVOM_MAX_WORKERS=4
NUVOM_BATCH_SIZE=10
NUVOM_JOB_TIMEOUT_SECS=30
NUVOM_TIMEOUT_POLICY=retry
NUVOM_MANIFEST_PATH=.nuvom/manifest.json
NUVOM_SQLITE_QUEUE_PATH=.nuvom/queue.db
NUVOM_SQLITE_RESULT_PATH=.nuvom/results.db
Core Configuration Variables¶
| Variable | Description | Default |
|---|---|---|
NUVOM_ENVIRONMENT |
dev, test, or prod |
dev |
NUVOM_LOG_LEVEL |
Logging level: DEBUG, INFO, etc. |
INFO |
NUVOM_QUEUE_BACKEND |
Backend type: memory, file, sqlite, or plugin name |
sqlite |
NUVOM_RESULT_BACKEND |
Result store: memory, file, sqlite, or plugin name |
sqlite |
NUVOM_SERIALIZATION_BACKEND |
Format for job payloads (msgpack) |
msgpack |
NUVOM_MANIFEST_PATH |
Path to task discovery manifest | .nuvom/manifest.json |
NUVOM_JOB_TIMEOUT_SECS |
Default job timeout (unless overridden in @task) |
30 |
NUVOM_BATCH_SIZE |
Jobs pulled per worker cycle | 10 |
NUVOM_MAX_WORKERS |
Number of worker threads | 4 |
NUVOM_TIMEOUT_POLICY |
Behavior on timeout: retry, fail, ignore |
retry |
NUVOM_SCHEDULER_BACKEND |
Scheduler backend to use (memory, redis, sqlite, plugin) |
sqlite |
Plugin Configuration¶
Plugins extend Nuvom dynamically and are registered via .nuvom_plugins.toml:
[plugins]
queue_backend = ["my_module:MyQueuePlugin"]
result_backend = ["my_module:MyResultPlugin"]
scheduler_backend = ["my_module:CustomSchedulerBackend"]
monitoring = ["nuvom.plugins.monitoring.prometheus:PrometheusPlugin"]
Pass plugin-specific values via .env:
MY_PLUGIN_AUTH_TOKEN=abc123
Inside the plugin, access them via the settings argument passed to start():
def start(self, settings):
token = settings.get("auth_token", None)
SQLite Backend Settings¶
For SQLite backends:
| Variable | Purpose | Default |
|---|---|---|
NUVOM_SQLITE_QUEUE_PATH |
SQLite file path for job queue | .nuvom/queue.db |
NUVOM_SQLITE_RESULT_PATH |
SQLite file path for result backend | .nuvom/results.db |
Directories are created automatically if missing.
CLI to View Active Config¶
nuvom config
Example output:
Environment: dev
Queue Backend: sqlite
Result Backend: sqlite
Scheduler Backend: sqlite
Max Workers: 4
Batch Size: 10
Manifest Path: .nuvom/manifest.json
...
Best Practices¶
- Commit
.env.examplefor contributors - Keep secrets out of version control (
.gitignore) - Override values in CI/CD via environment variables
- Use scheduler backends that match your production workload
- Verify configuration with
nuvom config
Summary¶
Nuvom gives developers clean, predictable, and extensible control over runtime behavior, queuing, results, plugins, and scheduling via a single scheduler backend variable.
Developer-first, predictable, and professional configuration.