{
  "settings": {
    "uploadMaxMb": {
      "key": "uploadMaxMb",
      "environment": "DEZFIL_UPLOAD_MAX_MB",
      "label": "Largest upload",
      "purpose": "Size cap for one uploaded file.",
      "defaultValue": 5120,
      "unit": "MB",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 102400
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "5120",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 5120,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "dataProcessingTimeoutS": {
      "key": "dataProcessingTimeoutS",
      "environment": "DEZFIL_DATA_PROCESSING_TIMEOUT_S",
      "label": "Data processing time limit",
      "purpose": "Time to receive one upload, and, counted apart, time for one data processing job, such as an import.",
      "defaultValue": 3600,
      "unit": "seconds",
      "write": {
        "kind": "integer",
        "min": 60,
        "max": 21600
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "3600",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 3600,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "remoteMaxMb": {
      "key": "remoteMaxMb",
      "environment": "DEZFIL_REMOTE_MAX_MB",
      "label": "Largest link import",
      "purpose": "Size cap for a URL or object-store import.",
      "defaultValue": 2048,
      "unit": "MB",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 102400
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "2048",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 2048,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "remoteTimeoutS": {
      "key": "remoteTimeoutS",
      "environment": "DEZFIL_REMOTE_TIMEOUT_S",
      "label": "Link import time limit",
      "purpose": "Time for one link import's whole download.",
      "defaultValue": 300,
      "unit": "seconds",
      "write": {
        "kind": "integer",
        "min": 10,
        "max": 3600
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "300",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 300,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "overtureMaxKm2": {
      "key": "overtureMaxKm2",
      "environment": "DEZFIL_OVERTURE_MAX_KM2",
      "label": "Overture area",
      "purpose": "The largest area one Overture import of places may cover; other themes may cover more or less, by how dense they are.",
      "defaultValue": 25000,
      "unit": "km²",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 1000000
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "25000",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 25000,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "osmMaxKm2": {
      "key": "osmMaxKm2",
      "environment": "DEZFIL_OSM_MAX_KM2",
      "label": "OpenStreetMap area",
      "purpose": "The largest area one OpenStreetMap import may cover.",
      "defaultValue": 10000,
      "unit": "km²",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 1000000
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "10000",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 10000,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "overpassTimeoutS": {
      "key": "overpassTimeoutS",
      "environment": "DEZFIL_OVERPASS_TIMEOUT_S",
      "label": "Overpass time limit",
      "purpose": "Time budget sent with every Overpass query.",
      "defaultValue": 60,
      "unit": "seconds",
      "write": {
        "kind": "integer",
        "min": 10,
        "max": 900
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "60",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 60,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "overpassMaxsizeMb": {
      "key": "overpassMaxsizeMb",
      "environment": "DEZFIL_OVERPASS_MAXSIZE_MB",
      "label": "Overpass response budget",
      "purpose": "Response budget sent to Overpass; twice this aborts locally.",
      "defaultValue": 512,
      "unit": "MB",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "512",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 512,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "overpassCacheHours": {
      "key": "overpassCacheHours",
      "environment": "DEZFIL_OVERPASS_CACHE_H",
      "label": "Overpass cache freshness",
      "purpose": "How long an Overpass response stays fresh.",
      "defaultValue": 24,
      "unit": "hours",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 720
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "24",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 24,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "overpassCacheMb": {
      "key": "overpassCacheMb",
      "environment": "DEZFIL_OVERPASS_CACHE_MB",
      "label": "Overpass cache size",
      "purpose": "Cache size budget, evicted oldest first.",
      "defaultValue": 2048,
      "unit": "MB",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "2048",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 2048,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "queryTimeoutS": {
      "key": "queryTimeoutS",
      "environment": "DEZFIL_QUERY_TIMEOUT_S",
      "label": "Query time limit",
      "purpose": "Time for one query, whether the SQL people run, a layer, an inspection, a preview or a published map.",
      "defaultValue": 60,
      "unit": "seconds",
      "write": {
        "kind": "integer",
        "min": 5,
        "max": 600
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "60",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 60,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "queryMemoryMb": {
      "key": "queryMemoryMb",
      "environment": "DEZFIL_QUERY_MEMORY_MB",
      "label": "Engine memory",
      "purpose": "Memory the engine that runs people's SQL may use, shared by every query.",
      "defaultValue": 2048,
      "unit": "MB",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "2048",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 2048,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "trustedMemoryMb": {
      "key": "trustedMemoryMb",
      "environment": "DEZFIL_TRUSTED_MEMORY_MB",
      "label": "Trusted engine memory",
      "purpose": "Memory the engine that imports and processes data may use; it may spill up to four times this to disk.",
      "defaultValue": 3072,
      "unit": "MB",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "3072",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 3072,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "previewRows": {
      "key": "previewRows",
      "environment": "DEZFIL_PREVIEW_ROWS",
      "label": "Rows shown in results",
      "purpose": "Row cap for result previews.",
      "defaultValue": 1000,
      "unit": "rows",
      "write": {
        "kind": "integer",
        "min": 10,
        "max": 100000
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "1000",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 2000,
      "source": "stored",
      "locked": false,
      "invalidOverride": false,
      "storedValue": 2000
    },
    "renderCapFeatures": {
      "key": "renderCapFeatures",
      "environment": "DEZFIL_RENDER_CAP_FEATURES",
      "label": "Features drawn per layer",
      "purpose": "The most features a layer draws, and the count past which a points layer is drawn from tiles.",
      "defaultValue": 250000,
      "unit": "features",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "250000",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 250000,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "renderCapBytes": {
      "key": "renderCapBytes",
      "environment": "DEZFIL_RENDER_CAP_BYTES",
      "label": "Bytes drawn per layer",
      "purpose": "The largest answer one layer may draw from, in bytes of uncompressed JSON.",
      "defaultValue": 134217728,
      "unit": "bytes",
      "parsing": "positive-integer",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "134217728",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 134217728,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "sliderPreviewRows": {
      "key": "sliderPreviewRows",
      "environment": "DEZFIL_SLIDER_PREVIEW_ROWS",
      "label": "Slider preview rows",
      "purpose": "Source points transferred for interactive slider previews.",
      "defaultValue": 50000,
      "unit": "rows",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "50000",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 50000,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "publishFreshnessS": {
      "key": "publishFreshnessS",
      "environment": "DEZFIL_PUBLISH_FRESHNESS_S",
      "label": "Published freshness",
      "purpose": "Cache window for published views.",
      "defaultValue": 30,
      "unit": "seconds",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "30",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 30,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "tileBuildTimeoutS": {
      "key": "tileBuildTimeoutS",
      "environment": "DEZFIL_TILE_BUILD_TIMEOUT_S",
      "label": "Tile build time limit",
      "purpose": "Time budget for each background tile-build stage.",
      "defaultValue": 600,
      "unit": "seconds",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "600",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 600,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "exportRenderTimeoutS": {
      "key": "exportRenderTimeoutS",
      "environment": "DEZFIL_EXPORT_RENDER_TIMEOUT_S",
      "label": "Time limit per image",
      "purpose": "Time for one image, its wait for a turn included.",
      "defaultValue": 90,
      "unit": "seconds",
      "write": {
        "kind": "integer",
        "min": 10,
        "max": 300
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "90",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 90,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "exportRequestTimeoutS": {
      "key": "exportRequestTimeoutS",
      "environment": "DEZFIL_EXPORT_REQUEST_TIMEOUT_S",
      "label": "Image request time limit",
      "purpose": "Deadline for each request made by the render page.",
      "defaultValue": 20,
      "unit": "seconds",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "20",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 20,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "exportRenderConcurrency": {
      "key": "exportRenderConcurrency",
      "environment": "DEZFIL_EXPORT_RENDER_CONCURRENCY",
      "label": "Images at once",
      "purpose": "Images the server draws at the same time.",
      "defaultValue": 2,
      "unit": "renders",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 8
      },
      "parsing": "positive-integer",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "2",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 2,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "toolAttachmentMaxMb": {
      "key": "toolAttachmentMaxMb",
      "environment": "DEZFIL_TOOL_ATTACHMENT_MAX_MB",
      "label": "Tool attachment size",
      "purpose": "The largest file a tool hands back to the assistant or an agent, such as an exported image.",
      "defaultValue": 32,
      "unit": "MB",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "32",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 32,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "assistantStepBudget": {
      "key": "assistantStepBudget",
      "environment": "DEZFIL_ASSISTANT_STEP_BUDGET",
      "label": "Assistant steps",
      "purpose": "Maximum model and tool steps per request.",
      "defaultValue": 20,
      "unit": "steps",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "20",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 20,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "assistantLookTimeoutS": {
      "key": "assistantLookTimeoutS",
      "environment": "DEZFIL_ASSISTANT_LOOK_TIMEOUT_S",
      "label": "Map check time limit",
      "purpose": "Time for one of the assistant's map checks, its wait for a turn included.",
      "defaultValue": 30,
      "unit": "seconds",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "30",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 30,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "assistantLookRetention": {
      "key": "assistantLookRetention",
      "environment": "DEZFIL_ASSISTANT_LOOK_RETENTION",
      "label": "Retained map checks",
      "purpose": "Map check pictures kept in memory, oldest dropped first; a restart clears them.",
      "defaultValue": 256,
      "unit": "images",
      "parsing": "positive-integer",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "256",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 256,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "assistantLookRetentionMb": {
      "key": "assistantLookRetentionMb",
      "environment": "DEZFIL_ASSISTANT_LOOK_RETENTION_MB",
      "label": "Map check storage",
      "purpose": "Memory the kept map check pictures may take.",
      "defaultValue": 96,
      "unit": "MB",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "96",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 96,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "geocodePaceMs": {
      "key": "geocodePaceMs",
      "environment": "DEZFIL_GEOCODE_PACE_MS",
      "label": "Address finder pace",
      "purpose": "Minimum request gap; zero means no gap.",
      "defaultValue": 1000,
      "unit": "milliseconds",
      "write": {
        "kind": "integer",
        "min": 0,
        "max": 60000
      },
      "parsing": "non-negative",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "1000",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 1000,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "geocodeMatchCacheHours": {
      "key": "geocodeMatchCacheHours",
      "environment": "DEZFIL_GEOCODE_MATCH_CACHE_HOURS",
      "label": "Address match freshness",
      "purpose": "How long matched addresses are cached.",
      "defaultValue": 720,
      "unit": "hours",
      "write": {
        "kind": "integer",
        "min": 24,
        "max": 8760
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "720",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 720,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "geocodeNoMatchCacheHours": {
      "key": "geocodeNoMatchCacheHours",
      "environment": "DEZFIL_GEOCODE_NO_MATCH_CACHE_HOURS",
      "label": "Unmatched address freshness",
      "purpose": "How long no-match answers are cached.",
      "defaultValue": 24,
      "unit": "hours",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "24",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 24,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "geocodeCacheMb": {
      "key": "geocodeCacheMb",
      "environment": "DEZFIL_GEOCODE_CACHE_MB",
      "label": "Address cache size",
      "purpose": "Size budget for cached geocoding answers.",
      "defaultValue": 64,
      "unit": "MB",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "64",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 64,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "isochronePaceMs": {
      "key": "isochronePaceMs",
      "environment": "DEZFIL_ISOCHRONE_PACE_MS",
      "label": "Travel-time pace",
      "purpose": "Minimum routing request gap; zero means no gap.",
      "defaultValue": 1000,
      "unit": "milliseconds",
      "write": {
        "kind": "integer",
        "min": 0,
        "max": 60000
      },
      "parsing": "non-negative",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "1000",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 1000,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "isochroneRequestTimeoutS": {
      "key": "isochroneRequestTimeoutS",
      "environment": "DEZFIL_ISOCHRONE_REQUEST_TIMEOUT_S",
      "label": "Travel-time request limit",
      "purpose": "Deadline for one routing exchange.",
      "defaultValue": 20,
      "unit": "seconds",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 120
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "20",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 20,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "isochroneCacheHours": {
      "key": "isochroneCacheHours",
      "environment": "DEZFIL_ISOCHRONE_CACHE_HOURS",
      "label": "Travel-time cache freshness",
      "purpose": "How long complete routing answers are cached.",
      "defaultValue": 168,
      "unit": "hours",
      "write": {
        "kind": "integer",
        "min": 24,
        "max": 8760
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "168",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 168,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "isochroneCacheMb": {
      "key": "isochroneCacheMb",
      "environment": "DEZFIL_ISOCHRONE_CACHE_MB",
      "label": "Travel-time cache size",
      "purpose": "Size budget for cached routing answers.",
      "defaultValue": 64,
      "unit": "MB",
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "64",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 64,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "geocodeRequestTimeoutS": {
      "key": "geocodeRequestTimeoutS",
      "environment": "DEZFIL_GEOCODE_REQUEST_TIMEOUT_S",
      "label": "Address request limit",
      "purpose": "Deadline for one geocoding exchange.",
      "defaultValue": 10,
      "unit": "seconds",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 120
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "10",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 10,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "operationTimeoutS": {
      "key": "operationTimeoutS",
      "environment": "DEZFIL_OPERATION_TIMEOUT_S",
      "label": "Time limit per run",
      "purpose": "Time for one tool run, not counting its wait for a turn.",
      "defaultValue": 600,
      "unit": "seconds",
      "write": {
        "kind": "integer",
        "min": 30,
        "max": 7200
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "600",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 600,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "operationConcurrency": {
      "key": "operationConcurrency",
      "environment": "DEZFIL_OPERATION_CONCURRENCY",
      "label": "Operation runs at once",
      "purpose": "Tool runs at the same time; they share the engine that runs people's SQL.",
      "defaultValue": 1,
      "unit": "runs",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 8
      },
      "parsing": "positive-integer",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "1",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 1,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "operationQueueMax": {
      "key": "operationQueueMax",
      "environment": "DEZFIL_OPERATION_QUEUE_MAX",
      "label": "Operation runs waiting",
      "purpose": "Tool runs that may wait for a turn.",
      "defaultValue": 20,
      "unit": "runs",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 200
      },
      "parsing": "positive-integer",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "20",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 20,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "operationHistoryPerSubject": {
      "key": "operationHistoryPerSubject",
      "environment": "DEZFIL_OPERATION_HISTORY_PER_SUBJECT",
      "label": "Run history depth",
      "purpose": "Runs kept in each run history, such as a workflow step's; its latest success is always kept.",
      "defaultValue": 20,
      "unit": "runs",
      "parsing": "positive-integer",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "documentedDefault": "20",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": 20,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "publicRateLimit": {
      "key": "publicRateLimit",
      "environment": "DEZFIL_PUBLIC_RATE_LIMIT",
      "label": "Requests per source",
      "purpose": "Requests one visitor may make to published maps, counted by network address across every published map.",
      "defaultValue": 60,
      "unit": "per 10 seconds",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 10000
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "60",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 60,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "publicTileRateLimit": {
      "key": "publicTileRateLimit",
      "environment": "DEZFIL_PUBLIC_TILE_RATE_LIMIT",
      "label": "Tile requests per source",
      "purpose": "Tile requests one visitor may make to published maps, counted by network address across every published map.",
      "defaultValue": 600,
      "unit": "per 10 seconds",
      "write": {
        "kind": "integer",
        "min": 1,
        "max": 100000
      },
      "parsing": "positive",
      "kind": "number",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "documentedDefault": "600",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "value": 600,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "assistantAutoCheck": {
      "key": "assistantAutoCheck",
      "environment": "DEZFIL_ASSISTANT_AUTO_CHECK",
      "kind": "boolean",
      "label": "Automatic map check",
      "purpose": "Check the rendered map after an assistant turn changes it.",
      "defaultValue": true,
      "documentedDefault": "on",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": true,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "dataDir": {
      "key": "dataDir",
      "environment": "DEZFIL_DATA_DIR",
      "kind": "path",
      "label": "Data directory",
      "purpose": "The single durable directory for tables, tiles and metadata.",
      "defaultValue": {
        "rule": "working-directory/data"
      },
      "documentedDefault": "./data; /data in the container",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": "/data",
      "source": "environment",
      "locked": true,
      "invalidOverride": false,
      "storedValue": null
    },
    "secretKey": {
      "key": "secretKey",
      "environment": "DEZFIL_SECRET_KEY",
      "kind": "secret",
      "label": "Encryption key",
      "purpose": "The key that encrypts saved connection passwords and service addresses.",
      "defaultValue": {
        "rule": "key-file-or-generate"
      },
      "documentedDefault": "generated",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": true,
      "editable": false,
      "value": {
        "status": "not-yet-present"
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "trustedProxies": {
      "key": "trustedProxies",
      "environment": "DEZFIL_TRUSTED_PROXIES",
      "kind": "list",
      "label": "Trusted proxies",
      "purpose": "The proxies whose forwarded visitor address, host, scheme and port Dezfil accepts.",
      "defaultValue": [],
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": [],
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "sessionCookie": {
      "key": "sessionCookie",
      "environment": "DEZFIL_SESSION_COOKIE",
      "kind": "text",
      "label": "Session cookie name",
      "purpose": "Browser session cookie name, derived from the listening port unless overridden.",
      "defaultValue": {
        "rule": "listening-port"
      },
      "documentedDefault": "port-based",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": "dezfil_session",
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "egressAllowlist": {
      "key": "egressAllowlist",
      "environment": "DEZFIL_EGRESS_ALLOWLIST",
      "kind": "list",
      "label": "Allowed destinations",
      "purpose": "Hosts on a private network that the server may reach.",
      "defaultValue": [],
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": [],
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "objectStoreCredentials": {
      "key": "objectStoreCredentials",
      "environment": "DEZFIL_OBJECT_STORE_CREDENTIALS",
      "kind": "boolean",
      "label": "Object-store credentials",
      "purpose": "Read cloud storage links with the server's own credentials.",
      "defaultValue": false,
      "documentedDefault": "off",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": false,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "s3Endpoint": {
      "key": "s3Endpoint",
      "environment": "DEZFIL_S3_ENDPOINT",
      "kind": "address",
      "label": "S3 endpoint",
      "purpose": "The S3-compatible store that s3:// links are read from without the server's credentials.",
      "defaultValue": {
        "rule": "aws-bucket-endpoint"
      },
      "documentedDefault": "AWS",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "address",
        "maxLength": 2048
      },
      "value": {
        "rule": "aws-bucket-endpoint"
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "overpassUrl": {
      "key": "overpassUrl",
      "environment": "DEZFIL_OVERPASS_URL",
      "kind": "address",
      "label": "Overpass endpoint",
      "purpose": "Endpoint for OpenStreetMap imports.",
      "defaultValue": {
        "set": true,
        "origin": "https://overpass-api.de"
      },
      "documentedDefault": "https://overpass-api.de/api/interpreter",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "address",
        "maxLength": 2048
      },
      "value": {
        "set": true,
        "origin": "https://overpass-api.de"
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "overtureS3Endpoint": {
      "key": "overtureS3Endpoint",
      "environment": "DEZFIL_OVERTURE_S3_ENDPOINT",
      "kind": "address",
      "label": "Overture endpoint",
      "purpose": "S3-compatible override for the public Overture bucket.",
      "defaultValue": {
        "set": false
      },
      "documentedDefault": "unset, the public bucket",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": {
        "set": false
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "tippecanoe": {
      "key": "tippecanoe",
      "environment": "DEZFIL_TIPPECANOE",
      "kind": "path",
      "label": "Tile builder",
      "purpose": "The program that builds vector tiles.",
      "defaultValue": "tippecanoe",
      "documentedDefault": "tippecanoe",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": "tippecanoe",
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "basemapUrl": {
      "key": "basemapUrl",
      "environment": "DEZFIL_BASEMAP_URL",
      "kind": "address",
      "label": "Basemap address",
      "purpose": "A basemap style that Auto draws in both themes, in place of the built-in ones.",
      "defaultValue": {
        "rule": "built-in-basemap-for-theme"
      },
      "documentedDefault": "built-in styles",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": {
        "rule": "built-in-basemap-for-theme"
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "basemapAttribution": {
      "key": "basemapAttribution",
      "environment": "DEZFIL_BASEMAP_ATTRIBUTION",
      "kind": "text",
      "label": "Basemap credit",
      "purpose": "The credit maps show for the style DEZFIL_BASEMAP_URL names.",
      "defaultValue": null,
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": null,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "satelliteUrl": {
      "key": "satelliteUrl",
      "environment": "DEZFIL_SATELLITE_URL",
      "kind": "address",
      "label": "Satellite template",
      "purpose": "Raster tile template enabling satellite imagery.",
      "defaultValue": {
        "set": false
      },
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "address",
        "maxLength": 2048,
        "placeholders": [
          "{z}",
          "{x}",
          "{y}"
        ],
        "userInformation": "refused"
      },
      "value": {
        "set": false
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "satelliteAttribution": {
      "key": "satelliteAttribution",
      "environment": "DEZFIL_SATELLITE_ATTRIBUTION",
      "kind": "text",
      "label": "Satellite credit",
      "purpose": "Credit line required by the imagery provider.",
      "defaultValue": null,
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "text",
        "maxLength": 160,
        "empty": "null"
      },
      "value": null,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "geocoderUrl": {
      "key": "geocoderUrl",
      "environment": "DEZFIL_GEOCODER_URL",
      "kind": "address",
      "label": "Address finder",
      "purpose": "Nominatim-compatible endpoint for search and batch geocoding.",
      "defaultValue": {
        "set": false
      },
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "address",
        "maxLength": 2048
      },
      "value": {
        "set": false
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "isochroneUrl": {
      "key": "isochroneUrl",
      "environment": "DEZFIL_ISOCHRONE_URL",
      "kind": "address",
      "label": "Travel-time endpoint",
      "purpose": "Valhalla-compatible endpoint for travel-time areas.",
      "defaultValue": {
        "set": false
      },
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "address",
        "maxLength": 2048
      },
      "value": {
        "set": false
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "templatesCatalogueUrl": {
      "key": "templatesCatalogueUrl",
      "environment": "DEZFIL_TEMPLATES_CATALOGUE",
      "kind": "address",
      "label": "Catalogue address",
      "purpose": "Where the template catalogue's index is read.",
      "defaultValue": {
        "set": true,
        "origin": "https://github.com"
      },
      "documentedDefault": "https://github.com/Dezfil/templates/releases/latest/download/index.json",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "environmentTiming": "restart",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "address",
        "maxLength": 2048,
        "folder": "variable"
      },
      "value": {
        "set": true,
        "origin": "https://github.com"
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "anthropicApiKey": {
      "key": "anthropicApiKey",
      "environment": "ANTHROPIC_API_KEY",
      "kind": "secret",
      "label": "Anthropic credential",
      "purpose": "Enables the assistant with this provider.",
      "defaultValue": {
        "set": false
      },
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": true,
      "editable": false,
      "value": {
        "set": false
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "openaiApiKey": {
      "key": "openaiApiKey",
      "environment": "OPENAI_API_KEY",
      "kind": "secret",
      "label": "OpenAI credential",
      "purpose": "Enables the assistant with this provider.",
      "defaultValue": {
        "set": false
      },
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": true,
      "editable": false,
      "value": {
        "set": false
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "aiProvider": {
      "key": "aiProvider",
      "environment": "DEZFIL_AI_PROVIDER",
      "kind": "choice",
      "label": "Assistant provider",
      "purpose": "Selects the provider when more than one credential is present.",
      "defaultValue": {
        "rule": "first-provider-with-key"
      },
      "documentedDefault": "first key set",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": null,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "aiModel": {
      "key": "aiModel",
      "environment": "DEZFIL_AI_MODEL",
      "kind": "text",
      "label": "Assistant model",
      "purpose": "Overrides the provider's default model.",
      "defaultValue": {
        "rule": "provider-default-model"
      },
      "documentedDefault": "provider default",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": null,
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "aiModelsAnthropic": {
      "key": "aiModelsAnthropic",
      "environment": "DEZFIL_AI_MODELS_ANTHROPIC",
      "kind": "list",
      "label": "Anthropic model offer",
      "purpose": "Narrows and orders the catalogue; a set empty list offers only the default.",
      "defaultValue": {
        "rule": "effective-provider-catalogue"
      },
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": [
        "claude-opus-5",
        "claude-fable-5",
        "claude-sonnet-5",
        "claude-haiku-4"
      ],
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "aiModelsOpenai": {
      "key": "aiModelsOpenai",
      "environment": "DEZFIL_AI_MODELS_OPENAI",
      "kind": "list",
      "label": "OpenAI model offer",
      "purpose": "Narrows and orders the catalogue; a set empty list offers only the default.",
      "defaultValue": {
        "rule": "effective-provider-catalogue"
      },
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": [
        "gpt-6-astra",
        "gpt-5.6-sol",
        "gpt-5.6-terra",
        "gpt-5.6-nova"
      ],
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "assistantOffer": {
      "key": "assistantOffer",
      "environment": "DEZFIL_ASSISTANT_OFFER",
      "kind": "choice",
      "label": "Assistant operation offer",
      "purpose": "With subset, the assistant starts with the page's own tools and looks up the rest; with full, it starts with every tool the page allows.",
      "defaultValue": "subset",
      "documentedDefault": "subset",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": "subset",
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "chromiumPath": {
      "key": "chromiumPath",
      "environment": "DEZFIL_CHROMIUM_PATH",
      "kind": "path",
      "label": "Image renderer",
      "purpose": "The headless browser that draws image exports and map pictures.",
      "defaultValue": "/usr/bin/chromium",
      "documentedDefault": "/usr/bin/chromium",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "deployment",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": "/usr/bin/chromium",
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    },
    "instanceName": {
      "key": "instanceName",
      "label": "Instance name",
      "purpose": "Name beside the wordmark and in browser titles.",
      "defaultValue": null,
      "documentedDefault": "unset",
      "scope": "instance",
      "readBy": "public",
      "changedBy": "admin",
      "kind": "text",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "text",
        "maxLength": 80,
        "empty": "null"
      },
      "value": null,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "signInMessage": {
      "key": "signInMessage",
      "label": "Sign-in message",
      "purpose": "Optional message on the sign-in page.",
      "defaultValue": "",
      "documentedDefault": "empty",
      "scope": "instance",
      "readBy": "public",
      "changedBy": "admin",
      "kind": "text",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "text",
        "maxLength": 280,
        "empty": "null"
      },
      "value": "",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "lostPasswordContact": {
      "key": "lostPasswordContact",
      "label": "Lost-password contact",
      "purpose": "Contact line for password recovery; empty uses the built-in line.",
      "defaultValue": "",
      "documentedDefault": "empty",
      "scope": "instance",
      "readBy": "public",
      "changedBy": "admin",
      "kind": "text",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "text",
        "maxLength": 120,
        "empty": "null"
      },
      "value": "",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "landingPage": {
      "key": "landingPage",
      "label": "Landing page",
      "purpose": "Preferred entry destination after sign-in.",
      "defaultValue": "home",
      "documentedDefault": "home",
      "scope": "instance",
      "readBy": "public",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "home",
          "projects",
          "maps",
          "workflows",
          "data",
          "sql"
        ]
      },
      "value": "home",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newMap.basemap": {
      "key": "newMap.basemap",
      "label": "Basemap",
      "purpose": "The basemap a new map starts on. Auto follows the theme; a basemap the instance no longer offers starts on Auto.",
      "defaultValue": "auto",
      "documentedDefault": "auto",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "auto",
          "dark",
          "light",
          "streets",
          "satellite"
        ]
      },
      "value": "auto",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newMap.latitude": {
      "key": "newMap.latitude",
      "label": "Starting latitude",
      "purpose": "The latitude a new map opens at.",
      "defaultValue": 40,
      "documentedDefault": "40",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "decimal",
        "min": -85,
        "max": 85
      },
      "value": 40,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newMap.longitude": {
      "key": "newMap.longitude",
      "label": "Starting longitude",
      "purpose": "The longitude a new map opens at.",
      "defaultValue": 0,
      "documentedDefault": "0",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "decimal",
        "min": -180,
        "max": 180
      },
      "value": 0,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newMap.zoom": {
      "key": "newMap.zoom",
      "label": "Starting zoom",
      "purpose": "The zoom a new map opens at.",
      "defaultValue": 1.3,
      "documentedDefault": "1.3",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "decimal",
        "min": 0,
        "max": 22
      },
      "value": 1.3,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newMap.legendCorner": {
      "key": "newMap.legendCorner",
      "label": "Legend corner",
      "purpose": "Where a new map's legend sits.",
      "defaultValue": "bottom-left",
      "documentedDefault": "bottom-left",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "top-left",
          "top-right",
          "bottom-left",
          "bottom-right"
        ]
      },
      "value": "bottom-left",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newLayer.colorCycle": {
      "key": "newLayer.colorCycle",
      "label": "Color cycle",
      "purpose": "The palette whose colors new layers take in turn, drawn sketches included.",
      "defaultValue": "uber_viz_qualitative",
      "documentedDefault": "uber_viz_qualitative",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "uber_viz_qualitative",
          "bold",
          "tab10",
          "paired",
          "dark2",
          "set3"
        ]
      },
      "value": "uber_viz_qualitative",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newLayer.pointOpacity": {
      "key": "newLayer.pointOpacity",
      "label": "Point opacity",
      "purpose": "How opaque a new points layer is drawn, unless it is created with a style.",
      "defaultValue": 72,
      "documentedDefault": "72",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "integer",
        "min": 10,
        "max": 100
      },
      "unit": "%",
      "value": 72,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newLayer.lineOpacity": {
      "key": "newLayer.lineOpacity",
      "label": "Line opacity",
      "purpose": "How opaque a new lines layer is drawn, unless it is created with a style.",
      "defaultValue": 95,
      "documentedDefault": "95",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "integer",
        "min": 10,
        "max": 100
      },
      "unit": "%",
      "value": 95,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newLayer.areaOpacity": {
      "key": "newLayer.areaOpacity",
      "label": "Area opacity",
      "purpose": "How opaque a new areas layer is drawn, unless it is created with a style.",
      "defaultValue": 50,
      "documentedDefault": "50",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "integer",
        "min": 10,
        "max": 100
      },
      "unit": "%",
      "value": 50,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newLayer.lineWidth": {
      "key": "newLayer.lineWidth",
      "label": "Line width",
      "purpose": "How wide a new lines layer is drawn, unless it is created with a style.",
      "defaultValue": 2,
      "documentedDefault": "2",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "decimal",
        "min": 0.5,
        "max": 50
      },
      "unit": "px",
      "value": 2,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "newLayer.pointRadius": {
      "key": "newLayer.pointRadius",
      "label": "Point radius",
      "purpose": "How large a new layer's points are drawn, unless it is created with a style.",
      "defaultValue": 3,
      "documentedDefault": "3",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "decimal",
        "min": 0.5,
        "max": 100
      },
      "unit": "px",
      "value": 3,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "canvas.opens": {
      "key": "canvas.opens",
      "label": "Canvas opens",
      "purpose": "Whether a workflow canvas opens full screen or framed.",
      "defaultValue": "full",
      "documentedDefault": "full",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "full",
          "framed"
        ]
      },
      "value": "full",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "canvas.minimap": {
      "key": "canvas.minimap",
      "label": "Canvas minimap",
      "purpose": "When a workflow canvas shows its minimap until the person chooses: auto shows it from six nodes.",
      "defaultValue": "auto",
      "documentedDefault": "auto",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "auto",
          "always",
          "never"
        ]
      },
      "value": "auto",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "canvas.resultsBand": {
      "key": "canvas.resultsBand",
      "label": "Canvas results band",
      "purpose": "Whether a workflow canvas opens with its results band closed or open until the person chooses.",
      "defaultValue": "closed",
      "documentedDefault": "closed",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "closed",
          "open"
        ]
      },
      "value": "closed",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "sqlConsole.textSize": {
      "key": "sqlConsole.textSize",
      "label": "SQL text size",
      "purpose": "The text size the SQL console's editor opens at.",
      "defaultValue": "12",
      "documentedDefault": "12",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "11",
          "12",
          "13",
          "14",
          "16"
        ]
      },
      "unit": "px",
      "value": "12",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "sqlConsole.lineWrap": {
      "key": "sqlConsole.lineWrap",
      "label": "SQL line wrap",
      "purpose": "Whether the SQL console's editor wraps long lines.",
      "defaultValue": false,
      "documentedDefault": "off",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "boolean",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "switch"
      },
      "value": false,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "imageExport.width": {
      "key": "imageExport.width",
      "label": "Image starting width",
      "purpose": "The width a fresh image export card opens at.",
      "defaultValue": "1920",
      "documentedDefault": "1920",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "1280",
          "1920",
          "2560"
        ]
      },
      "unit": "px",
      "value": "1920",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "imageExport.shape": {
      "key": "imageExport.shape",
      "label": "Image starting shape",
      "purpose": "The shape a fresh image export card opens at.",
      "defaultValue": "4:3",
      "documentedDefault": "4:3",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "16:9",
          "4:3",
          "1:1"
        ]
      },
      "value": "4:3",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "security.sessionDays": {
      "key": "security.sessionDays",
      "label": "Stay signed in for",
      "purpose": "How long a session lasts after its last use. A session keeps the expiry it holds; its next use renews it by this length.",
      "defaultValue": "30",
      "documentedDefault": "30",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "1",
          "7",
          "30",
          "90"
        ]
      },
      "unit": "days",
      "value": "30",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "security.linkDays": {
      "key": "security.linkDays",
      "label": "Invite and reset links last",
      "purpose": "How long an invitation or a password reset link stays valid. A link keeps the lifetime it was issued with.",
      "defaultValue": "7",
      "documentedDefault": "7",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "1",
          "3",
          "7",
          "14"
        ]
      },
      "unit": "days",
      "value": "7",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "security.failedPerAccount": {
      "key": "security.failedPerAccount",
      "label": "Failed sign-ins per account",
      "purpose": "Failed sign-ins for one account, within a fixed 15 minutes, before its next attempt pauses. Wrong current passwords on password and email changes pause those changes at the same count, counted apart. Never above the count per address.",
      "defaultValue": 5,
      "documentedDefault": "5",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "integer",
        "min": 3,
        "max": 100
      },
      "unit": "per 15 minutes",
      "value": 5,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "security.failedPerAddress": {
      "key": "security.failedPerAddress",
      "label": "Failed sign-ins per address",
      "purpose": "Failed sign-ins from one network address, within a fixed 15 minutes, before its next attempt pauses. Never below the count per account.",
      "defaultValue": 20,
      "documentedDefault": "20",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "integer",
        "min": 10,
        "max": 1000
      },
      "unit": "per 15 minutes",
      "value": 20,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "security.passwordMin": {
      "key": "security.passwordMin",
      "label": "Shortest password",
      "purpose": "The fewest characters a password set from now may have. Passwords set earlier keep signing in.",
      "defaultValue": 8,
      "documentedDefault": "8",
      "scope": "instance",
      "readBy": "public",
      "changedBy": "admin",
      "kind": "number",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "integer",
        "min": 8,
        "max": 64
      },
      "unit": "characters",
      "value": 8,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "tokens.create": {
      "key": "tokens.create",
      "label": "Who may create tokens",
      "purpose": "Whether every account or only admins may create API tokens. Tokens made earlier keep working.",
      "defaultValue": "everyone",
      "documentedDefault": "everyone",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "everyone",
          "admins"
        ]
      },
      "value": "everyone",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "tokens.expiry": {
      "key": "tokens.expiry",
      "label": "New tokens expire after",
      "purpose": "The lifetime a new API token takes, from its creation. Tokens made earlier keep their own.",
      "defaultValue": "never",
      "documentedDefault": "never",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "never",
          "30d",
          "90d",
          "1y"
        ]
      },
      "value": "never",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "publishing.publish": {
      "key": "publishing.publish",
      "label": "Who may publish",
      "purpose": "Whether every account, only admins or no one may publish a map or change a publication. Published maps stay public and can be unpublished.",
      "defaultValue": "everyone",
      "documentedDefault": "everyone",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "everyone",
          "admins",
          "none"
        ]
      },
      "value": "everyone",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "publishing.embedding": {
      "key": "publishing.embedding",
      "label": "Embedding on other sites",
      "purpose": "Which other sites may show a published page in a frame: any site, only the listed sites (at least one), or none.",
      "defaultValue": "any",
      "documentedDefault": "any",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "any",
          "listed",
          "off"
        ]
      },
      "value": "any",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "publishing.embedSites": {
      "key": "publishing.embedSites",
      "label": "Listed sites",
      "purpose": "The sites that may show a published page in a frame while embedding is limited to listed sites; never empty while it is.",
      "defaultValue": [],
      "documentedDefault": "none",
      "scope": "instance",
      "readBy": "admin",
      "changedBy": "admin",
      "kind": "list",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "sites",
        "maxSites": 50
      },
      "value": [],
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "connections.create": {
      "key": "connections.create",
      "label": "Who may add database connections",
      "purpose": "Whether every account or only admins may add a database connection. Connections made earlier keep working.",
      "defaultValue": "everyone",
      "documentedDefault": "everyone",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "everyone",
          "admins"
        ]
      },
      "value": "everyone",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "imports.links": {
      "key": "imports.links",
      "label": "Who may import from links",
      "purpose": "Whether every account or only admins may import from web addresses and cloud storage. Link datasets keep refreshing.",
      "defaultValue": "everyone",
      "documentedDefault": "everyone",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "choice",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "choice",
        "values": [
          "everyone",
          "admins"
        ]
      },
      "value": "everyone",
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "basemaps.dark": {
      "key": "basemaps.dark",
      "label": "Dark",
      "purpose": "Whether Dark is offered where a basemap is chosen: the builder's picker, a published page's switcher and the Maps tab. Off, choosing it anew is refused; a map already on it keeps it. Auto keeps following the theme with it either way.",
      "defaultValue": true,
      "documentedDefault": "on",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "boolean",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "switch"
      },
      "value": true,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "basemaps.light": {
      "key": "basemaps.light",
      "label": "Light",
      "purpose": "Whether Light is offered where a basemap is chosen: the builder's picker, a published page's switcher and the Maps tab. Off, choosing it anew is refused; a map already on it keeps it. Auto keeps following the theme with it either way.",
      "defaultValue": true,
      "documentedDefault": "on",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "boolean",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "switch"
      },
      "value": true,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "basemaps.streets": {
      "key": "basemaps.streets",
      "label": "Streets",
      "purpose": "Whether Streets is offered where a basemap is chosen: the builder's picker, a published page's switcher and the Maps tab. Off, choosing it anew is refused; a map already on it keeps it.",
      "defaultValue": true,
      "documentedDefault": "on",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "boolean",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "switch"
      },
      "value": true,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "basemaps.satellite": {
      "key": "basemaps.satellite",
      "label": "Satellite",
      "purpose": "Whether Satellite is offered, while imagery is set up, where a basemap is chosen: the builder's picker, a published page's switcher and the Maps tab. Off, choosing it anew is refused; a map already on it keeps it.",
      "defaultValue": true,
      "documentedDefault": "on",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "boolean",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "switch"
      },
      "value": true,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "basemaps.singleMapStyles": {
      "key": "basemaps.singleMapStyles",
      "label": "Style addresses on single maps",
      "purpose": "Whether a map may take a style address the library does not offer. Off, such an address is refused on any map, for everyone, admins included; a map that holds one keeps it.",
      "defaultValue": true,
      "documentedDefault": "on",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "boolean",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "switch"
      },
      "value": true,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "templates.catalogue": {
      "key": "templates.catalogue",
      "label": "Use the catalogue",
      "purpose": "Whether the server reads the template catalogue: its list, its pictures and its downloads. Off, it reaches the catalogue for nothing; shipped and downloaded templates still open and copy.",
      "defaultValue": true,
      "documentedDefault": "on",
      "scope": "instance",
      "readBy": "signed-in",
      "changedBy": "admin",
      "kind": "boolean",
      "timing": "live",
      "secret": false,
      "editable": true,
      "write": {
        "kind": "switch"
      },
      "value": true,
      "source": "default",
      "storedValue": null,
      "locked": false,
      "invalidOverride": false
    },
    "port": {
      "key": "port",
      "environment": "PORT",
      "kind": "text",
      "label": "Listening port",
      "purpose": "Port used by the server and its internal API calls.",
      "defaultValue": {
        "rule": "runtime-port-or-request-origin"
      },
      "documentedDefault": "3000 in the container",
      "scope": "platform",
      "readBy": "admin",
      "changedBy": "platform",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": "3000",
      "source": "environment",
      "locked": true,
      "invalidOverride": false,
      "storedValue": null
    },
    "extensionDir": {
      "key": "extensionDir",
      "environment": "DUCKDB_EXTENSION_DIR",
      "kind": "path",
      "label": "Engine extensions",
      "purpose": "Location of the baked offline extension bundle.",
      "defaultValue": {
        "rule": "engine-default-extension-directory"
      },
      "documentedDefault": "/app/duckdb-extensions in the container",
      "scope": "platform",
      "readBy": "admin",
      "changedBy": "platform",
      "environmentTiming": "restart",
      "timing": "next-start",
      "secret": false,
      "editable": false,
      "value": {
        "rule": "engine-default-extension-directory"
      },
      "source": "default",
      "locked": false,
      "invalidOverride": false,
      "storedValue": null
    }
  },
  "capacities": {
    "geocodeRows": 27,
    "isochroneOrigins": 13
  },
  "maxImageDimension": 4096,
  "version": "0.1.0",
  "startedAt": "2026-10-20T09:00:00.000Z",
  "warnings": [],
  "parts": {
    "query_engine": {
      "version": "1.5.4",
      "started": true,
      "extensions": [
        "spatial",
        "h3",
        "json"
      ]
    },
    "tile_builder": {
      "found": true,
      "version": null
    },
    "image_renderer": {
      "found": false,
      "available": false,
      "imagesAtOnce": 2
    },
    "metadata_database": {
      "file": "metadata.sqlite"
    }
  },
  "basemapStyles": [],
  "services": {
    "geocode": {
      "bytes": 0,
      "answers": 0,
      "budgetMb": 64
    },
    "isochrone": {
      "bytes": 0,
      "answers": 0,
      "budgetMb": 64
    },
    "overpass": {
      "bytes": 0,
      "answers": 0,
      "budgetMb": 2048
    },
    "overture": {
      "listed": false
    }
  }
}
