Good things come
to those who dream.

Flexible policy, scalability to large clusters, and high-quality scheduling decisions need not be exclusive: Firmament's principled approach has you covered.

Find Out More

Good cluster scheduling is hard.

In our research on cluster scheduling, we learnt two things:

  1. Good decisions are important: for critical service applications, a single poor scheduling decision can have a major impact.
  2. Flexible policies are key: different users and applications have different scheduling needs, and it is important to tailor the scheduling policy to the workload.


Firmament is our answer to these challenges. It offers:

High-quality decisions

Using a min-cost optimisation over a graph, Firmament finds the best placement for each task or container in accordance with the scheduling policy.

Flexible, user-defined policies

By customizing the underlying graph and setting the costs on its edges via a callback interface, users can customize Firmament to apply their own policies.

Scalable sub-second decisions

Firmament's incremental min-cost, max-flow solver makes rapid, sub-second scheduling decisions even at Google scale (12k machines).

... and best of all, it's all open-source:

Get started!

How does it work?

Firmament is based on a graph-theoretic construct called a flow network, over which it runs a minimum-cost optimization. Unlike heuristic-driven schedulers, Firmament's approach is guaranteed to find the policy-optimal assignment of work to cluster resources.

The below visualization illustrates the principle using a simple example.
You can use the buttons to manipulate the cluster – keep clicking until they're grayed out!

Firmament works stand-alone, or within your cluster manager

There are several existing cluster managers, and we recognize that users want to use Firmament as a scheduler for their favourite cluster manager.


Our standalone cluster manager

Firmament comes with its own cluster manager. Originally built for research, it is a simple but flexible cluster manager written in C++, based on our experiences with Borg and Omega.


Project Poseidon

With Poseidon, we're bringing Firmament scheduling to Kubernetes: with an API-compatible scheduler plugin, you can choose between many different scheduling policies for your Kubernetes cluster.

Firmament is open-source software!

All of our code is open-source software under the Apache 2.0 license.

Get it from GitHub

Please file an issue if you encounter problems, or send us a pull request if you make changes!

Give me the details!

If you want to dive deeper, we have plenty of material for you!

OSDI paper image

OSDI 2016 paper

A peer-reviewed 14-page paper in the proceedings of OSDI.

Write-up image

Malte's PhD thesis

Firmament is described in detail in chapters 6-8 of a PhD thesis.

Write-up image

Ionel's PhD thesis

Chapters 5-6 of this PhD thesis look at Firmament's scalability in more detail.

Let's Get In Touch!

Want to find out even more, or have an interesting scheduling problem? Let us know!

Malte Schwarzkopf

Malte Schwarzkopf   

Ionel Gog

Ionel Gog

... with help from other folks at CamSaS.