Release notes#
Generated by commitizen from conventional commits.
v0.30.0 (2026-08-25)#
Feat#
docs: deploy through the Pages artifact instead of a gh-pages branch
docs: add versioned gh-pages deployment
docs: generate the CLI reference over the lazy command group
docs: generate config and environment reference from models
monitor: append Ray dashboard panels when Ray metrics are active
monitor: add Prometheus ray scrape job and wire –emit-ray-targets
monitor: export Ray metrics port and announce ray-*.target on all nodes
lb_supervisor: emit ray_targets.json from per-node ray-*.target files
config: add ray_metrics with auto-on resolution for Ray deployments
monitor: launch per-node GPU exporter + ownership on Ray head and workers
config: auto-select the Ray template when a deployment requires Ray
monitor: guard unsupported GPU-monitoring configs (Ray, nvidia_smi/container, dcgm/binary)
images: add nvidia_smi + dcgm GPU exporter build recipes
monitor: –gpu flag loads the GPU dashboard for the configured kind
monitor: bundle nvidia_smi + dcgm GPU dashboards (uuid->replica join)
monitor: launch per-node GPU exporter + capture per-replica GPU ownership
monitor: enable supervisor GPU target/ownership emission in lb.sh
monitor: serve gpu_ownership.prom via nginx for Prometheus scrape
monitor: add gpu + gpu_ownership Prometheus scrape jobs
data: bundle DCGM core-only counters CSV (no profiling fields)
lb_supervisor: emit gpu_targets.json + gpu_ownership.prom under –emit-gpu-targets
lb_supervisor: render uuid->replica GPU ownership join metric
lb_supervisor: render deduped per-node GPU exporter targets
config: add GpuExporterConfig (off by default, nvidia_smi/dcgm kinds)
slurm: add QoS override for load-balancer job and update template usage
lb_supervisor: refactor head file reading and update render_targets to include replica labels
monitor: add _pretty_argv function for improved argument display in grafatui launch
monitor: implement lightweight monitor view for SwarmStateManager and update tests
config: update model configuration and enhance monitoring settings
monitoring: add range-average generation throughput (overall + per replica)
monitoring: parameterize bundled dashboard with swarm/model/vllm_job/replicas vars
monitor: support custom dashboards via –dashboard, drop –no-dashboard
cli: add ‘domyn-swarm monitor’ command
data: add bundled vLLM/nginx Grafana dashboard
config: add MonitoringConfig to SlurmEndpointConfig
runtime: add generation-only LB supervisor
runtime: add lb_supervisor upstreams generator
Fix#
docs: drop the tag trigger, which could never deploy
docs: stop the navbar wordmark running under the nav links
docs: publish at the Pages custom domain, not the github.io URL
cli: preserve lazy subcommand hierarchy
monitor: thread RAY_LOG_DIR into the Ray GPU-exporter fan-out so it logs correctly
config: resolve ray_metrics.enabled to a concrete bool in all cases
lb_supervisor: aggregate per-node gpu-owner files under the integer replica id
deps: patch dependency vulnerabilities flagged by Dependabot
monitor: serve gpu_ownership from the nginx-mounted serving path
lb_supervisor: emit both uuid and UUID labels on dswarm_gpu_owner for dcgm+nvidia_smi joins
types: fix pyright typing
monitoring: make config test defaults-independent and dashboard multi-replica aware
Refactor#
cli: remove reverse proxy option from ‘up’ command
templates: split llm_swarm into vLLM-only + Ray, share _swarm_common
monitor: simplify dashboard variable handling and update tests
slurm: drive LB nginx via supervisor; add prometheus sidecars
Perf#
cli: defer heavy imports off the swarm-load path
cli: load heavy sub-apps lazily via TyperGroup
lepton: probe the Lepton SDK lazily, not at import
io: import pandas lazily in helpers/io
v0.29.0 (2026-06-04)#
Feat#
cli: add –refresh to job status and positional job-id to job cancel
enhance Slurm backend with log path handling and improved job probing
implement job probing and status refresh for Slurm and Lepton backends
add job listing and status commands with JSON output support
implement JobBuilder for SwarmJob serialization and deserialization
enhance job submission with normalized handles and status updates
add job submission persistence and update fake state manager for testing
slurm: enhance SlurmComputeBackend with external ID handling and FIFO support
jobs: implement job management with CRUD operations and migration for jobs table
Fix#
build: drop redundant force-include for data/queries
update datetime import to use timezone.utc causing issues with python 3.10
Refactor#
remove unused imports and functions from job.py
update job submission CLI and introduce job control commands
tests: simplify fake subprocess handling in delete tests
v0.28.0 (2026-05-27)#
Feat#
add support for user-defined Singularity bind mounts in Slurm configuration
add creation timestamp retrieval and enhance status output formatting
Fix#
fix monotonic filename generation for Parquet shards to ensure correct merge order
handle job status idempotency and process cleanup on cancellation
add threading lock to ensure safe database upgrades
handle nginx config validation and instance shutdown on error
v0.27.0 (2026-05-18)#
Feat#
add global resume and shard mode options for job execution
add shard_mode option in CLI
implement stable sharding strategy for job execution with ‘id’ and ‘index’ modes
slurm: update cancellation logic to terminate srun process group and remove pgid from job handle
slurm: enhance job handling with process group management and improved wait/cancel functionality
Fix#
ensure swarm.db schema is migrated when using the programmatic API
fix global_resume issue with arrow and polars causing incomplete output
ensure resources are merged correctly before job execution
improve nginx config generation and validation in lb.sh
actually fix existing server default for creation_dt column in swarm table
update existing server default for creation_dt column in swarm table
add table normalization for concatenation and corresponding tests
implement large offset handling in ArrowShardStore and add corresponding tests
Refactor#
implement lazy loading for logger and swarm components in CLI modules
replace hash_pandas_object with hash_array for stable sharding
normalization and concatenation fallback for Arrow tables in ArrowShardStore
v0.26.1 (2026-01-28)#
Fix#
arrow: align ids and merge semantics
arrow: include base outputs when finalizing shards
v0.26.0 (2026-01-27)#
Feat#
scripts: add aliases for ‘ds’ and ‘dswarm’ to entry points
db: add prune command to delete dirty swarm records and implement delete_records method
sharding: add support for shard output in Polars runner, enabling one parquet file per shard
polars: update output handling to support directory outputs and add tests for LazyFrame streaming
parquet: add support for brace range and glob patterns in parquet_hash function
patterns: implement brace range expansion for file patterns in I/O operations
job: add checkpoint_tag to JobRunSpec and submission parameters
srun: add default node count to srun command and update test for CLI execution
compat: enhance checkpointing and sharded execution validation in Arrow and Polars jobs
srun: add support for Slurm allocation checks and update command construction
jobs: enhance job execution with direct shard output support and async flushing
ray: implement Ray backend support with address configuration and validation
ray: add schema extraction and job batching support to RayBackend
jobs: implement iter_job_batches method for backend classes and add JobBatch data structure
jobs: enhance Polars backend with lazy execution and checkpointing support
job: add checkpoint tag option for job submission and processing
jobs: implement Polars runner and enhance job execution with checkpointing support
jobs: add support for optional id column in job submissions and processing
jobs: wire arrow runner selection through CLI
arrow: add arrow runner core and generic checkpoint store
jobs: add in-memory checkpoint store and options to disable checkpointing and resume
backends: enhance Polars backend write functionality and add tests
chat: enhance reasoning content handling in chat completion jobs
cli: add job submit flags for data backend
jobs: run jobs with selected data backend
data-backends: add backend registry and pandas/polars/ray backends
request: introduce _request_kwargs method to filter request kwargs and update API calls
planning: centralize plan building and normalize deployment resources
deployment: introduce DeploymentContext for normalized deployment handling and refactor related methods
io: add support for sharded parquet file saving in save_dataframe function
batching: add progress hooks and refactor run method for BatchExecutor
cli: show replica rows in status view
slurm: wire watchdog args and surface replica hints
runtime: add watchdog args builder and status helper
enhance fingerprint computation with stable representation and update tests for checkpoint manager
extend CheckpointManager to include input_col and enhance fingerprint validation
add payload normalization function and corresponding tests for collector and watchdog
enhance CheckpointManager with expected_output_cols validation and add tests
add progress parameter to BatchExecutor.run method and update tests
Fix#
store: update parquet file pattern to match all parquet files in directory
jobs: improve backend type hinting and simplify checkpointing logic
dependencies: reorganize Polars and Ray dependencies in pyproject.toml and uv.lock
run: streamline output handling in run_job_unified and remove unnecessary conversions
checkpoint: stabilize finalize() id column handling
swarm: remove JOB_KWARGS from job details dictionary
slurm: include DSWARM_AGENT_VERSION in SLURM job script
Refactor#
jobs: update and deprecate jobs module
tests: rename unused variables in watchdog tests for clarity
checkpoint: make ParquetShardStore arrow-native
replace deprecated transform method with transform_items in multiple job classes
v0.25.0 (2026-01-08)#
Feat#
add support for custom job resources in SlurmComputeBackend and SrunCommandBuilder
enhance load_dataframe and save_dataframe functions to support directory input and glob patterns
Fix#
refactor parquet_hash to improve file handling and hashing logic
improve resource handling in SlurmComputeBackend by refining argument construction
reorder environment and mail user handling in SrunCommandBuilder
update save_dataframe to allow writing parquet datasets directly to a directory
remove redundant directory creation in open_db and ensure directories are created in lb.sh.j2
v0.24.0 (2025-12-23)#
Feat#
conditionally mount local Ray logs based on backend requirements
add logging of the last 200 dmesg entries to shared node logs
improve Ray log synchronization with local and shared directories
enhance Ray log management with node-specific directories and synchronization of internal logs
Fix#
correct string formatting in job submission log message
fix example config for qwen
v0.23.0 (2025-12-12)#
Feat#
enhance nginx configuration and add job requeue functionality in Slurm scripts
add readiness timeout and improve health check handling during startup in watchdog
add integration tests for watchdog and collector functionality
add watchdog collector and update slurm scripts accordingly
add replica summary rendering to swarm status and introduce watchdog database path
add fail reasons fetching to watchdog, display fail reasons during up command
add watchdog agent to monitor and restart vllm in case of failures
cli: add autoupgrade when executing any cli command
state: add alembic migration and baseline, update SwarmStateManager to use SQAlchemy
state: add orm and model for state management
Fix#
enhance error handling in Slurm job submission and improve watchdog capacity checks
improve error handling during swarm allocation cleanup and add logging for replica failures
enhance logging in watchdog by consolidating status and exit information into structured JSON output
improve error handling and logging in collector and watchdog; update lb.sh.j2 and llm_swarm.sh.j2 for better configuration management
improve error handling in database read and remove unnecessary WAL setup in collector
ensure exit code is not None for clean exit in watchdog restart test
handle BadStatusLine exception in HTTP check and add restart logging in watchdog
update collector and watchdog to use TCP instead of UDP for message communication
improve error handling in upsert_status for SQLite operations
increase SQLite connection timeout and add error handling for schema creation
increase SQLite connection timeout to reduce “database is locked” issues
increase SQLite connection timeout and improve error handling for PRAGMA settings
update test_get_current_rev to use migration context and mock database engine
ensure watchdog configuration exists and update Ray settings based on replica and node count
update get_current_rev function to use SQLAlchemy engine for retrieving current database revision
enable Ray in watchdog configuration and adjust script parameter syntax
rename restart_max to max_restarts in watchdog configuration and update related scripts
update python command to python3 for watchdog script execution
fix checkpointing logic and add debug logging in JobRunner
fix some minor issues
fix various issues in watchdog
update paths in deepseek_r1.yaml for consistency and clarity
fix checkpointing logic and add debug logging in JobRunner
autoupgrade to work when swarm db is not present
Refactor#
format test_slurm_serving_backend.py
v0.22.1 (2025-11-14)#
Fix#
fix MultiTurnChatCompletionJob returning the incorrect list of results
fix remaining ruff issues after rules update
use vllm_api_key environment variable for health checks when present
cli: improve logging and UX flow for down command when –select or –all are not used
Refactor#
format test files
- art:
reduce complexity of down command
add new ruff rules
use new ruff rules and update codebase accordingly
v0.22.0 (2025-11-07)#
Feat#
add io_only output mode
jobs: add output_mode to SwarmJob and update job runner accordingly
add config.yaml to swarm directory
add usage of modules and preamble from config in sbatch scripts
cli: add possibility to down a swarm by the name contained in the config file
cli: add describe command to display the configuration of a swarm
Fix#
fix how _on_flush is called
remove unneeded prints, fix io_only case for keeping columns
fix issue with io_only output mode selecting on wrong df
fix circular import caused by OutputJoinMode
remove upper when setting environment variables
add exports for environment variables, remove NCCL exports
fix yaml serialization of config when persisting it
remove RAY_CGRAPH_get_timeout set in template
loading from state in a with statement won’t instantiate a new swarm anymore
logs: make sure that the name is printed only if no tty is detected
logs: fix logging to enable the swarm name to stdout
cli: print swarm name in stdout after up command
fix wait_endpoint_s usage in lb.sh.j2
fix using wrong qos in llm_swarm.sh.j2
fix issue with slurm state not being correctly fetched
use correct configuration ifor timeout in lb.sh.j2
cli: add –force flag to down command and possibility to not specify the swarm name using the last created swarm
v0.21.5 (2025-10-22)#
Fix#
fix usage of output_column_name in _load_job
fix issue with swarm not being cleaned up if managed using programmatic api
fix issue with SwarmJob.results not being ignored when job is serialized
Refactor#
jobs: update docs and tests according to the deprecation of output_column_name
jobs: :wastebasket: deprecate output_column_name as input parameter for SwarmJob, in favour of output_cols
update default value for checkpoint_dir in DomynLLMSwarm.submit_job to swarm_dir/checkpoints
v0.21.4 (2025-10-20)#
Fix#
- bug:
fix some bugs occuring in co-located replicas using vllm
v0.21.3 (2025-10-17)#
Fix#
improva symlink creation by showing only relevant files
fix issue with typo symlink path
issue with symlink creation for singularity instance logs
logs: fix various issues with ray usage with new log directory structure
fix issue with serving spec not correctly propagated when running on slurm with requires_ray set to false
fix issue where environment variables set in config were not propagated correctly
cli: :bug: fix a bug where resources weren’t cleaned up when ctrl-c-ing
imports: fix issue with attributeerror raised on python 3.10
Refactor#
logs: :technologist: improve usability of logs by using a sane dir tree
v0.21.2 (2025-10-14)#
Fix#
imports: fix issue with circular imports on Python 3.10
v0.21.1 (2025-10-14)#
Fix#
cli: fix issue with using the CLI in python 3.10
v0.21.0 (2025-10-14)#
Feat#
cli: add domyn-swarm swarm list command to show available swarms in db
cli: update status command for a more complete report of swarm status
Fix#
state: fix issue with state queries not being loaded by CLI
templates: fix issue where co-located replicas weren’t deployed correctly
v0.20.2 (2025-10-06)#
v0.20.1 (2025-10-03)#
Fix#
fix typing
v0.20.0 (2025-10-03)#
BREAKING CHANGE#
swarms are now labelled with their deployment names
db schema changed
the name is now specified in the config file and then used to generate the primary key
state is now managed with a sqlite db, state files are not needed anymore. In the CLI, state file paths are replaced by the job id
Feat#
add usage of api_token when
add usage of vllm_api_key environment variable propagated to vllm on singularity
add status method for Swarm and related slurm implementation
state: adapt cli to the new state management
state: implement new state management
state: change db schema
unify swarm name handling
implement init defaults command
docs: add apache 2.0 badge
docs: add domyn-swarm logo
add settings to enable usage of environment variables
add lepton api token support using lepton secrets, fix lepton job submission
add endpoint submission to lepton
start refactoring for job execution improvements
state: add state management tests
state: replace state management with a sqlite db
exceptions: add custom exceptions
state: add state management queries
ci: add python version matrix
Fix#
use correct fallback for LeptonConfig.lepton_workspace_id
set home_directory attribute using the settings variable DOMYN_SWARM_HOME
fix tests and wrong swarm name being displayed in logs
fix issue with api_token not being used and passed to lepton jo
lepton: fix lepton deployment by passing the correct objects and setting the proper image from the config
update submit_script method
fix issue with multiple output columns not handled correctly
remove –platform flag from cli commands
fix job submission by using correct venv_path attribute in slurm config and by making headers to openai client optional
linting: remove unused imports
state: fix conflicts
state: fix handle loading
cli: change swarm name help
cli: change job name help
tests: fix pool test
fix type checking
state: add newline
state: improve docstrings
tests: fix state tests and add new ones
state: change slurm backend validation
tests: fix broken tests
imports: fix leptonai imports
fix issue when validation not working when a required field is not present in the defaults
fix issues related to lazy imports in tests
logo: use relative paths
logo: remove spaces
logo: add both media
logo: use raw links
logo: add white logo for dark themes
logo: add selector to invert colors
logo: remove background
logo: try to invert colors
logo: add white background
fix SlurmConfig not being actually passed to SlurmComputeBackend construction
fix test
fix test in TestSwarmStateManager
fix model validator for removed backends property
fix tests after refactoring
fix imports and use proper propagation of secret for endpoint
fix lepton endpoints and jobs deployments
fix missing persist while waiting for endpoints
state: add newlines to comply with hooks
reverse_proxy: add support for older python versions
Refactor#
add deprecation warnings for implemented SwarmJobs, implement new api
cli: replace submit_app with job_app
implement lazy imports for leptonai imports, which are extras
add missing file in previous commit
use a single backend per file, in place of a list
fix templates and update example configs
update package structure
- boom:
add new backends implementation for configuration, supporting multiple backends in a single config
use Deployment class to handle the deployment of the compute jobs
add new generic platform readiness class to abstract health checks
v0.15.0 (2025-09-10)#
Feat#
readme: add badges
Fix#
fix issue with environment variables not being expanded in config
v0.14.0 (2025-08-29)#
Feat#
cli: add –checkpoint-dir to CLI
Fix#
revert vllm_use_v1 to 0
fix issue with checkpoint dir not being propagated correctly
tests: fix tests for chat completion job
Refactor#
fix pre-commit hooks execution
v0.13.1 (2025-08-26)#
Refactor#
add parse_reasoning parameter to ChatCompletionJob
v0.13.0 (2025-08-26)#
Feat#
execute hooks during the ci pipeline
add pre-commit hooks
add preliminary ci pipeline
update cuda, vllm version and add ray dashboard
Fix#
remove –contain flag to vllm instance deployment
switch to python 3.12 in the ci pipeline
reformat project with ruff
Delete unused import
simplify test to ease ci
move ci file into the workflow dir to trigger the pipeline
remove unneeded None guard
fix obsolete tests
enforce pyright type checking
v0.12.0 (2025-08-19)#
Feat#
- zap:
implement replicas sharing nodes to optimize resource usage
Fix#
remove typing import not compatible with python 3.10
fix edge case where multiple vllms wouldn’t allocate on the same node
fix issue with usage of min in jinja2 template
fix how tensor-parallel-size is set when running vllm serve
fix issue where gpus weren’t allocated directly with –overlap flag
v0.11.3 (2025-07-25)#
Fix#
add None defaults to deprecated parameters
fix issue with parse args and improve logging
add missing configuration key in DriverConfig model
Refactor#
introduce checkpoint_interval and max_concurrency parameters to replace batch_size and parallel
Perf#
add driver.nginx_timeout for load balancer config
v0.11.2 (2025-07-18)#
Fix#
fix unescaped variable in nginx config
add additional safeguards to timeouts in nginx config
remove nginx_error.log
- bug:
fix issue with log folder not being created
fix tests
disable deletion of checkpoint files
v0.11.1 (2025-07-18)#
Fix#
- bug:
add error log for nginx and add lest_conn to load balancer config
v0.11.0 (2025-07-17)#
Feat#
add enable_proxy_buffering option to driver config
add –mail-user flag to submit job command
Refactor#
add srun_builder module
move state manager, slurm driver and lb health checker to their own modules in core package
- construction:
start refactoring DomynSwarm core logic
- fire:
remove unneeded LLMClient and related classes, keeping AsyncOpenAIClient
- construction:
refactor helpers module into its own package
- construction:
refactory jobs structure and its package
v0.10.0 (2025-07-11)#
Feat#
add mail_user to configuration to enable mail notifications via slurm
Fix#
enable log stats
fix nodes allocation of ray workers
v0.9.1 (2025-07-08)#
Fix#
fix issue with NOT_GIVEN used as default for openai timeout
fix bug in batch execution progress bar
fix status check for load balancer in domyn-swarm status
v0.9.0 (2025-07-08)#
Feat#
add status command
Fix#
improve logging
fix issue with default template path
v0.8.5 (2025-07-07)#
Fix#
fix issue with exceptions retries not being logged properly by tenacity
v0.8.4 (2025-07-07)#
Fix#
use extra_body parameter in openai client to make sure to pass all kwargs to vllm
v0.8.3 (2025-07-07)#
Fix#
fix issue after refactoring
Refactor#
move config models to own package
v0.8.2 (2025-07-07)#
Refactor#
refactor cli package structure
v0.8.1 (2025-07-04)#
Fix#
fix issue with allocation of nodes for workers in swarms with multiple replicas
v0.8.0 (2025-07-04)#
Feat#
implement pool command to spin up multiple clusters with different configs
add –detach flag to domyn-swarm submit job
Fix#
fix issue increasing wait time for ray workers
add to_path helper
fix progress bar batch request execution in last batch
v0.7.0 (2025-07-03)#
Feat#
add swarm pool data models
Fix#
improve robustness for checking slurm jobs state, add create_swarm_pool utility
add PID returned if job is submitted as detached
rmeove unneeded files
add –exclusive to load balancer template
add –exclusive to load balancer template
use output path as part of checkpointing naming convention
use model to differentiate between checkpoints on the same source dataset
fix issue when domyn-swarm python script is running in sbatch script
v0.6.0 (2025-07-02)#
Feat#
add MultiTurnChatCompletion job
Fix#
use squeue instead of sacct for checking slurm job status, add reasoning_content key to MultiTurnChatCompletionJob
v0.5.3 (2025-07-02)#
Fix#
fix issue with srun not being able to be executed inside lb node
fix checkpointing
fix example data to mirror actual implementation of ChatCompletionJob
v0.5.2 (2025-07-01)#
Fix#
add –exclusive=user to job allocation in sbatch scripts
fix exceptions silenced when retried, add –exclusive when submitting sbatch jobs
v0.5.1 (2025-07-01)#
Fix#
fix ChatCompletionJob to properly handle array of messages
v0.5.0 (2025-07-01)#
Feat#
add resource configuration for the driver/lb task
add support for running jobs in multithreaded mode
Fix#
fix usage of new cli argument for nthreads
fix issue when users filter df inside transform
fix typo
actually fix streaming of stdout to terminal
fix how log_directory config is after home_directory
add cli parameters to domyn_swarm.run_job so that it’s more usable
use subprocess.PIPE for stderr for running srun commands
fix properly the usage of a moddel saved in a local folder. If the cfg.model is a folder, then it will be mounted by the vllm containers
quick fix to make sure that models saved in folders are actually readable by the vllm container
update deepseek_r1.yaml
Perf#
- zap:
improve deepseek R1 performances
v0.4.0 (2025-06-27)#
Feat#
add perplexitymixin to enable computation of perplexity by users
- sparkles:
enable tuple unpacking when when fn is called in SwarmJob.batched
Fix#
typo introduced in previous commit
- bug:
fix a bug in jobs having multiple output columns
- bug:
remove delete_on_close=False incompatible with python 3.10
start fixing reverse proxy, update example configs
improve docs, fix an issue with job kwargs incorrectly handled
v0.3.0 (2025-06-24)#
Feat#
add custom input and output columns, add deepseek r1 distill config, use vllm-only for serving models on a single node
Fix#
add retry mechanism and update deepseek r1 config
fix issues with checkpoints not happening, tune deepseek_r1 deployment, update example datasets
v0.2.1 (2025-06-19)#
Fix#
cfg: fix default value of venv_path to None
v0.2.0 (2025-06-18)#
Feat#
cli: :sparkles: add submit job and submit script commands
cli: add up command to allocate the clusters without running any script
cfg: add time_limit, exclude_nodes and node_list configurations
add load balancer and proper replicas management for deployed clusters
add replicas to config
deploy: :bricks: add reverse proxy flag after cluster is deployed
cfg: :zap: add new config keys
cli: :sparkles: add cli interface with typer
- rocket:
initial commit
Fix#
various fixes: remove driver_script from config, add home_directory key
jobs: :bug: fix several bugs with launching jobs on already available clusters
use proper conditionals when defining exclude_nodes and node_list
cfg: rename instances to nodes in configuration and code
deploy: :wrench: fix issue with nginx reverse proxy
Refactor#
- beers:
remove unneeded code