Skip to content
gflow

Single-node scheduling for shared machines

Give one Linux machine a real job scheduler

Queue, run, and inspect GPU or CPU jobs on a shared workstation with a small CLI and a local daemon.

  • Single-node by design
  • GPU-aware scheduling
  • tmux-backed execution
  • MCP-ready for agents

CLI-first

Queueing, control, and inspection from familiar commands.

Recoverable

Attach, follow logs, and redo failed work.

Explicit policy

Declare GPUs, VRAM limits, priorities, reservations, and dependencies.

Workstation session
$ gflowd up
daemon ready on 127.0.0.1:5577
$ gbatch --gpus 1 --project vision python train.py
submitted batch job 184
$ gqueue
JOBID NAME ST TIME GPU NODELIST(REASON)
184 train R 00:12:41 1 0
185 eval PD - 0 (WaitingForDependency)
$ gjob log 184
step=420 loss=0.184 throughput=178 img/s

Queue snapshot

Running04
Queued09
Held01

GPU policy

Visible0,1,2,3
SharedVRAM-aware

Why it exists

When one machine is no longer just yours

Ad hoc tmux sessions and manual GPU etiquette break down once a workstation is shared.

Without queue discipline

  • Long jobs collide with interactive work.
  • Failures are hard to recover because state and logs are scattered.
  • GPU requests become tribal knowledge instead of policy.

With gflow

  • A local daemon keeps state and queue control consistent.
  • Every job has a lifecycle you can inspect and recover.
  • Resources and dependencies are declared at submission time.

How it works

A familiar flow in four commands

01gflowd up

Start the local scheduler.

02gbatch --gpus 1 python train.py

Submit a command or script with explicit resources.

03gqueue

Inspect running, queued, or completed jobs.

04gjob log <job_id>

Follow logs or attach when a run needs attention.

Capabilities

Built for daily workstation use

Queueing and lifecycle

Submit, hold, release, cancel, update, and redo jobs with an inspectable state model.

GPU-aware scheduling

Request GPUs directly, enable shared mode, and set VRAM limits.

Workflow composition

Use dependencies, arrays, and parameter sweeps for multi-stage runs.

Operational visibility

Read queue state through tables, trees, JSON, CSV, or YAML.

Recoverable execution

Run each job in its own tmux session for direct logs and recovery.

Automation and AI integration

Expose scheduler actions through a local MCP server.

Where it fits

Common scenarios

Shared lab GPU server

Coordinate multiple researchers on one box with explicit scheduling rules.

Solo research machine

Keep long-running experiments structured and restartable.

Local evaluation pipelines

Chain prep, train, benchmark, and reporting jobs with dependencies.

Documentation paths

Start where you are

AI integration

Make scheduler operations available as tools

Run gflow as a local stdio MCP server so agent CLIs can inspect queues and drive scheduler workflows.

Start scheduling the machine you already have

Use the docs as an operator handbook.

Released under the MIT License.