Skip to content

Categorical Configuration Language

Categorical Configuration Language

Configuration that reads like plain text.

CCL stores everything as readable key = value pairs. Indentation makes hierarchy. Comments and multiline values come standard.

/= CCL is just readable key = value pairs
name = Example Site
version = 1.0.0
database =
/= Indentation creates hierarchy
host = localhost
port = 5432
allowed origins =
= https://example.com
= https://www.example.com

Why CCL

A small language with a precise foundation. Easy to read, easy to implement.

Plain key = value syntax

No quotes, braces, or brackets. Indentation is the only structure you need, and nesting reads top to bottom.

Comments and multiline values

Unlike JSON, CCL keeps configuration human-friendly with inline notes and values that span lines.

Composable core

Everything is string key-value data. Typed accessors, formatting, and merging build on that one primitive.

Predictable by design

Category-theory-inspired composition keeps parsing, filtering, and merging consistent across every implementation.

The same config, easier to read

CCL drops the punctuation tax. Compare a small service config in CCL and JSON.

CCL
service = api
port = 8080
retries =
count = 3
backoff = 250ms
JSON
{
"service": "api",
"port": 8080,
"retries": {
"count": 3,
"backoff": "250ms"
}
}

Pick your path

Ready to try CCL?

Start with a five-minute walkthrough, or jump straight to the full syntax reference.