Skip to content

The watchman

The watchman reads Unseenet's open groups and publishes spam reports (UN-RFC 0045) as an automatic issuer. It calls out what looks like spam; it never removes anything.

Following it

In the graphical and the terminal client, spam reports are under the report issuers you follow. The watchman has two issuers, one per kind of finding:

  • Unseenet watchman (spam) - posts that look like spam: the same text from many keys, the same text from one key in many groups, or links to domains on spam blocklists;
  • Unseenet watchman (phishing) - posts with links to phishing or malware.

Follow either, both or neither. A post hidden by a report is shown as hidden, with the issuer and the reason, one click from being shown; posts from your contacts and your own are never hidden. Stop following at any time.

A hierarchy's maintainer or a group's owner may name the watchman as a default for their groups (UN-RFC 0045 sections 7.1 and 7.5). You can still turn it off.

Reported by mistake?

Write to the issuer's inbox (its contact). A person looks at it, and a mistake is taken back: the report is withdrawn and the post or key is never reported again.

Running your own

Anybody can run a watchman, with their own lists and thresholds; readers then choose whose they follow. See the README for installing it, the config and the blocklists' terms. Start with publish = false, read what it would have reported, and only then publish.

In Docker

ghcr.io/unseenet/watchman has the watchman with [lingua], the core and Tor, for amd64 and arm64, published for releases only and signed with cosign. The vault, watchman.toml and the state are in the volume at /data; the vault's passphrase comes from a Docker secret (unseenet_vault_passphrase), UNSEENET_VAULT_PASSPHRASE_FILE or UNSEENET_VAULT_PASSPHRASE.

docker run --rm -v watchman:/data ghcr.io/unseenet/watchman            # writes an example watchman.toml
docker run --rm -it -v watchman:/data -e UNSEENET_VAULT_PASSPHRASE=... ghcr.io/unseenet/watchman init
docker run -d --name watchman -v watchman:/data -e UNSEENET_VAULT_PASSPHRASE=... ghcr.io/unseenet/watchman

With compose.yaml it runs beside a node in the same project (nodes = ["node:1119"]), with a read-only root file system. As beside any hidden node, running it there ties the two together by uptime (the README says more).