dotReg at a glance
Readable.configuration.built.on.dotted:keys.
dotReg is a line-oriented configuration notation. Write full keys directly, or group them beneath a shared heading. Values start as text; your application decides how to interpret them.
@dotReg 0.1
A. .Code:001 .Message: "Hello, dotReg" .Group. .Enabled:trueThe grouped entries resolve to A.Code, A.Message and A.Group.Enabled. Each heading level adds exactly two ASCII spaces. The code 001 stays text, with its leading zeroes intact.
Every file starts with the exact declaration @dotReg 0.1 and a required blank separator. Declarations are file properties, separate from settings. The default file extension is .dotreg; .conf is also suitable, and the format itself does not depend on an extension. The shorter notation examples below show body fragments; prepend the same declaration and blank line when parsing them. See file properties for validation rules.
For a single-line value, only an initial double quote after outer ASCII spaces and tabs are removed selects quoted syntax and escapes. Other values are entirely literal: A.Message: say "hello" keeps its quotes, and A.Path: C:\temp\new keeps its backslashes. Quotes encountered later never switch modes.
Repeat a key to record multiple values in source order:
A.Tag:redA.Tag:greenA.Tag:redAll three occurrences remain, including the repeated red. Later values do not overwrite earlier ones. Your application can require a single value for particular keys through its configuration schema.
Multiline values support triple quotes with the same escapes as ordinary quoted values, or a pipe block whose text is preserved literally:
A.Message: """ first line say \"hello\" """
A.Path: |C:\temp\new |another lineThe closing triple quotes set the indentation margin to remove. In a pipe block, everything after the first | belongs to the value, including spaces and backslashes. Both forms preserve line endings between body lines. To include a final newline, add an empty body line before the closing triple quotes, or an empty final pipe line ( |). See the value rules.
Get started · Documentation · Specification · Sample parsers · Coding agent skill
Try the notation in Go, Python, JavaScript, TypeScript, Java, C#, Rust or C++. The parser set provides dependency-free syntax and common string decoding, incremental APIs for bounded retention and shared conformance cases. TypeScript shares the JavaScript engine through a typed interface.
For application development with a coding agent, install the dotReg skill. It includes syntax and integration guidance, a complete example and an offline checker.
Website development and GitHub Pages setup: Starlight website guide.
The specification defines the core rules. Type profiles and candidate types describes type-specific representations and candidate names; undecided matters lists the remaining open questions.
The specification, examples and sample implementations are available under the MIT License.