Towns offers an end-to-end encrypted chat protocol that lets communities create programmable, self-governed “town squares” where users can assemble and chat without worrying about whether the app owner will decide to prevent access, profit from the activities or change user rights. Communities can control settings like administration, privacy and roles, and create tailored experiences that can include rewarding member participation or allowing members to sell non-fungible tokens (NFT) in the chat. Any community can build new clients or application programming interfaces (API) on the protocol for control and customization.