SDSls is a friendly fork of https://pdsls.dev, with experimental support for:
- writes to SDS (Shared Data Server) repositories
- a playground for exploring and invoking XRPC API calls
It is currently an early stage project. If possible we would like to contribute changes back to the upstream project where it makes sense, and not have the codebase diverge too far from upstream.
The original PDSls README remains below.
Lightweight and client-side web app to navigate atproto.
- Browse the public data on PDSes (Personal Data Servers).
- Login to manage records in your repository.
- Jetstream and firehose (com.atproto.sync.subscribeRepos) streaming.
- Backlinks support with constellation.
- Query moderation labels.
You will need node and pnpm to get started:
pnpm i # install deps
pnpm dev # or pnpm run start, runs vite
pnpm build # runs vite build
pnpm serve # runs vite previewYou can configure the app using environment variables. Copy .env.example to .env and customize:
cp .env.example .env
# Edit .env with your settingsBy default, the app runs on http://127.0.0.1:13213 using OAuth loopback mode (works behind NAT):
pnpm dev # No environment variables neededOptional customization:
SERVER_HOST- Local server host (default:127.0.0.1)SERVER_PORT- Local server port (default:13213)
Using a tunnel (ngrok, pagekite, etc.) during development:
If you're using a tunnel to make your dev server publicly accessible, set PUBLIC_HOSTNAME in your .env file or via command line:
# In .env file:
PUBLIC_HOSTNAME=myapp.ngrok-free.app
# Or via command line:
PUBLIC_HOSTNAME=myapp.ngrok-free.app pnpm devThis will:
- Use the public URL for OAuth client metadata (instead of localhost loopback)
- Configure
allowedHostsfor the dev server - Require the
oauth-client-metadata.jsonfile to be accessible athttps://myapp.ngrok-free.app/oauth-client-metadata.json
For production builds, you must set PUBLIC_HOSTNAME:
# In .env file:
PUBLIC_HOSTNAME=pdsls.dev
# Then build:
pnpm build
# Or via command line:
PUBLIC_HOSTNAME=pdsls.dev pnpm buildThe PUBLIC_HOSTNAME is used to generate the OAuth client metadata URLs that ATProto servers need to access.
atcute - atproto SDK
@skyware/firehose - Firehose client