πŸ“ POLITY PROTOCOLS

How polity agreements work for everyday people (plus technical tools)

0. How this page is meant to help

Most visitors are not software developers, so we start with ideas, not code. This page explains:

If you want a purely non-technical walkthrough first, open Polity: How It Works to see the visual narrative before returning to this page.

1. Protocol Definition (JSON template)

Download a protocol template, adapt it for your community, and publish it as machine-readable charter text. The protocol can then be signed and shared across the Fedinet.

Streamlined view: basic commitments in roadmap language
{
  "polity_id": "polity:river-phyle",
  "name": "River Phyle Network",
  "description": "Federation of river basin communities, worker coops and municipal partners.",
  "version": "1.0.0",
  "effective_date": "2026-03-23",
  "principles": ["ecological stewardship", "mutual aid", "self-determination", "non-authoritarian federation"],
  "member_groups": [
    { "name": "Water Commons", "type": "intentional_community", "slug": "water-commons" },
    { "name": "State Reform Network", "type": "jurisdictional_partner", "slug": "green-state" }
  ],
  "federation_rules": {
    "exit_notice_days": 90,
    "dispute_path": "restorative-council",
    "shared_resources": ["food"],
    "cyber_security": "self-sovereign-key-ops"
  }
}
Download JSON

Template can be downloaded and adapted as polity-protocol-template.json. Use the button above to switch to a friendly, non-technical text summary.

2. Browser Proof-of-Concept Signing Tool

Generate keys, sign the protocol text, and verify signatures locally in your browser.

No key generated yet.

No signature yet.

No verification run yet.

The code below uses Web Crypto API (available in modern browsers and Neocities if HTTPS). This lets you verify without any backend key storage.

2. Cryptographic Signing

Yes, signature belongs to cryptography. A polity signing model should rely on public key identities and signed charter declarations.

Each group publishes a public key (or DID). To sign:

  1. Canonicalize protocol text (e.g. sorted JSON).
  2. Hash using SHA-256 or better.
  3. Sign the hash with the group private key (Ed25519 recommended).
  4. Publish .sig and public key fingerprint with pact.

Verification is simply: hash the text again and verify the signature with signer’s public key. Provide tools transparently so everyone can independently audit.

Tip: In Fedinet, the document and signature are shared over a federated network, much like you follow another Mastodon account. This allows groups to discover and validate each other in a decentralized trust web.

2. Why Fedinet exists (in plain language)

Fedinet is short for "federated internet" and it is the infrastructure that lets independent polity nodes share statements and policy agreements without requiring a single central authority. Each polity publishes its own rules and chooses who to trust, while still being able to check and verify other members.

This works like email: you can send a signed message from your server, and recipients can verify the signature. In this same way, polity groups exchange signed charters and acceptance/withdrawal notices.

3. Authenticated Pledge Example (in JS)

/** * Simplified JavaScript pseudo-code using libsodium or TweetNaCl */ const sodium = require('libsodium-wrappers'); (async () => { await sodium.ready; const keypair = sodium.crypto_sign_keypair(); const protocol = JSON.stringify({ polity_id:'polity:river-phyle', version:'1.0.0' }); const message = sodium.from_string(protocol); const signed = sodium.crypto_sign(message, keypair.privateKey); const signature = signed.slice(0, sodium.crypto_sign_BYTES); console.log('publicKey', sodium.to_base64(keypair.publicKey)); console.log('signature', sodium.to_base64(signature)); })();

In Fedinet app this becomes a UI step: import key, choose charter, sign, publish to federation endpoint (ActivityPub `Announce` or building a direct peer-to-peer exchange). The data is then distributed so anyone can verify the chain of pacts.