Varlink aims to be as simple as possible. It is not specifically optimized for anything else but ease-of-use and maintainability.
Varlink services describe themselves; with a machine-readable interface definition, and human-readable documentation.
It should be easy to forward, proxy, redirect varlink interfaces over any connection-oriented transport. Varlink should be free of any side-effects of local APIs. All interactions need to be simple messages on a network, not carrying things like file descriptors or direct references to locally stored files.
Varlink is the protocol and definition of interfaces, but it does not define or provide any significant functionality itself.
Varlink errors should carry enough information to be consumed by machines and automated rules.
Making it easy to run automated tests against varlink interfaces should be considered a necessity when designing interfaces.