A lightweight, single-node job scheduler written in Rust.
Project description
gflow - A lightweight, single-node job scheduler
English | 简体中文
gflow is a lightweight job scheduler for a single Linux machine. It gives you a Slurm-like workflow—submit, queue, inspect, cancel, and organize jobs—without deploying a cluster. It is especially useful on shared GPU workstations, lab servers, and small research boxes.
Demo
When gflow fits well
- You have one Linux machine instead of a full cluster.
- Multiple users or experiments need to share GPUs safely.
- You want job queues, dependencies, arrays, and time limits.
- You want a lighter alternative to Slurm for local or lab infrastructure.
Core Features
- Daemon-based scheduling:
gflowdkeeps the queue, state, and resource allocation in one place. - GPU-aware execution: schedule dedicated GPUs or shared GPUs with per-job VRAM limits.
- Rich submission model: submit commands or scripts with priorities, dependencies, arrays, and conda environments.
- Time limits and lifecycle control: prevent runaway jobs and manage hold, release, redo, and cancel actions.
- tmux-backed execution and logs: every job runs in its own session and streams output into persistent logs.
- Automation hooks: send webhook notifications when jobs start, finish, fail, or change state.
CLI Overview
gflowd: initialize config and manage the scheduler daemon.gbatch: submit commands or scripts.gqueue: inspect and filter jobs.gjob: show details, attach, hold/release, redo, and update jobs.gcancel: cancel one or more jobs.gctl: manage GPU visibility, concurrency limits, and reservations.ginfo: inspect scheduler and GPU status.gstats: view scheduler statistics.
Installation
Prerequisites
- Linux
tmux- NVIDIA drivers only if you want GPU scheduling features
Install via PyPI (Recommended)
Use uv:
uv tool install runqd
Or pipx:
pipx install runqd
Or pip:
pip install runqd
Prebuilt binaries are available for Linux (x86_64, arm64).
Install Nightly Build
pip install --index-url https://test.pypi.org/simple/ runqd
Install via Cargo
cargo install gflow
Install directly from main:
cargo install --git https://github.com/AndPuQing/gflow.git --locked
Build from Source
git clone https://github.com/AndPuQing/gflow.git
cd gflow
cargo build --release
Compiled binaries are placed in target/release/.
Quick Start
-
Initialize config (optional but recommended):
gflowd init -
Start the scheduler daemon:
gflowd up -
Submit a job:
cat > my_job.sh <<'EOF' #!/bin/bash echo "Starting job on GPU: $CUDA_VISIBLE_DEVICES" sleep 30 echo "Job finished." EOF chmod +x my_job.sh gbatch --gpus 1 ./my_job.sh
-
Inspect the queue:
gqueue
-
Check details or stop the daemon when done:
ginfo gflowd down
Common Workflow
gflowd up
ginfo
gbatch --gpus 1 --time 2:00:00 --name train python train.py
gqueue -f JOBID,NAME,ST,TIME,NODES,NODELIST(REASON)
gjob show <job_id>
gcancel <job_id>
Documentation
- Website: runqd.com
- Installation: runqd.com/getting-started/installation.html
- Quick start: runqd.com/getting-started/quick-start.html
- Job submission: runqd.com/user-guide/job-submission.html
- Configuration: runqd.com/user-guide/configuration.html
- Quick reference: runqd.com/reference/quick-reference.html
Star History
Contributing
If you find a bug or want to propose an improvement, please open an Issue or submit a Pull Request.
License
gflow is licensed under the MIT License. See LICENSE for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file runqd-0.4.13.tar.gz.
File metadata
- Download URL: runqd-0.4.13.tar.gz
- Upload date:
- Size: 310.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7674771d67b1d1066dd079da4e1d9529ae5f81bc087e151f184317aae87adc46
|
|
| MD5 |
73ff11f96e132ea50b4ddfe10aa9a3a2
|
|
| BLAKE2b-256 |
bd4ce32192715b57d690c0ff3ce5704298e6afb8f1e863a9d4a7f4f44984380b
|
File details
Details for the file runqd-0.4.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: runqd-0.4.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 47.8 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86a2457d0d3ad6b37541921c19fe72da519175aa3302eb849064f2c90a9cd54b
|
|
| MD5 |
1649eb0a6e275b8925d66bc11cb81024
|
|
| BLAKE2b-256 |
0bed1db3cf4936941afa1d68c75db02d667f8c7a6164273ff9e2b1002e517c7d
|
File details
Details for the file runqd-0.4.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: runqd-0.4.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 45.0 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
905d0d4b13a14298ed27dcdcd6d0df66b7c98a5cae70d1165f34695e870bab9b
|
|
| MD5 |
33ca2d8956bef315168844bb2a94a6bd
|
|
| BLAKE2b-256 |
69d812289fc76e555579533fa89c4161fcdd913eef29413335bc40f7935240f6
|