Flux RFC Index

This is the Flux RFC project.

We collect specifications for APIs, file formats, wire protocols, and processes.

Active RFC Documents

1/C4.1 - Collective Code Construction Contract

The Collective Code Construction Contract (C4.1) is an evolution of the github.com Fork + Pull Model, aimed at providing an optimal collaboration model for free software projects.

2/Flux Licensing and Collaboration Guidelines

The Flux framework is a family of projects used to build site-customized resource management systems for High Performance Computing (HPC) data centers. This document specifies licensing and collaboration guidelines for Flux projects.

3/Flux Message Protocol

This specification describes the format of Flux messages, Version 1.

4/Flux Resource Model

The Flux Resource Model describes the conceptual model used for resources within the Flux framework.

5/Flux Broker Modules

This specification describes the broker extension modules used to implement Flux services.

6/Flux Remote Procedure Call Protocol

This specification describes how Flux Remote Procedure Call (RPC) is built on top of Flux request and response messages.

7/Flux Coding Style Guide

This specification presents the recommended standards when contributing C code to the Flux code base.

9/Distributed Communication and Synchronization Best Practices

Establishes best practices, preferred patterns and anti-patterns for distributed services in the flux framework.

10/Content Storage Service

This specification describes the Flux content storage service and the messages used to access it.

11/Key Value Store Tree Object Format v1

The Flux Key Value Store (KVS) implements hierarchical key namespaces layered atop the content storage service described in RFC 10. Namespaces are organized as hash trees of content-addressed tree objects and values. This specification defines the version 1 format of key value store tree objects.

12/Flux Role-based Access Control

This document describes the mechanisms used to secure Flux instances against unauthorized access and prevent privilege escalation and other attacks, while ensuring programs run with appropriate user credentials and are contained within their set of allocated resources.

13/Simple Process Manager Interface v1

The MPI process manager interface (PMI) version 1 is a de-facto standard API and wire protocol for communication between MPI runtimes and resource managers. It was added to the MPICH2 MPI-2 reference implementation in late 2001, and has since been widely implemented, but was not officially standardized by the MPI Forum and has been only lightly documented. This RFC is an attempt to document PMI-1 to guide developers of resource managers that must support current and legacy MPI implementations.

14/Canonical Job Specification

A domain specific language based on YAML is defined to express the resource requirements and other attributes of one or more programs submitted to a Flux instance for execution. This RFC describes the canonical form of the jobspec language, which represents a request to run exactly one program.

15/Independent Minister of Privilege for Flux: The Security IMP

This specification describes Flux Security IMP, a privileged service used by multi-user Flux instances to launch, monitor, and control processes running as users other than the instance owner.

16/KVS Job Schema

This specification describes the format of data stored in the KVS for Flux jobs.

18/KVS Event Log Format

A log format is defined that can be used to log job state transitions and other date-stamped events.

19/Flux Locally Unique ID (FLUID)

This specification describes a scheme for a distributed, uncoordinated flux locally unique ID service that generates 64 bit k-ordered, unique identifiers that are a combination of timestamp since some epoch, generator id, and sequence number. The scheme is used to generate Flux job IDs.

20/Resource Set Specification Version 1

This specification defines the version 1 format of the resource-set representation or R in short.

21/Job States and Events Version 1

This specification describes Flux job states and the events that trigger job state transitions.

22/Idset String Representation

This specification describes a compact form for expressing a set of non-negative, integer ids.

23/Flux Standard Duration

This specification describes a standard form for time duration.

24/Flux Job Standard I/O Version 1

This specification describes the format used to represent standard I/O streams in the Flux KVS.

25/Job Specification Version 1

Version 1 of the domain specific job specification language canonically defined in RFC14.

26/Job Dependency Specification

An extension to the canonical jobspec designed to express the dependencies between one or more programs submitted to a Flux instance for execution.

27/Flux Resource Allocation Protocol Version 1

This specification describes Version 1 of the Flux Resource Allocation Protocol implemented by the job manager and a compliant Flux scheduler.

28/Flux Resource Acquisition Protocol Version 1

This specification describes the Flux service that schedulers use to acquire exclusive access to resources and monitor their ongoing availability.

29/Hostlist Format

This specification describes the Flux implementation of the Hostlist Format – a compressed representation of lists of hostnames.

30/Job Urgency

This specification describes the Flux job urgency parameter.

31/Job Constraints Specification

This specification describes an extensible format for the description of job constraints.

32/Flux Job Execution Protocol Version 1

This specification describes Version 1 of the Flux Execution Protocol implemented by the job manager and job execution system.

33/Flux Job Queues

This specification describes Flux Job Queues. A Flux Job queue is a named, user-visible container for job requests sorted by priority.

34/Flux Task Map

The Flux Task Map is a compact mapping between job task ranks and node IDs.

35/Constraint Query Syntax

The Constraint Query Syntax describes a simple text-based syntax for generating JSON objects in the format described in RFC 31.

36/Submission Directives

This specification defines a method for embedding job submission options and other directives in files.

37/File Archive Format

The File Archive Format defines a JSON representation of a set or list of file system objects.

38/Flux Security Key Value Encoding

The Flux Security Key Value Encoding is a serialization format for a series of typed key-value pairs.

39/Flux Security Signature

The Flux Security Signature is a NUL terminated string that represents content secured with a digital signature.

40/Fluxion Resource Set Extension

This specification defines the data format used by the Fluxion scheduler to store resource graph data in RFC 20 R version 1 objects.

41/Job Information Service

The Flux Job Information Service provides proxy access to KVS job information for guest users.

42/Subprocess Server Protocol

The subprocess server protocol is used for execution, monitoring, and standard I/O management of remote processes.

43/Job List Service

The Flux Job List Service provides read-only summary information for jobs.