{
  "path": "/3mletyxaie22o",
  "site": "at://did:plc:5svqtrhheairglgiiyvutzik/site.standard.publication/3lvt33dtzps2a",
  "tags": [],
  "$type": "site.standard.document",
  "title": "Compute Contracts",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "id": "019e09d6-e232-7337-84e1-980abed210a2",
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 71,
                    "byteStart": 18
                  },
                  "features": [
                    {
                      "uri": "https://github.com/publicdomainrelay/compute-contract",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "Marketplace spec: https://github.com/publicdomainrelay/compute-contract"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Alice, Bob, and Eve are on the network"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Alice wants to issue a Compute Contract Request For Proposal (CCRFP)"
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "src": "https://pdsls.dev/at://did:plc:5svqtrhheairglgiiyvutzik/com.publicdomainrelay.ccrfp/3mlf7tjlfjr2d",
              "$type": "pub.leaflet.blocks.website",
              "title": "at://johnandersen777.bsky.social/com.publicdomainrelay.ccrfp/3mlf7tjlfjr2d",
              "description": "",
              "previewImage": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreifucyzwyu7j4semfxsbtez2gjrfesdoza6zcz4mnihkhke53igkwq"
                },
                "mimeType": "image/png",
                "size": 4575
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Bob has plenty of builder machines"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Eve wants to know what Alice is doing"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Alice has vouched for Bob"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Alice has denounced Eve"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Alice creates a CCRFP manifest"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Alice makes her CCRFP manifest available to the network"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Bob and Eve each issue a Compute Contract Bid (CCB) against the CCRFP"
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "src": "https://pdsls.dev/at://did:plc:5svqtrhheairglgiiyvutzik/com.publicdomainrelay.ccb/3mlf7ttrffk23",
              "$type": "pub.leaflet.blocks.website",
              "title": "at://johnandersen777.bsky.social/com.publicdomainrelay.ccb/3mlf7ttrffk23",
              "description": "",
              "previewImage": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreibhtuv22bq6dhmr27acokcj6ia4oke765v3yywrrimbkyjowqhbkm"
                },
                "mimeType": "image/png",
                "size": 13326
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Alice's policy engine sees that she's denounced Eve and vouched for Bob"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 139,
                          "byteStart": 132
                        },
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#code"
                          }
                        ]
                      }
                    ],
                    "plaintext": "Alice prepares to accept Bob's bid by configuring her Workload Identity Federation (WIF) Role Based Access Control (RBAC) per Bob's bid.wif information"
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "src": "https://pdsls.dev/at://did:plc:5svqtrhheairglgiiyvutzik/com.fedproxy.rbac/3mlewidctvt2n",
              "$type": "pub.leaflet.blocks.website",
              "title": "at://johnandersen777.bsky.social/com.fedproxy.rbac/3mlewidctvt2n",
              "description": "",
              "previewImage": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreibvltjzmxgyglfpplticn234ie6kvrsxgndndxoi5hpzm64ansdt4"
                },
                "mimeType": "image/png",
                "size": 12389
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Bob and Eve each issue a Compute Contract Bid (CCB) against the CCRFP"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Alice's policy engine sees that she's denounced Eve and vouched for Bob"
                  }
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Alice issues a Compute Contract Bid Accept (CCBA) against Bob's CCB."
                  },
                  "children": [
                    {
                      "$type": "pub.leaflet.blocks.unorderedList#listItem",
                      "content": {
                        "$type": "pub.leaflet.blocks.text",
                        "facets": [
                          {
                            "index": {
                              "byteEnd": 10,
                              "byteStart": 0
                            },
                            "features": [
                              {
                                "$type": "pub.leaflet.richtext.facet#italic"
                              }
                            ]
                          }
                        ],
                        "plaintext": "TODO: CCBA"
                      }
                    }
                  ]
                },
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Alice issues a x402 payment to Bob per info provided in his CCB."
                  },
                  "children": [
                    {
                      "$type": "pub.leaflet.blocks.unorderedList#listItem",
                      "content": {
                        "$type": "pub.leaflet.blocks.text",
                        "plaintext": "Using the CCBA AT URI and CID."
                      },
                      "children": [
                        {
                          "$type": "pub.leaflet.blocks.unorderedList#listItem",
                          "content": {
                            "$type": "pub.leaflet.blocks.text",
                            "facets": [
                              {
                                "index": {
                                  "byteEnd": 45,
                                  "byteStart": 0
                                },
                                "features": [
                                  {
                                    "$type": "pub.leaflet.richtext.facet#italic"
                                  }
                                ]
                              }
                            ],
                            "plaintext": "TODO: ^ (first pass was using CCB, need CCBA)"
                          }
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.code",
              "plaintext": "npx awal x402 pay \\\n  https://builder.bob.example.com/ccr/${AT_URI}/${CID}"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "Bob builds to the CCRFP manifest's spec and issues a Compute Contract Receipt (CCR) over the CCRFP, CCB, and CCBA"
                  },
                  "children": [
                    {
                      "$type": "pub.leaflet.blocks.unorderedList#listItem",
                      "content": {
                        "$type": "pub.leaflet.blocks.text",
                        "facets": [
                          {
                            "index": {
                              "byteEnd": 17,
                              "byteStart": 0
                            },
                            "features": [
                              {
                                "$type": "pub.leaflet.richtext.facet#italic"
                              }
                            ]
                          }
                        ],
                        "plaintext": "TODO: CCBA in CCR"
                      }
                    }
                  ]
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "src": "https://pdsls.dev/at://did:plc:5svqtrhheairglgiiyvutzik/com.publicdomainrelay.ccr/3mlf7v5sbyx2m",
              "$type": "pub.leaflet.blocks.website",
              "title": "at://johnandersen777.bsky.social/com.publicdomainrelay.ccr/3mlf7v5sbyx2m",
              "description": "",
              "previewImage": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreidh2buikzdnfbp2r7yfdzb5bvb3bof3kp566z3up3hgpl5hjldom4"
                },
                "mimeType": "image/png",
                "size": 10847
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 17,
                          "byteStart": 8
                        },
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#code"
                          }
                        ]
                      }
                    ],
                    "plaintext": "Alice's user_data runs within Bob's compute and interacts with Bob's WIF to token exchange to get a token which will interact with the downstream service she configured her RBAC for."
                  },
                  "children": [
                    {
                      "$type": "pub.leaflet.blocks.unorderedList#listItem",
                      "content": {
                        "$type": "pub.leaflet.blocks.text",
                        "facets": [
                          {
                            "index": {
                              "byteEnd": 106,
                              "byteStart": 94
                            },
                            "features": [
                              {
                                "$type": "pub.leaflet.richtext.facet#code"
                              }
                            ]
                          },
                          {
                            "index": {
                              "byteEnd": 138,
                              "byteStart": 115
                            },
                            "features": [
                              {
                                "uri": "https://rp.fedproxy.com",
                                "$type": "pub.leaflet.richtext.facet#link"
                              }
                            ]
                          }
                        ],
                        "plaintext": "In our example we are leveraging a Workload Identity Reverse Proxy which enables calling XRPC createRecord against https://rp.fedproxy.com to proxy the POST to a PDS"
                      }
                    }
                  ]
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "src": "https://john.leaflet.pub/3lz7aymmqqc2l",
              "$type": "pub.leaflet.blocks.website",
              "title": "Workload Identity Reverse Proxy - Blog",
              "description": "Imagine a reverse proxy that provides fine grained RBAC over any API",
              "previewImage": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreif7qiyrkpvtucf5duigs7v5yfzpv54ord5qiur5okjgawjyqylju4"
                },
                "mimeType": "image/png",
                "size": 27673
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "index": {
                          "byteEnd": 55,
                          "byteStart": 30
                        },
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#code"
                          }
                        ]
                      },
                      {
                        "index": {
                          "byteEnd": 103,
                          "byteStart": 83
                        },
                        "features": [
                          {
                            "uri": "https://fedproxy.com",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      },
                      {
                        "index": {
                          "byteEnd": 216,
                          "byteStart": 158
                        },
                        "features": [
                          {
                            "uri": "https://github.com/publicdomainrelay/atproto-reverse-proxy",
                            "$type": "pub.leaflet.richtext.facet#link"
                          }
                        ]
                      }
                    ],
                    "plaintext": "The record we POST is of type com.fedproxy.sshPublicKey which is also for use with https://fedproxy.com (aka the same repo, different service/binary it hits: https://github.com/publicdomainrelay/atproto-reverse-proxy)"
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "src": "https://pdsls.dev/at://did:plc:5svqtrhheairglgiiyvutzik/com.fedproxy.sshPublicKey/3mlf7zbjoax23",
              "$type": "pub.leaflet.blocks.website",
              "title": "at://johnandersen777.bsky.social/com.fedproxy.sshPublicKey/3mlf7zbjoax23",
              "description": "",
              "previewImage": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreic6vbmvj43wvrh4wgwqlbq6jnej5e427jausxzm3v3k472qffly2y"
                },
                "mimeType": "image/png",
                "size": 7180
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "This SSH key registration allows us to expose an HTTP service to the internet. Also acting as service discovery."
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.code",
              "plaintext": "ssh -NnT -p 2222 \\\n  -o UserKnownHostsFile=/dev/null \\\n  -o StrictHostKeyChecking=no \\\n  -o PasswordAuthentication=no \\\n  -R ${SERVICE}:80:127.0.0.1:8080 \\\n  ${HANDLE}@fedproxy.com"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "$type": "pub.leaflet.blocks.unorderedList#listItem",
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "plaintext": "The end result is auto HTTPS server coming from arbitrary compute"
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 57,
                    "byteStart": 0
                  },
                  "features": [
                    {
                      "uri": "https://cfb3c8d2.johnandersen777.bsky.social.fedproxy.com/",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "https://cfb3c8d2.johnandersen777.bsky.social.fedproxy.com"
            }
          }
        ]
      }
    ]
  },
  "description": "Marketplace Spec",
  "publishedAt": "2026-05-08T23:09:39.545Z"
}