Aontu

Configuration that unifies instead of overwriting

Aontu is JSON plus a lattice. Two documents do not override each other, they unify: the result is the most specific value that satisfies both, or an error naming the contradiction. That makes a definition checkable, queryable and safe to change — by a person or by an agent.

A schema, a default and data — in one notation

Every JSON document is an Aontu document. Then you add what JSON cannot say: that port must be an integer, that it defaults to 8080, that host is a string. Unification combines all of it in one operation.

A conflicting fact — a second port: "high", or a port: 1.5 — is a precise error at the line that caused it, not a silent wrong answer.

config.aon
port:    *8080 | integer
host:    string
host:    "localhost"
aontu config.aon
{
  "host": "localhost",
  "port": 8080
}

Eleven verbs, in two implementations

The same command line ships in TypeScript and in Go, held to one language-agnostic test suite so the two cannot drift. Each verb answers as JSON with --format json, which is what makes the toolkit usable by something other than a person.

vet
does this data satisfy that truth?
get
what does it say at a path?
why
why does that value hold, and who set it?
set
change one value in an overlay, or in place
subsume
is this schema a widening of that one?
breaking
which changes break an earlier version?
diff
what changed between two documents?
trim
which entries are redundant?
relations
run the declared identity checks
hash
pin what a document means, not how it is spelled
mod
maintain a dependency closure

Every flag and exit code is in the API and CLI reference. With no file, aontu starts a REPL.

Built for agents as much as for readers

An agent does not read a configuration by evaluating the whole thing into one blob. It holds identifiers, retrieves task-sized slices, asks why a value holds, and patches by path. Aontu answers each of those directly — and this site serves the same content as markdown at every URL, for anything that would rather not parse HTML.

Install

npm
npm install aontu@0.52.1
Go
go install github.com/aontu-lang/aontu/go/cmd/aontu@latest

MIT licensed. Source, issues and the design record are on GitHub.