We propose an abstract notion of a type theory to unify the semantics of various type theories including Martin–Löf type theory, two-level type theory, and cubical type theory. We establish basic results in the semantics of type theory: every type theory has a bi-initial model; every model of a type theory has its internal language; the category of theories over a type theory is bi-equivalent to a full sub-2-category of the 2-category of models of the type theory.