Simple and Scalable

Rather than a myriad of checkboxes, pipelines are defined as a single declarative config file, composing together just three core concepts.

As your project grows, your pipeline will grow with it, and remain understandable.

value prop
value prop

Streamlined UI

Concourse's user interface helps you find out what you need to know about your builds as quickly as possible.

For a live example, see Concourse's own pipeline.

Dependable Results

Concourse controls the inputs to your pipeline so that the results are repeatable every time.

Rather than sharing state, every task runs in its own container, controlling its own dependencies.

Local changes can be tested with the Fly CLI, allowing you to see if they would succeed or fail in your pipeline ahead of time.

value prop
value prop


Interacting with the world is a crucial part of any pipeline. Concourse expresses these interactions as Resources, allowing you to delete your boring plumbing code and focus on your interesting code instead.

Concourse works out-of-the-box with Git repositories, S3 buckets, and other common external services. Custom resource types allow you to extend your pipeline with support for anything else.

Getting Started Takes 5 Minutes

  • 3 min

    Spin Up a Concourse

    Install the BOSH CLI, then run:

    The web server will be running at

    1 min

    Save hello.yml with this example pipeline:

    - name: hello-world
      - task: say-hello
          platform: linux
            type: docker-image
            source: {repository: ubuntu}
            path: echo
            args: ["Hello, world!"]

    1 sec

    Push to Concourse

    fly -t lite login -c
    fly -t lite set-pipeline -p hello-world -c hello.yml

    If you refresh the main page, you should now see the world's tiniest pipeline!


Come fly the friendly CI!

Get Started

To chit chat, ask for help, or offer your own, join us in Slack.