# Community nodes
Members can donate a little of their internet connection to the DevPlace community. A donated
**node** is a small program on the member's own machine that dials out to DevPlace and, when
asked, fetches a public page from a short list of allowed websites on DevPlace's behalf. This is
how search reaches sites that block data-centre addresses.
- **Opt-in only.** Nobody is enrolled by default. Donating needs an explicit consent that only
the account holder can grant or withdraw.
- **Not an open proxy.** A node refuses everything that is not on the published allowlist, every
port except 80 and 443, and every private or local address. The refusal is enforced on the
donor's machine as well as on the server.
- **Counted and visible.** Requests and bytes relayed are counted by the server and shown to the
donor.
The wire protocol, every limit and the allowlist are published as one machine-readable document
at `/nodes/spec.json` and rendered on the [Node network protocol](/docs/nodes-protocol.html)
page. Every endpoint follows the shared [Conventions & Errors](/docs/conventions.html).
/nodes/spec.json
Minimal role: Public
Node protocol specification
The single source of truth for the node protocol: version, frames, limits, allowlist and refusal codes.
/nodes/devices
Minimal role: Member
List your devices
The devices you registered, with their status and when they last connected. Secrets are never listed.
/nodes/devices
Minimal role: Member
Register a device
Register one client install. The device secret is returned once and cannot be read again.
/nodes/devices/{device_uid}/rotate
Minimal role: Member
Rotate a device secret
Issue a new secret for one of your devices. The old secret stops working immediately.
/nodes/devices/{device_uid}/delete
Minimal role: Member
Delete a device
Remove a device. A connected node is disconnected on the next service tick. An administrator may remove any device.
/nodes/ticket
Minimal role: Member
Exchange a device secret for a socket ticket
The node client calls this with its device secret to get a single-use ticket for `WS /nodes/ws?ticket=`.