[Horde](../../../README.md) > [Configuration](../../Config.md) > *.project.json
# *.project.json
Stores configuration for a project
Name | Description
---- | -----------
`id` | `string`
The project id
`name` | `string`
Name for the new project
`path` | `string`
Direct include path for the project config. For backwards compatibility with old config files when including from a GlobalConfig object.
`include` | [ConfigInclude](#configinclude)`[]`
Includes for other configuration files
`macros` | [ConfigMacro](#configmacro)`[]`
Macros within the global scope
`order` | `integer`
Order of this project on the dashboard
`logo` | `string`
Path to the project logo
`logoDarkTheme` | `string`
Optional path to the project logo for the dark theme
`pools` | [PoolConfig](#poolconfig)`[]`
List of pools for this project
`categories` | [ProjectCategoryConfig](#projectcategoryconfig)`[]`
Categories to include in this project
`jobOptions` | [JobOptions](#joboptions)
Default settings for executing jobs
`workspaceTypes` | `string` `->` [WorkspaceConfig](#workspaceconfig)
Default workspace types for streams These are added to the list of each stream's workspace types.
`telemetryStoreId` | `string`
Telemetry store for Horde data for this project
`streams` | [StreamConfig](Streams.md)`[]`
List of streams
`artifactTypes` | [ArtifactTypeConfig](#artifacttypeconfig)`[]`
Permissions for artifact types
`acl` | [AclConfig](#aclconfig)
Acl entries
## ConfigInclude
Directive to merge config data from another source
Name | Description
---- | -----------
`path` | `string`
Path to the config data to be included. May be relative to the including file's location.
## ConfigMacro
Declares a config macro
Name | Description
---- | -----------
`name` | `string`
Name of the macro property
`value` | `string`
Value for the macro property
## PoolConfig
Mutable configuration for a pool
Name | Description
---- | -----------
`id` | `string`
Unique id for this pool
`base` | `string`
Base pool config to copy settings from
`name` | `string`
Name of the pool
`condition` | `string`
Condition for agents to automatically be included in this pool
`properties` | `string` `->` `string`
Arbitrary properties related to this pool
`color` | [PoolColor](#poolcolor-enum)
Color to use for this pool on the dashboard
`enableAutoscaling` | `boolean`
Whether to enable autoscaling for this pool
`minAgents` | `integer`
The minimum number of agents to keep in the pool
`numReserveAgents` | `integer`
The minimum number of idle agents to hold in reserve
`conformInterval` | `string`
Interval between conforms. If zero, the pool will not conform on a schedule.
`scaleOutCooldown` | `string`
Cooldown time between scale-out events
`scaleInCooldown` | `string`
Cooldown time between scale-in events
`shutdownIfDisabledGracePeriod` | `string`
Time to wait before shutting down an agent that has been disabled
`sizeStrategy` | [PoolSizeStrategy](#poolsizestrategy-enum)
`sizeStrategies` | [PoolSizeStrategyInfo](#poolsizestrategyinfo)`[]`
List of pool sizing strategies for this pool. The first strategy with a matching condition will be picked.
`fleetManagers` | [FleetManagerInfo](#fleetmanagerinfo)`[]`
List of fleet managers for this pool. The first strategy with a matching condition will be picked. If empty or no conditions match, a default fleet manager will be used.
`leaseUtilizationSettings` | [LeaseUtilizationSettings](#leaseutilizationsettings)
Settings for lease utilization pool sizing strategy (if used)
`jobQueueSettings` | [JobQueueSettings](#jobqueuesettings)
Settings for job queue pool sizing strategy (if used)
`computeQueueAwsMetricSettings` | [ComputeQueueAwsMetricSettings](#computequeueawsmetricsettings)
Settings for job queue pool sizing strategy (if used)
## PoolColor (Enum)
Color to use for labels of this pool
Name | Description
---- | -----------
`Default` |
`Blue` |
`Orange` |
`Green` |
`Gray` |
## PoolSizeStrategy (Enum)
Available pool sizing strategies
Name | Description
---- | -----------
`LeaseUtilization` | Strategy based on lease utilization
`JobQueue` | Strategy based on size of job build queue
`NoOp` | No-op strategy used as fallback/default behavior
`ComputeQueueAwsMetric` | A no-op strategy that reports metrics to let an external AWS auto-scaling policy scale the fleet
`LeaseUtilizationAwsMetric` | A no-op strategy that reports metrics to let an external AWS auto-scaling policy scale the fleet
## PoolSizeStrategyInfo
Metadata for configuring and picking a pool sizing strategy
Name | Description
---- | -----------
`type` | [PoolSizeStrategy](#poolsizestrategy-enum)
Strategy implementation to use
`condition` | `string`
Condition if this strategy should be enabled (right now, using date/time as a distinguishing factor)
`config` | `object`
Configuration for the strategy, serialized as JSON
`extraAgentCount` | `integer`
Integer to add after pool size has been calculated. Can also be negative.
## FleetManagerInfo
Metadata for configuring and picking a fleet manager
Name | Description
---- | -----------
`type` | [FleetManagerType](#fleetmanagertype-enum)
Fleet manager type implementation to use
`condition` | `string`
Condition if this strategy should be enabled (right now, using date/time as a distinguishing factor)
`config` | `object`
Configuration for the strategy, serialized as JSON
## FleetManagerType (Enum)
Available fleet managers
Name | Description
---- | -----------
`Default` | Default fleet manager
`NoOp` | No-op fleet manager.
`Aws` | Fleet manager for handling AWS EC2 instances. Will create and/or terminate instances from scratch.
`AwsReuse` | Fleet manager for handling AWS EC2 instances. Will start already existing but stopped instances to reuse existing EBS disks.
`AwsRecycle` | Fleet manager for handling AWS EC2 instances. Will start already existing but stopped instances to reuse existing EBS disks.
`AwsAsg` | Fleet manager for handling AWS EC2 instances. Uses an EC2 auto-scaling group for controlling the number of running instances.
## LeaseUtilizationSettings
Lease utilization sizing settings for a pool
Name | Description
---- | -----------
`sampleTimeSec` | `integer`
Time period for each sample
`numSamples` | `integer`
Number of samples to collect for calculating lease utilization
`numSamplesForResult` | `integer`
Min number of samples for a valid result
`minAgents` | `integer`
The minimum number of agents to keep in the pool
`numReserveAgents` | `integer`
The minimum number of idle agents to hold in reserve
## JobQueueSettings
Job queue sizing settings for a pool
Name | Description
---- | -----------
`scaleOutFactor` | `number`
Factor translating queue size to additional agents to grow the pool with The result is always rounded up to nearest integer. Example: if there are 20 jobs in queue, a factor 0.25 will result in 5 new agents being added (20 * 0.25)
`scaleInFactor` | `number`
Factor by which to shrink the pool size with when queue is empty The result is always rounded up to nearest integer. Example: when the queue size is zero, a default value of 0.9 will shrink the pool by 10% (current agent count * 0.9)
`samplePeriodMin` | `integer`
How far back in time to look for job batches (that potentially are in the queue)
`readyTimeThresholdSec` | `integer`
Time spent in ready state before considered truly waiting for an agent
A job batch can be in ready state before getting picked up and executed. This threshold will help ensure only batches that have been waiting longer than this value will be considered.
## ComputeQueueAwsMetricSettings
Settings for
Name | Description
---- | -----------
`computeClusterId` | `string`
Compute cluster ID to observe
`namespace` | `string`
AWS CloudWatch namespace to write metrics in
## ProjectCategoryConfig
Information about a category to display for a stream
Name | Description
---- | -----------
`name` | `string`
Name of this category
`row` | `integer`
Index of the row to display this category on
`showOnNavMenu` | `boolean`
Whether to show this category on the nav menu
`includePatterns` | `string[]`
Patterns for stream names to include
`excludePatterns` | `string[]`
Patterns for stream names to exclude
## JobOptions
Options for executing a job
Name | Description
---- | -----------
`executor` | `string`
Name of the executor to use
`useWine` | `boolean`
Whether to execute using Wine emulation on Linux
`runInSeparateProcess` | `boolean`
Executes the job lease in a separate process
`workspaceMaterializer` | `string`
What workspace materializer to use in WorkspaceExecutor. Will override any value from workspace config.
`container` | [JobContainerOptions](#jobcontaineroptions)
Options for executing a job inside a container
`expireAfterDays` | `integer`
Number of days after which to expire jobs
`driver` | `string`
Name of the driver to use
## JobContainerOptions
Options for executing a job inside a container
Name | Description
---- | -----------
`enabled` | `boolean`
Whether to execute job inside a container
`imageUrl` | `string`
Image URL to container, such as "quay.io/podman/hello"
`containerEngineExecutable` | `string`
Container engine executable (docker or with full path like /usr/bin/podman)
`extraArguments` | `string`
Additional arguments to pass to container engine
## WorkspaceConfig
Information about a workspace type
Name | Description
---- | -----------
`base` | `string`
`cluster` | `string`
Name of the Perforce server cluster to use
`serverAndPort` | `string`
The Perforce server and port (eg. perforce:1666)
`userName` | `string`
User to log into Perforce with (defaults to buildmachine)
`password` | `string`
Password to use to log into the workspace
`identifier` | `string`
Identifier to distinguish this workspace from other workspaces. Defaults to the workspace type name.
`stream` | `string`
Override for the stream to sync
`view` | `string[]`
Custom view for the workspace
`incremental` | `boolean`
Whether to use an incrementally synced workspace
`useAutoSdk` | `boolean`
Whether to use the AutoSDK
`autoSdkView` | `string[]`
View for the AutoSDK paths to sync. If null, the whole thing will be synced.
`method` | `string`
Method to use when syncing/materializing data from Perforce
`minScratchSpace` | `integer`
Minimum disk space that must be available *after* syncing this workspace (in megabytes) If not available, the job will be aborted.
`conformDiskFreeSpace` | `integer`
Threshold for when to trigger an automatic conform of agent. Measured in megabytes free on disk. Set to null or 0 to disable.
## ArtifactTypeConfig
Configuration for an artifact
Name | Description
---- | -----------
`name` | `string`
Legacy 'Name' property
`type` | `string`
Name of the artifact type
`acl` | [AclConfig](#aclconfig)
Acl for the artifact type
`keepCount` | `integer`
Number of artifacts to retain
`keepDays` | `integer`
Number of days to retain artifacts of this type
`namespaceId` | `string`
Storage namespace to use for this artifact types
## AclConfig
Parameters to update an ACL
Name | Description
---- | -----------
`entries` | [AclEntryConfig](#aclentryconfig)`[]`
Entries to replace the existing ACL
`profiles` | [AclProfileConfig](#aclprofileconfig)`[]`
Defines profiles which allow grouping sets of actions into named collections
`inherit` | `boolean`
Whether to inherit permissions from the parent ACL
`exceptions` | `string[]`
List of exceptions to the inherited setting
## AclEntryConfig
Individual entry in an ACL
Name | Description
---- | -----------
`claim` | [AclClaimConfig](#aclclaimconfig)
Name of the user or group
`actions` | `string[]`
Array of actions to allow
`profiles` | `string[]`
List of profiles to grant
## AclClaimConfig
New claim to create
Name | Description
---- | -----------
`type` | `string`
The claim type
`value` | `string`
The claim value
## AclProfileConfig
Configuration for an ACL profile. This defines a preset group of actions which can be given to a user via an ACL entry.
Name | Description
---- | -----------
`id` | `string`
Identifier for this profile
`actions` | `string[]`
Actions to include
`excludeActions` | `string[]`
Actions to exclude from the inherited actions
`extends` | `string[]`
Other profiles to extend from