Playbook

City Playbook

How cities deploy Guardian nodes and protect civic truth and public records.

Integrity Cities Playbook

How cities deploy Guardian Nodes to protect civic truth and cultural integrity

Who This Is For

This playbook is for municipal governments, city councils, and civic institutions that want to deploy Guardian Nodes to protect civic truth, maintain cultural integrity, and ensure the authenticity of public records.

What You Can Do

With SOVEREIGN\PROVENANCE, cities can:

  • Deploy Guardian Nodes - Mirror the global ledger regionally
  • Enforce cultural protocols - Protect regional and community-specific content
  • Protect civic records - Issue passports for public documents and archives
  • Maintain integrity - Generate integrity reports and monitor node health
  • Build trust - Establish verifiable provenance for public records

Overview

Integrity Cities deploy Guardian Nodes to mirror the global ledger, enforce regional cultural protocols, and maintain local integrity infrastructure.

Stand Up a Guardian Node and Connect It to Your City Portal

This is a concrete flow to get your city's Guardian Node operational.

Step 1: Register as Guardian Node

import { createSovProvClient } from '@sovprovenance/sdk-js';

const client = createSovProvClient({
  baseUrl: 'https://api.sovereign.provenance',
  apiKey: 'city-api-key',
});

// Register city as Guardian Node operator
const nodeRegistration = await client.writeEvent({
  type: 'guardian_node_registered',
  identity: cityIdentity.id,
  payload: {
    nodeId: 'urn:sp:node:city-seattle',
    region: 'us-west',
    jurisdiction: 'Seattle, WA, USA',
    operator: 'City of Seattle',
    mode: 'sovereign',
  },
});

Step 2: Deploy Guardian Node

Deploy the node using Docker or Kubernetes:

# Using Docker
docker run -d \
  -e NODE_ID=urn:sp:node:city-seattle \
  -e REGION=us-west \
  -e JURISDICTION="Seattle, WA, USA" \
  -e LEDGER_SERVICE_URL=https://ledger.sovereign.provenance \
  -e DB_URL=postgres://... \
  -e MODE=sovereign \
  sovprovenance/guardian-node

Step 3: Configure Cultural Protocols

Set up regional cultural protocols:

// Load cultural protocol modules for your region
const culturalProtocols = {
  region: 'us-west',
  protocols: [
    {
      id: 'indigenous-sacred-content',
      rules: {
        disallowAITraining: true,
        disallowCommercial: true,
        disallowDerivatives: true,
      },
      communities: ['indigenous-communities'],
    },
  ],
};

Node Operations

Monitor Node Status

// Check node health
const status = await fetch('http://guardian-node:8083/v1/node/status');
const nodeStatus = await status.json();

console.log('Node ID:', nodeStatus.data.nodeID);
console.log('Last Sync:', nodeStatus.data.lastLedgerSyncTime);
console.log('Integrity:', nodeStatus.data.integritySummary);

Generate Integrity Reports

// Request integrity report
const report = await fetch('http://guardian-node:8083/v1/node/reports', {
  method: 'POST',
});

const reportData = await report.json();
console.log('Events Mirrored:', reportData.data.eventsMirrored);
console.log('Enforcement Checks:', reportData.data.enforcementChecks);

Enforce Rights Regionally

// Enforce rights for regional use
const enforcement = await fetch('http://guardian-node:8083/v1/node/enforce', {
  method: 'POST',
  body: JSON.stringify({
    artifactId: passportId,
    proposedUse: {
      type: 'display',
      geographicRegion: 'us-west',
    },
    requestingIdentityId: requesterId,
  }),
});

const result = await enforcement.json();
if (!result.data.allowed) {
  console.log('Denied:', result.data.reason);
}

Use Cases

Protecting Civic Records

// Seal and passport for city records
const recordSeal = await client.generateSeal(recordData);
const recordPassport = await client.createPassport({
  identityId: cityIdentity.id,
  sealId: recordSeal.id,
  metadata: {
    artifactType: 'document',
    title: 'City Council Meeting Minutes',
    tags: ['civic', 'public-record'],
  },
  accordId: publicRecordAccord.id, // Public domain, but requires attribution
});

Cultural Heritage Protection

// Protect cultural heritage content
const heritagePassport = await client.createPassport({
  identityId: culturalInstitutionIdentity.id,
  sealId: heritageSeal.id,
  metadata: {
    artifactType: 'image',
    title: 'Traditional Artwork',
    tags: ['cultural-heritage', 'sacred'],
  },
  accordId: sacredContentAccord.id, // No AI training, no commercial use
});

Best Practices

  1. Regular Monitoring - Check node status daily
  2. Backup Strategy - Backup mirrored ledger data
  3. Cultural Protocols - Maintain and update cultural protocol modules
  4. Public Transparency - Publish integrity reports publicly
  5. Regional Coordination - Coordinate with other regional nodes

Resources