Concourse is configured through YAML files. The server reads its
configuration from concourse.yaml in the conf/ directory, and
the client drivers read connection settings from
concourse_client.yaml.
For local development, create a concourse.yaml.dev file in the
same directory. Settings in the .dev file override those in the
base concourse.yaml. The .dev file should be excluded from
version control.
Legacy Format
Concourse also supports the older .prefs format
(concourse.prefs). YAML files are preferred and take
precedence when both exist, with one exception:
concourse.prefs.dev takes precedence over
concourse.yaml to honor the convention that local
development overrides always win. Client configuration
(concourse_client.yaml vs concourse_client.prefs)
follows the same YAML-wins rule without the dev-overlay
exception.
The batch transporter processes large batches of data per pass and
indexes without blocking operations until merge time. This
provides higher overall throughput.
The streaming transporter processes smaller batches more
frequently. It provides consistent throughput but may cause
performance degradation under high concurrent load.
When enabled, compaction automatically merges and reorganizes data
files in the background to improve read performance. This runs
continuously without disrupting reads or writes.
When enabled, Concourse uses multiple threads to read data from
disk concurrently. This is most beneficial for data that exceeds
the in-memory cache, especially search indexes.
The external bootstrapper allows plugins compiled against newer
Java versions to work with older servers (e.g., a Java 21 plugin
on a Java 8 server). See Plugins for details.
Client drivers read connection settings from
concourse_client.yaml (or concourse_client.prefs). This file
can be placed in the working directory or specified explicitly.
// Java// Connect using default config fileConcourseconcourse=Concourse.connect();// Connect using a specific config fileConcourseconcourse=Concourse.connect(Paths.get("/path/to/concourse_client.yaml"));// Or use a pre-loaded configuration handlerConcourseClientConfigurationconfig=ConcourseClientConfiguration.from(Paths.get("/path/to/concourse_client.yaml"));Concourseconcourse=Concourse.connect(config);