Freight is a service which aims to make application deployments better.
Python JavaScript CSS Dockerfile Shell HTML Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin Formatting changes Jun 16, 2017
docs Fixing docs Oct 21, 2015
freight fix(cloudbuilder): Handle the case where the build job hasn't begun yet Jul 30, 2018
hooks Initial commit Feb 4, 2015
migrations Split TaskConfig off of App Mar 8, 2016
static fixes #125 Oct 12, 2017
templates webpack flask stuff Aug 16, 2017
tests Fix missing quotes and format strings in test (#145) Jul 17, 2018
.babelrc Upgraded Webpack to 2.2.0 and Webpack-dev-server to ^2.0.0 (#111) Jul 13, 2017
.buildpacks Switch to redis buildpack Oct 13, 2015
.dockerignore Ignore local node_modules folder Jul 9, 2018
.gitignore Create cloud builder Check inside of Freight (#140) Jul 16, 2018
.travis.yml pin travis to node 4.7.0 and see what happens Jun 4, 2018
CHANGES Initial sphinx docs Mar 3, 2015
Dockerfile Add kubectl Jul 9, 2018
LICENSE Initial commit Feb 4, 2015
Makefile Makefile with validate-heroku Jun 14, 2017
Procfile deleted webpack from Procfile Jun 8, 2017 Add development Procfile. Jun 5, 2017
README.rst Convert readthedocs links for their .org -> .io migration for hosted … Jun 11, 2016
alembic.ini Initial commit Feb 4, 2015
app.json Fix description of some configuration variables Aug 12, 2015 Add notification debounce Aug 4, 2015
docker-compose.yml Fix up docker support and optimize image Jan 13, 2016 rename gcr-auth to auth-helpers Jun 4, 2018
package.json cleaning up branch Aug 7, 2017
requirements-test.txt Export requirements in external files Sep 2, 2015
requirements.txt upgrade psycopg2 to allow for 10.1 in postgres version string Jun 4, 2018
setup.cfg ds => freight Feb 20, 2015 Merge pull request #46 from thoas/master Sep 3, 2015
webpack.config.js config webpack to serve hashed styles. Aug 16, 2017



This project is a work in progress and is not yet intended to be production ready.

This service is intended to augment your existing deployment processes. It should improve on what you may already have, or help you fill in what you're missing.

The overarching goal of the system is to provide easy manual and automated deploys, with a consistent central view of the world. It's heavily inspired by GitHub's processes (and its Heaven project) as well as personal experiences of internal tools from members of the Sentry team.

It's not designed to replace something like Heroku, or other PaaS services, but rather to work with your existing processes, no matter what they are.


Current Features

  • Works behind-firewall (no inbound traffic)
  • Multiple applications. All configuration is unique per application
  • Per-environment deployments (i.e. different versions on staging and production)
  • Workspace management (i.e. whatever your deploy command is may be generating local artifacts, those should be cleaned up)
  • Support for at least Fabric-based (simple shell commands) and Heroku-based deploys
  • API-accessible deploy logs
  • Hubot integration (starting deploys)
  • Slack integration (notifying when deploys start/finish/fail)
  • Sentry integration (release tracking, error reporting)
  • Integration with GitHub status checks (i.e. did Circle CI pass on sha XXX)
  • A GUI to get an overview of deploy status and history


What's coming up:


  • Release state management (know what versions are active where, and provide a historical view)
  • Environment locking (i.e. prevent people from deploying to an environment)
  • Automatic deploys (i.e. by looking for VCS changes)
  • Actions within the GUI (deploy, cancel)


  • Deploy queue (i.e. cramer queued sha XXX, armin queued sha YYY)

V2 and Beyond

Machine-consistency service

We could run a service on each machine that would check-in with the master. This would record the current version of the application. The service would be configured with a set of apps (their environment info, how to get app version). The service could also be aware of "how do I deploy a version" which could assist in pull-based deploys.