Skip to content

CCL Syntax

CCL uses key-value pairs with indentation for nesting. That’s the entire format. All keys and values are strings. Because everything is a string, you don’t need to worry about escaping “special” characters, surrounding “real strings” in quotes, etc. You’ll get a string value matching exactly what you wrote in the config.

key = value
another = some text value
  • Split on first =
  • Key is trimmed of leading and trailing whitespace
  • Value is trimmed of leading whitespace only (trailing whitespace is preserved)
servers =
= web1.example.com
= web2.example.com
= api.example.com

Empty key (= value) creates list items.

/= This is a comment
key = value /= Not a comment, value is "value /= Not a comment"

Comments use /= syntax. Only at line start.

parent =
child = nested value
another = also nested

Lines indented more than previous = part of that value.

beta =
mode = sandbox
capacity = 2

The value mode = sandbox\ncapacity = 2 is recursively parsed as CCL.

Malformed Input: Missing = treats entire line as key with empty value.

Unicode: UTF-8 supported. Keys and values can contain any Unicode characters.

CRLF vs LF: Line endings normalized to LF (\n) before parsing.

Whitespace-only values: Preserved if present after =.

key =
# Value is " " (4 spaces)