Skip to main content
Livry is built around four objects. Understanding how they nest — and which boundaries are deliberately impermeable — is the fastest way to model your setup correctly the first time.

Team

A Team is the customer account and the billing boundary. It owns the people, the subscription and everything below. One person’s account can belong to several Teams, and Teams are fully isolated from each other. A Team always has at least one Owner.
There is no screen to create a second Team inside the portal. Signing up creates one; a second Team is a second identity-provider organization and a second Stripe customer, so it is a separate sign-up.

Environment

An Environment is sandbox, staging or production. It is the isolation boundary, and it is what a URL slug names.
Nothing moves between Environments, and nothing auto-promotes. A Theme in your sandbox is not the same Theme as the one in production, even with the same slug. There is no promotion step.This is deliberate: a sandbox experiment can never partially leak into production through a half-finished promotion. If you want to mirror configuration, script it against the API, where you control exactly what is copied and when.
Environments also own one serving setting: how long the edge may reuse a latest answer. A sandbox usually wants a publish on screen at the next reload; production can wait a minute. See Caching. Signing up does not create an Environment. You create your first one in the welcome wizard, which is why you can leave and come back to a Team that has none. The last remaining Environment in a Team cannot be deleted.

Theme

A Theme belongs to an Environment and holds the default token set. An Environment can hold any number of them, so a vendor shipping two products is not forced onto a shared base. A Theme owns more than its tokens: Theme versions are immutable: publishing creates a new version, never an edit in place.

Variant

A Variant is one brand: a set of overrides on one Theme, and nothing else.
That is the whole of it — a flat map of token path to value.
A Variant owns values. The Theme owns everything else. A Variant cannot add a token, rename one, retype one, or describe one. Overriding a path the Theme does not have is silently ignored, because there is nothing for the override to apply to.
A Theme with no Variants is not an error — it resolves to its own defaults unchanged, and is served at the - Variant segment. Resolution is the Theme’s document with the Variant’s values overlaid, path by path.

Words Livry does not use

The product had different names early on, and some of them survive in old material. They are not concepts: Nothing sits between an Environment and a Theme, and nothing sits below a Variant.

Glossary

Every term on one page, with the thing it is not.