tilegroxy docs
See the Configuration Reference for every available option and Examples for complete configurations explained line by line. More examples are available in the repository.

AI Lazy Button

A Skill is available to help AI coding agents write and troubleshoot tilegroxy configuration.

How to install it depends on your agent:

Claude Code

Copy the skill file into .claude/skills/generating-tilegroxy-config in your project (or ~/.claude/skills/ to make it available everywhere).

OpenClaw

Run openclaw skills install git:Michad/tilegroxy@main --as generating-tilegroxy-config (add --global to make it available to all agents), or install to a workspace/project skills directory as documented.

ChatGPT

Go to Skills, select Create, then Upload from your computer, and upload the skill’s directory (or a .zip containing it as a single top-level folder).

Other agents supporting the agent skills specification

Copy the skill’s directory wherever your agent looks for skills; consult your agent’s documentation for the exact location.

Agents without skill support

Paste the contents of SKILL.md into your prompt or system instructions, or point the agent at its raw URL.

Conventions

Parameter names (configuration keys) are case-insensitive unless indicated otherwise.

Names (see below) are always lower case.

Unknown or misspelled configuration keys are rejected as an error rather than silently ignored, both at the top level and within any entity block. See Config Check for details.

Some parameters can be specified by environment variables which must be upper case. Environment variables override config parameters which override default values.

The environment variable name is derived by joining the parameter’s full key path with _, upper-cased. For example, server.port becomes SERVER_PORT and logging.main.level becomes LOGGING_MAIN_LEVEL. This works for any scalar parameter with a fixed key, even if it’s not set in your config file at all. It does not apply to the dynamic, per-entity parameters described in Entities, which support env.ENV_VAR_NAME value substitution instead.

Entities

Some configuration sections (authentication, provider, cache, datastores, analytics, ratelimit, tls and secret) support selecting different methods of operation that change the full list of parameters available. For example, a "proxy" provider requires a url parameter to get a map tile from another server while a "static" provider takes in a image to return for every request. You select these operating modes using a parameter called name.

Since these entities are too dynamic to have fixed environment variables and frequently may require a secret to operate, any string parameters can be made to use an environment variable by specifying a value in the format of env.ENV_VAR_NAME. You can also use an external secret store if configured by specifying a value in the format secret.SECRET_NAME.

Extension Keys

If you need to re-use a section of configuration, you can make use of a top level extension key starting with x-. Tilegroxy allows any such section at the top level of the configuration. From there, you can use YAML anchors to reuse bits of configuration wherever you need.

For example:

x-shared:
  regionValidator: &regionValidator "(?:north|south|east)"
  upstream: &upstream
    name: proxy
    url: "https://tiles.example.com/{layer.region}/{z}/{x}/{y}"

layers:
  - id: regional
    pattern: "regional_{region}"
    paramValidator:
      region: *regionValidator
    provider: *upstream
  - id: regional_hd
    pattern: "regional_{region}_hd"
    paramValidator:
      region: *regionValidator
    provider: *upstream

An anchor must be defined above its first use in the file.