···99SIGNING_KEY = "xxx"
1010BSKY_IDENTIFIER = "xxx"
1111BSKY_PASSWORD = "xxx"
1212+PORT = 4002
1313+RELAY = "ws://localhost:6008/subscribe"
1214```
13151414-A `cursor.txt` also needs to be present. It can be left empty, and will update the file every minute with a new cursor.
1616+A `cursor.txt` also needs to be present with the time in microseconds. If it doesn't exist, it will be created with the current time.
15171618You can create/update all labels at once by running `npx tsx src/set-labels.ts` once you filled out `src/constants.ts` with the related post rkeys, label IDs and so on.
17191820Alternatively, you can use `npx @skyware/labeler label add` and edit `src/constants.ts` after.
19212222+The server connects to [Jetstream](https://github.com/ericvolp12/jetstream) which provides a WebSocket endpoint that emits ATProto events in JSON. There is a public instance available at `wss://jetstream.atproto.tools/subscribe`.
2323+2024The server has to be reachable outside your local network using the URL you provided during the account setup (typically, using a reverse proxy such as [Caddy](https://caddyserver.com/)):
21252226```Caddyfile
2327labeler.example.com {
2424- reverse_proxy 127.0.0.1:4001
2828+ reverse_proxy 127.0.0.1:4002
2529}
2630```
2731