The weird design is the “construct programming model.” It’s pretty darn powerful but will always be a little weird because modeling “semi-free-floating objects in space” with a programming language that wants to do things one after the other will always have a bit of a mismatch. But classes work pretty well all things considered.
An example of a cdk that isn’t tied to a cloud would be https://cdk8s.io/docs/latest/getting-started