concourse/concourse
{ "createdAt": "2014-04-19T20:45:45Z", "defaultBranch": "master", "description": "Concourse is a container-based automation system written in Go. It's mostly used for CI/CD.", "fullName": "concourse/concourse", "homepage": "https://concourse-ci.org", "language": "Go", "name": "concourse", "pushedAt": "2025-11-26T21:21:38Z", "stargazersCount": 7664, "topics": [ "ci", "ci-cd", "concourse", "containerd", "containers", "continuous-delivery", "continuous-integration", "elm", "go", "pipelines", "runc" ], "updatedAt": "2025-11-26T17:13:16Z", "url": "https://github.com/concourse/concourse"}Concourse: the continuous thing-doer
Section titled “Concourse: the continuous thing-doer”Concourse is an automation system written in Go. It is most commonly used for CI/CD, and is built to scale to any kind of automation pipeline, from simple to complex.
![registry-image pipeline]!(screenshots/registry-image-pipeline.png)
Concourse is very opinionated about a few things: idempotency, immutability, declarative config, stateless workers, and reproducible builds.
Installation
Section titled “Installation”Concourse is distributed as a single concourse binary, available on the Releases page.
If you want to just kick the tires, jump ahead to the Quick Start.
In addition to the concourse binary, there are a few other supported formats.
Consult their GitHub repos for more information:
Quick Start
Section titled “Quick Start”$ wget https://concourse-ci.org/docker-compose.yml$ docker-compose up -dCreating docs_concourse-db_1 ... doneCreating docs_concourse_1 ... doneConcourse will be running at http://localhost:8080.
You can log in with the username/password as test/test.
Next, install fly by downloading it from the web UI at
http://localhost:8080/download-fly and
target your local Concourse as the test user:
$ fly -t ci login -c http://localhost:8080 -u test -p testlogging in to team 'main'
target savedYou can follow our Getting Started Tutorial to learn how to write Concourse pipelines.
Configuring a Pipeline
Section titled “Configuring a Pipeline”Concourse has no GUI for configuration. Instead, pipelines are defined in declarative YAML files:
resources:- name: booklit type: git source: {uri: "https://github.com/concourse/booklit"}
jobs:- name: unit plan: - get: booklit trigger: true - task: test file: booklit/ci/test.ymlMost operations are done via the accompanying fly CLI. If you’ve got Concourse
installed, try saving the above example
as booklit.yml, target your Concourse
instance, and then run:
fly -t ci set-pipeline -p booklit -c booklit.ymlThese pipeline files are self-contained, making them easily portable between Concourse instances.
Learn More
Section titled “Learn More”- The Official Site for documentation, reference material, and example pipelines.
- The Getting Started Tutorial to learn the basics of Concourse
- See Concourse in action with our own pipelines
- Hang around in the GitHub discussions or in [Discord][discord]
- See what we’re working on the project board.
Contributing
Section titled “Contributing”Our user base is basically everyone that develops software (and wants it to work).
It’s a lot of work, and we need your help! If you’re interested, check out our [contributing docs]!(CONTRIBUTING.md).
[discord] !: https://discord.gg/MeRxXKW