amiRemove Ruby dependencies from Jenkins node.Karsten Jeschkies3 days ago
benchmarkFixes post-revert of Kamon (#5275)(#4012)Jason Gilanfarr1 month ago
binJenkins can submit Phabricator Reviews to a Target BranchJason Gilanfarr4 days ago
docsProvide S3 Credentials via the default AWS provider chain.Matthias Veit2 days ago
examplesUnified Mesos Containerizer support (#4088)Bernd Mathiske8 months ago
mesos-simulationSwitch tests to use SSE event stream instead of webhooksTim Harper28 days ago
plugin-interface/src/main/scala/mesosphere/marathon/pluginNetworking API overhaulJames DeFelice1 month ago
projectProvide S3 Credentials via the default AWS provider chain.Matthias Veit2 days ago
scriptsConvert test coverage to the phabricator format in sbt.Jason Gilanfarr3 days ago
srcBackup & Restore storage versionMatthias Veit2 days ago
testsswitched all the marathon on marathon and version stuff to shakedownKen Sipe2 days ago
.arcconfigUpdate arcconfig to refer to the correct repository (#4486)Jason Gilanfarr7 months ago
.dockerignoredockerignore: Ignore morePeter Kolloch1 year ago
.gitignoreDelete Event Subscriber endpoint.Jason Gilanfarr2 days ago
.python-versionmarathon app scale and si tests plus podsKen Sipe5 months ago
.sbtoptsNew Persistence API with higher scalability limits (#4178)Jason Gilanfarr8 months ago
.travis.ymlNew Persistence API with higher scalability limits (#4178)Jason Gilanfarr8 months ago
JenkinsfileRevert "Minor cleanup of Jenkinsfile/"Jason Gilanfarr2 days ago
Jenkinsfile.scalenew node type for graphsKen Sipe1 month ago
Jenkinsfile.siAdd automated MoM-EE SI testsAleksey Dukhovniy1 month ago
LICENSELicense updateFlorian Leibert3 years ago
README.mdRevert "Minor cleanup of Jenkinsfile/"Jason Gilanfarr2 days ago
build.sbtRevert "Minor cleanup of Jenkinsfile/"Jason Gilanfarr2 days ago
changelog.mdDelete Event Subscriber endpoint.Jason Gilanfarr2 days ago
index.mdadd DC/OS slashsascala6 months ago
marathon.groovyRevert "Minor cleanup of Jenkinsfile/"Jason Gilanfarr2 days ago
review.pyQuery Phabricator and statistics for reviews last and this month.jeschkies1 month ago

Marathon Build Status Issues

Marathon is a production-proven Apache Mesos framework for container orchestration. DC/OS is the easiest way to start using Marathon. Issues are tracked in JIRA.

Marathon provides a REST API for starting, stopping, and scaling applications. Marathon is written in Scala and can run in highly-available mode by running multiple copies. The state of running tasks gets stored in the Mesos state abstraction.

Marathon is a meta framework: you can start other Mesos frameworks such as Chronos or Storm with it to ensure they survive machine failures. It can launch anything that can be launched in a standard shell. In fact, you can even start other Marathon instances via Marathon.

Since Marathon version 0.7.0 and Mesos 0.20.0, you can deploy, run and scale Docker containers easily with native support.


  • HA -- run any number of Marathon schedulers, but only one gets elected as leader; if you access a non-leader, your request gets proxied to the current leader
  • Constraints - e.g., only one instance of an application per rack, node, etc.
  • Service Discovery & Load Balancing via HAProxy or the events API (see below).
  • Health Checks: check your application's health via HTTP or TCP checks.
  • Event Subscription lets you supply an HTTP endpoint to receive notifications, for example to integrate with an external load balancer.
  • Marathon UI
  • JSON/REST API for easy integration and scriptability
  • Basic Auth and SSL
  • Metrics: query them at /metrics in JSON format or push them to graphite/statsd/datadog.


Marathon documentation is available on the Marathon GitHub pages site.

Documentation for installing and configuring the full Mesosphere stack including Mesos and Marathon is available on the Mesosphere website.

Issue Tracking

Marathon uses JIRA to track issues. You can browse existing issues or file a new issue with your GitHub account.

Note for users of GitHub issues: All existing issues have been migrated and closed, and a reference to the related JIRA has been added as a comment. We leave the GitHub issues available for reference. Going forward please use JIRA always.


We heartily welcome external contributions to Marathon's documentation. Documentation should be committed to the master branch and published to our GitHub pages site using the instructions in docs/

Setting Up And Running Marathon


Marathon has the following compile-time dependencies:

  • sbt - A build tool for scala. You can find the instructions for installing sbt for Mac OS X and Linux over here.
  • JDK 1.8+

For run-time, Marathon has the following dependencies:

  • libmesos - JNI bindings for talking to Apache Mesos master. Look at the Install Mesos section for instructions to get libmesos.
  • Apache Zookeeper - You can have a spearate Zookeeper installation specifically for Marathon, or you can use the same Zookeeper used by Mesos.


Getting started with DC/OS

The by far easiest way to get Marathon running is to use DC/OS. Marathon is pre-bundled into DC/OS.

Install Mesos

Marathon requires libmesos, a shared object library, that contains JNI bindings for Marathon to talk to the Mesos master. libmesos comes as part of the Apache Mesos installation. There are two options for installing Apache Mesos.

Installing Mesos from prepackaged releases

Instructions on how to install prepackaged releases of Mesos are available in the Marathon docs.

Building Mesos from source

NOTE: Choose this option only if building Marathon from source, else there might be version incompatibility between pre-packaged releases of Marathon and Mesos built from source.

You can find the instructions for compiling Mesos from source in the Apache Mesos getting started docs. If you want Mesos to install libraries and executables in a non-default location use the --prefix option during configuration as follows:

./configure --prefix=<path to Mesos installation>

The make install will install libmesos ( on Linux and libmesos.dylib on Mac OS X) in the install directory.

Install Marathon

Instructions on how to install prepackaged releases are available in the Marathon docs. Alternatively, you can build Marathon from source.

Building from Source
  1. To build Marathon from source, check out this repo and use sbt to build a JAR:

    git clone
    cd marathon
    sbt assembly
  2. Run ./bin/build-distribution to package Marathon as an executable JAR (optional).

Running in Development Mode

Mesos local mode allows you to run Marathon without launching a full Mesos cluster. It is meant for experimentation and not recommended for production use. Note that you still need to run ZooKeeper for storing state. The following command launches Marathon on Mesos in local mode. Point your web browser to http://localhost:8080 to see the Marathon UI.

./bin/start --master local --zk zk://localhost:2181/marathon

For more information on how to run Marathon in production and configuration options, see the Marathon docs.

Developing Marathon

See the documentation on how to run Marathon locally inside a virtual machine.

Running in Development Mode on Docker

  • Note: Currently the Docker container fails due to strange behavior from the latest Mesos version. There will be an error about work_dir that is still unresolved, much like this:

      Failed to start a local cluster while loading agent flags from the environment: Flag 'work_dir' is required, but it was not provided

Build it:

mesosVersion=$(sed -n 's/^.*MesosDebian = "\(.*\)"/\1/p' <./project/Dependencies.scala)
docker build -t marathon-head --build-arg MESOS_VERSION=$mesosVersion .

A running zookeeper instance is required, if there isn't one already available, there is a docker image available for this:

docker run --name some-zookeeper --restart always -d zookeeper

Run it with zookeeper container:

docker run --link some-zookeeper:zookeeper marathon-head --master local --zk zk://zookeeper:2181/marathon

Or run it without zookeeper container:

docker run marathon-head --master local --zk zk://localhost:2181/marathon

If you want to inspect the contents of the Docker container:

docker run -it --entrypoint=/bin/bash marathon-head -s

Marathon UI

To develop on the web UI look into the instructions of the Marathon UI repository.

Marathon Clients

Companies using Marathon

Across all installations Marathon is managing applications on more than 100,000 nodes world-wide. These are some of the companies using it:

Not in the list? Open a pull request and add yourself!


Have you found an issue? Feel free to report it using our JIRA Issues page. In order to speed up response times, we ask you to provide as much information on how to reproduce the problem as possible. If the issue is related in any way to the web ui, we kindly ask you to use the gui label.

If you have questions, please post on the Marathon Framework Group email list. You can find Marathon support in the #marathon channel, and Mesos support in the #mesos channel, on freenode (IRC). The team at Mesosphere is also happy to answer any questions.

If you'd like to take part in design research and test new features in Marathon before they're released, please add your name to our UX Research list.


Marathon was created by Tobias Knaup and Florian Leibert and continues to be developed by the team at Mesosphere and by many contributors from the community.


YourKit, LLC

YourKit, LLC

YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.

About FluentSend Feedback