2. Run a dataview server
The Personal app has a cross-enclave read — profiles aggregates the latest profile across
every user's enclave. That's served by a dataview: a small Worker that subscribes to the
node, projects matching events into a queryable read-model, and answers querys. (Your own
public / private reads come straight from the node and need no dataview.)
The Personal app ships its dataview. Run it locally, pointed at the node from step 1:
cd impl-cli/apps/personal/dataview
# a throwaway signing key for local dev (file is gitignored)
echo "DATAVIEW_PRIVATE_KEY=$(python3 -c "print('11'*32)")" > .dev.vars
npx wrangler dev --port 8788 # → http://127.0.0.1:8788Its NODE_URL defaults to http://localhost:8787, so it follows your local node. Keep it
running alongside the node.
A dataview is optional — a purely private app (a notes vault, a DM) skips it and reads the node directly. The Personal app uses one only for its public
profilesfeed.