ALL RIGHTS RESPECTED OPEN PROTOCOL v0.1 is LIVE INFRASTRUCTURE FOR THE RESPECT ECONOMY IMPLEMENT FREELY NO PERMISSION REQUIRED ALL RIGHTS RESPECTED OPEN PROTOCOL v0.1 is LIVE INFRASTRUCTURE FOR THE RESPECT ECONOMY IMPLEMENT FREELY NO PERMISSION REQUIRED
New ARR CLI v0.1.10: better banner spacing + smoother prompts + config command. CLI QUICKSTART →
Home Creators Developers Platforms SDK Thesis
SPECIFICATION

ARR Protocol v0.1

An open protocol for creative attribution in the age of AI

Version: 0.1.0 Status: Draft Updated: 2026-02-09

1. Abstract

The All Rights Respected (ARR) protocol defines a standard format for attesting creative intent and attribution for works created with AI tools. Unlike traditional copyright or DRM systems, ARR is designed for social recognition rather than legal enforcement.

ARR attestations are:

Non-normative interaction guidance is captured in docs/arr-interaction-layer.md. This document does not add protocol requirements.

2. Attestation Format

An ARR attestation is a structured document in JSON or YAML format. All implementations MUST support JSON; YAML support is RECOMMENDED.

2.1 Schema

{
  "attestation": {
    "version": "arr/0.1",
    "id": "uuid-v4",
    "created": "ISO-8601 timestamp",
    "creator": "creator identifier",
    "intent": "description of creative intent",
    "tool": "tool/version",
    "upstream": [/* array of upstream attestation IDs */],
    "content_hash": "sha256:...",
    "expires": "ISO-8601 date",
    "revocable": true,
    "license": "optional license identifier",
    "renews": "optional attestation id",
    "extensions": {/* optional custom fields */}
  },
  "signature": "algorithm:base64-encoded-signature"
}

2.2 Required Fields

Field Type Description
version string Protocol version. Format: arr/MAJOR.MINOR
id string Unique identifier (UUID v4 recommended)
created string ISO-8601 timestamp of attestation creation
creator string Creator identifier (see Section 7)
signature string Cryptographic signature (see Section 3)

2.3 Optional Fields

Field Type Default Description
intent string Human-readable description of creative intent
tool string Tool used to create the work. Format: name/version
upstream array [] IDs of upstream attestations this work builds upon
content_hash string Content hash of the work before embedding
expires string 5 years ISO-8601 date when attestation expires
revocable boolean true Whether creator can revoke the attestation
license string SPDX license identifier or custom license URL
renews string Attestation ID that this attestation renews
extensions object {} Custom fields for platform-specific data

2.4 Example

{
  "attestation": {
    "version": "arr/0.1",
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "created": "2026-01-29T10:30:00Z",
    "creator": "hash:sha256:7f3a9b2c4d5e6f...",
    "intent": "Poster design for climate awareness campaign",
    "tool": "midjourney/6.1",
    "upstream": [],
    "expires": "2031-01-29",
    "revocable": true,
    "license": "CC-BY-4.0"
  },
  "signature": "ed25519:kF2h9Jx3mN7pQr..."
}

3. Signature Requirements

All attestations MUST be cryptographically signed. The signature ensures the attestation has not been tampered with and was created by someone with access to the private key.

3.1 Supported Algorithms

Algorithm Status Notes
ed25519 RECOMMENDED Fast, small signatures, good security. Primary recommendation.
ecdsa-p256 Supported Widely available, good for existing PKI integration.
rsa-sha256 Supported Legacy support only. Larger signatures.

3.2 Signature Format

Signatures are encoded as: algorithm:base64-encoded-signature

"ed25519:kF2h9Jx3mN7pQrSt8vWxYz..."

3.3 Signing Process

  1. Serialize the attestation object to canonical JSON (keys sorted alphabetically, no whitespace)
  2. Compute the signature over the serialized bytes
  3. Encode the signature as base64
  4. Prefix with the algorithm identifier

3.4 Key Distribution

ARR does not mandate a specific key distribution mechanism. Implementers MAY use:

NOTE

The signature proves control of a private key at the time of signing. It does NOT prove identity unless the public key is linked to a verified identity through an external mechanism.

4. Embedding Methods

ARR attestations travel with the work. Multiple embedding methods are supported.

4.1 File Metadata

IMPLEMENTATION NOTE (M1)

Current reference implementation supports metadata embedding for PNG and JPEG only. Other formats use sidecar files.

4.1.1 Images (JPEG, PNG, WebP)

Store attestation in XMP metadata under the namespace http://arr.protocol/1.0/:

<x:xmpmeta xmlns:x="adobe:ns:meta/">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about=""
        xmlns:arr="http://arr.protocol/1.0/">
      <arr:attestation>{JSON attestation}</arr:attestation>
    </rdf:Description>
  </rdf:RDF>
</x:xmpmeta>

4.1.2 Audio (MP3, FLAC, WAV)

Store in ID3v2 tag TXXX:ARR (MP3) or Vorbis comment ARR (FLAC/OGG).

4.1.3 Video (MP4, WebM)

Store in XMP metadata or as a custom atom/box.

4.1.4 Documents (PDF)

Store in XMP metadata stream.

4.2 Sidecar Files

For formats that don't support metadata, store attestation in a sidecar file:

artwork.png
artwork.png.arr    # contains JSON attestation

4.3 Steganographic Embedding

For robustness against metadata stripping, implementers MAY additionally embed a hash of the attestation using steganographic methods. This is OPTIONAL and implementation-specific.

WARNING

Steganographic embedding may alter the work. Use with care and document the embedding method used.

4.4 Content Addressing

Attestations SHOULD include a content hash to bind the attestation to a specific version of the work:

"content_hash": "sha256:abc123..."

This hash should be computed over the work's content BEFORE the attestation is embedded.

5. Expiration & Revocation

5.1 Expiration

All attestations have an expiration date. This is a core design principle: nothing is permanent without renewal.

5.2 Renewal

Creators can renew attestations by issuing a new attestation that references the original:

{
  "attestation": {
    "version": "arr/0.1",
    "id": "new-uuid",
    "created": "2031-01-29T00:00:00Z",
    "creator": "same-creator",
    "renews": "original-attestation-id",
    "expires": "2036-01-29"
  }
}

5.3 Revocation

If revocable: true (the default), creators can revoke attestations.

5.3.1 Revocation Record

{
  "revocation": {
    "attestation_id": "uuid-to-revoke",
    "revoked_at": "2027-06-15T12:00:00Z",
    "reason": "optional explanation"
  },
  "signature": "ed25519:..."
}

5.3.2 Revocation Distribution

Revocations can be distributed via:

NOTE

Verifiers are not required to check revocation lists. Revocation is a social mechanism, not a technical guarantee.

6. Verification Algorithm

Verifiers SHOULD implement the following algorithm:

6.1 Basic Verification

function verify(attestation, signature, publicKey):
    // 1. Check version compatibility
    if !supported(attestation.version):
        return { valid: false, reason: "unsupported_version" }

    // 2. Check expiration
    if attestation.expires < now():
        return { valid: true, expired: true }

    // 3. Serialize attestation canonically
    canonical = canonicalize(attestation)

    // 4. Verify signature
    if !verifySignature(canonical, signature, publicKey):
        return { valid: false, reason: "invalid_signature" }

    // 5. Success
    return { valid: true, expired: false }

6.2 Extended Verification (Optional)

Implementers MAY additionally:

6.3 Verification Results

Status Meaning Recommended Display
valid Signature valid, not expired Show attestation with confidence
expired Signature valid, past expiration Show with "expired" indicator
revoked Creator has revoked Show with "revoked" indicator or hide
invalid Signature verification failed Do not display attestation
unknown Cannot verify (missing key, etc.) Show with "unverified" indicator

7. Privacy Considerations

7.1 Creator Identifiers

The creator field supports multiple identifier formats:

Format Example Privacy Level
Hash-based hash:sha256:7f3a9b... High (pseudonymous)
Public key pubkey:ed25519:abc... Medium (linkable)
DID did:key:z6Mk... Variable
URL https://example.com/@user Low (identified)
Email hash email:sha256:... Medium (verifiable)

7.2 Unlinkability

Creators who want attestations to be unlinkable SHOULD:

7.3 Right to Be Forgotten

Revocation supports the right to be forgotten. However:

NOTE

ARR is designed for recognition, not surveillance. Implementers should minimize data collection and respect creator privacy preferences.

8. Versioning Strategy

8.1 Version Format

Versions follow arr/MAJOR.MINOR format:

8.2 Compatibility

8.3 Version History

Version Date Changes
arr/0.1 2026-01-29 Initial draft specification

9. Conformance Levels

9.1 Level 1: Basic

Minimum viable implementation:

9.2 Level 2: Standard

Recommended implementation:

9.3 Level 3: Full

Complete implementation:

NOTE

All conformance levels are valid implementations. Platforms should choose the level appropriate for their use case.

10. Interaction Events (Optional)

ARR tools MAY emit interaction events to support live, in-context workflows. This section defines a minimal event envelope for interoperability. Emitting events is OPTIONAL and does not affect core attestation validity.

10.1 Event Envelope

If emitted, events MUST follow this shape:

{
  "event": {
    "version": "arr/event/0.1",
    "id": "uuid-v4",
    "type": "arr.attestation.draft.created",
    "created": "ISO-8601 timestamp",
    "session": "optional session identifier",
    "payload": {}
  }
}

Required fields: version, id, type, created. Optional fields: session, payload.

10.2 Event Types (Recommended)

Type Meaning
arr.attestation.draft.created Draft intent captured, not signed
arr.attestation.signed Attestation signed
arr.attestation.published Attestation embedded or sidecar written
arr.attestation.verified Verification completed
arr.attestation.renewed Attestation renewed
arr.attestation.revoked Attestation revoked

10.3 Event Payload (Recommended)

If provided, payload SHOULD include:

Recommended context fields:

Field Type Description
content_hash string Content hash of the work prior to embedding
file_path string Local or workspace-relative path
tool string Tool/version capturing the intent
selection object Selection context (bounds, text, or object id)

Questions, ideas, or want to contribute? Open an issue on GitHub or reach out at hello@allrightsrespected.com