When you’re trying to move the local player, you should perform the movement on both the server and the client to keep them in sync. The server will correct the client to the server-authoritative position if there is a large enough error, but if the client isn’t trying to do what the server is dong, those corrections will be constant and it will look jittery.
If you use the console command “p.netshowcorrections 1” you should see some logs and debug displays of corrected movement. If you set things up correctly, ideally you wouldn’t see any at all.