Gopnik uses JSON format for config files with strict-json parsing library. This library disallows unexpected fields inside config sections; fileds starting with # are treated as comments:
{
	"Normal section": {
		"some": "values"
	},
	"#Ignored section": {
		"some": "values"
	}
}
One config can be used for all daemons and utilities, or separate configs can be specified. General config structure is:
{
	"#Daemons configuration": null,
	"Dispatcher": {
		"..."
	},
	"Render": {
		"..."
	},
	"Prerender": {
		"..."
	},
	"#Common configuration": null,
	"MetaSize": 8,
	"TileSize": 256,
	"CachePlugin": {
		"Plugin": "CacheProxyPlugin",
		"PluginConfig": {
			"..."
		}
	},
	"RenderPools": [
		"..."
	]
}
Dispatcher parameters:
| Name | Type | Default value | Description | 
|---|---|---|---|
| Addr | string | “:8080” | Main address | 
| DebugAddr | string | “:9080” | Address for monitoring | 
| HTTPReadTimeout | string | “60s” | HTTP client read timeout | 
| HTTPWriteTimeout | string | “60s” | HTTP client write timeout | 
| RequestTimeout | string | “600s” | Timeout for dynamic rendering request | 
| PingPeriod | string | “30s” | Ping gopniks every PingPeriod | 
| Threads | int | NumCPU | set GOMAXPROCS to Threads. -1 for NumCPU | 
| Logging | json.RawMessage | nil | see logging section below | 
| ClusterPlugin | app.PluginConfig | nil | dynamic rendering cluster plugin | 
| FilterPlugin | app.PluginConfig | nil | filter plugin for tags | 
| Name | Type | Default value | Description | 
|---|---|---|---|
| Addr | string | “:8090” | Main address | 
| DebugAddr | string | “:9090” | Address for monitoring | 
| Threads | int | 1 | set GOMAXPROCS to Threads. -1 for NumCPU | 
| HotCacheDelay | string | “0s” | Time period after cache set is done and before hot cache drop | 
| Logging | json.RawMessage | nil | see logging section below | 
| PerfLog | string | ”” | Performance log file | 
| Name | Type | Default value | Description | 
|---|---|---|---|
| DebugAddr | string | “:8097” | Address for monitoring | 
| UIAddr | string | “:8088” | WebUI address | 
| Threads | int | 1 | set GOMAXPROCS to Threads. -1 for NumCPU | 
| Logging | json.RawMessage | nil | see logging section below | 
| PerfLog | string | ”” | Performance log file | 
| Slaves | app.PluginConfig | nil | Cluster of slaves | 
| RequestTimeout | string | “1h” | Timeout for request to gopnik | 
| NodeQueueSize | int | 100 | Number of parallel requests per node | 
//There are some kind of plugins: cache, cluster, tag filter and monitoring. //Options requires plugin look like this:
Different kinds of plugins are: cache, cluster, tag filter and monitoring. Some options require plugins to be used. They have the following fields:
{
	"Plugin": "...",
	"PluginConfig": {
		"..."
	}
}
See default plugins description for details.
RenderPools section is a list of different renders configuration. Gopnik will use first relevant render from top. Each render pool is discribed by the following parameters:
| Name | Type | Default value | Description | 
|---|---|---|---|
| Cmd | []string | nil | Slave render command line. See details below | 
| MinZoom | uint | 0 | Minimum allowed zoom | 
| MaxZoom | uint | 0 | Maximum allowed zoom | 
| Tags | []string | nil | Render to be used only when request have all tags from list | 
| PoolSize | uint | 0 | Number of render instances | 
| HPQueueSize | uint | 0 | Size of high priority task queue | 
| LPQueueSize | uint | 0 | Size of task low priority queue | 
| RenderTTL | uint | 0 | Restart render after RenderTTL completed tasks | 
| ExecutionTimeout | string | ”” | Timeout for one request | 
Command line options for default render slave:
| Argument | Type | Default value | Description | 
|---|---|---|---|
| -stylesheet | string | ”” | Path to mapnik xml stylesheet | 
| -tileSize | uint | 256 | Tile size in pixels | 
| -bufferSize | int | -1 | Size of metatile buffer | 
| -fontsPath | []string | nil | List of font paths | 
| -pluginsPath | string | nil | Mapnik plugins path | 
| -scaleFactor | float64 | 1.0 | Scale factor. Commonly equals (slave tile size) / (gopnik’s tile size) | 
| -imageFormat | string | “png8” | Mapnik image format (e.g. “png8” or “png24”) | 
Each daemon has logging section with followig options:
| Name | Type | Default value | Description | 
|---|---|---|---|
| Backend | string | ”” | Backend for loggin (“Console”, “Syslog” or empty) | 
| Level | string | ”” | Log level (“Critical”, “Error”, “Warning”, “Notice”, “Info”, “Debug”) | 
| Format | string | ”[%{level}] %{message}” | Log format. See go-logging page for details | 
| Options | json.RawMessage | nil | Backend options | 
Console backend writes log direct to stderr.
| Name | Type | Default value | Description | 
|---|---|---|---|
| Color | bool | false | Use color output | 
Syslog logger backend connects to the syslog daemon using UNIX sockets with given prefix. If prefix is not specified, it will be derived from the launched command.
| Name | Type | Default value | Description | 
|---|---|---|---|
| Prefix | string | ”” | Syslog prefix | 
In common section of config you can set list of metric exporters.
{
	"MonitoringPlugins": [
		{
			"..."
		},
		{
			"..."
		}
	]
}
Only graphite exporter are available by default. Check default plugins description page for details.