Will the kernel portion depend on lkm?

OpenBSD no longer has lkm, or any loadable kernel module framework. Any kernel implementation would have to be part of the kernel source tree (this one is userland, in ports).

I thought wireguard is kernel-mode software and I disliked it because of that. Interesting, may be there's Linux version of user-mode wireguard. I wonder what's the performance difference between usermode and kernelmode wireguard.

There is a go implementation of WireGuard with a fairly hefty warning at the top. [0]

There's also official documentation for how a userspace implementation should behave. [1]

The android version of WireGuard has a userspace implementation for devices without WireGuard in the kernel, which at the moment is pretty much all.

[0] https://github.com/WireGuard/wireguard-go

[1] https://www.wireguard.com/xplatform/