A Domain is a reusable piece of context — a name, a description, and free-form notes about a part of your codebase: its architecture, its conventions, the things that would take a new teammate weeks to learn.
Attach a Domain to any workspace that touches that part of your code, and every conversation you run there starts already knowing it — no re-explaining required. See Keeping Domains and repositories in sync for how a Domain and its repositories stay linked.
Domains grow the way a good living document does. The more you or your agents write into one, the smarter every future conversation in that area starts out — see Writing a Domain that actually gets used for what actually makes one worth reading.