self hosting is a single-node binary, while cloud convex splits functionality across a few services and scales them horizontally
cloud convex has a few paid features (like airbyte source connector) that aren't present in the self hosted code
cloud convex has some project-level features, like preview deployments and custom domains, while in self-hosted convex you would orchestrate cross-backend features yourself
Otherwise it is the same code in self-hosted and cloud convex