- HTML 65%
- JavaScript 28%
- CSS 7%
PDS MOOver (OAuth edition) #

A no frills client side PDS account migrator for ATProto. For more info check out pdsmoover.com
This fork signs in to your current account with atproto OAuth (granular scopes, no password) and only asks for a password for the new account on the new PDS. It cannot deactivate the old account, since OAuth sessions are not allowed to do that.
Dev #
bun install
bun run dev
Open http://127.0.0.1:5173 (not localhost). Local dev uses an atproto loopback OAuth client whose redirect
URI is 127.0.0.1.
This deployment is served from https://pds-moover-oauth.exe.xyz and uses public/client-metadata.json as the OAuth
client id. If you change the requested scopes, update both src/oauth.js and that JSON file.
Captcha / signup gates #
Some PDSs (for example selfhosted.social) report phoneVerificationRequired from describeServer and refuse
createAccount without a verification code. When that's the case the new PDS's captcha page
(<pds>/gate/signup) is shown in an iframe before the MOOve starts. The gate redirects the iframe back to
/captcha-callback.html, which posts the code to the main page. That page is kept free of OAuth code on
purpose: the OAuth client would otherwise treat the code/state params as an OAuth callback.