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