BlueprintsProtocol Model

Protocol Model

Blueprints are easy to explain badly because one word gets used for too many things. Keep the layers separate.

A blueprint is the template. It defines what can be run: jobs, metadata, binaries, app routing, and optional Blueprint Service Manager logic. Operators register for that template. A user requests a service instance from a set of registered operators. That service instance is the thing the user actually uses.

The lifecycle

  1. A developer publishes a blueprint definition, runnable artifact, metadata, and any blueprint-specific contracts.
  2. Operators register for the blueprint and publish the endpoint or metadata the app needs to find them.
  3. A user requests a service instance and selects one or more registered operators.
  4. Operators approve or join the request.
  5. The service instance becomes active.
  6. The user submits jobs to that service instance.
  7. Apps read chain state, indexed state, and operator APIs to show what happened.

The service instance is the boundary for state, auth, and billing. If a page says the template itself is live, read that as a wording bug. The service instance is live.

Names that should not drift

TermUse it for
BlueprintThe abstract capability definition.
Operator registrationAn operator’s on-chain opt-in for a blueprint.
Service requestThe user’s request to instantiate the blueprint with chosen operators and parameters.
Service instanceThe live unit created from a request.
JobA state-changing command against a service instance.
QueryA read through eth_call, the indexer, or an operator API.
Operator APIThe off-chain API an operator exposes for live product state and controls.
Hosted appThe product UI. It may be first-party, but it is not the blueprint.
BSMBlueprint Service Manager contract logic for blueprint-specific rules.

Jobs are not reads

Jobs mutate state or ask the operator to perform work. They are the wrong tool for normal app reads.

Use reads for:

  • service and operator lists
  • health checks
  • bot rosters
  • order books
  • terminal state
  • file lists
  • price quotes
  • proof or attestation lookups

Use jobs for:

  • provisioning or deprovisioning
  • workflow triggers
  • market-making ticks
  • service-level commands that should be recorded as protocol activity

This split matters. If reads become jobs, the app gets slow, operators pay more gas than needed, and the protocol history stops meaning “work was requested.”

What the indexer can prove

The indexer can show what the chain observed:

Indexed stateUseful for
Blueprint creation and source updatesCatalogs, audits, and app routing.
Operator registrationDiscovery, capacity lists, and endpoint metadata.
Service requests and approvalsProvisioning status and operator participation.
Service instancesInstance pages, ownership, selected operators, and lifecycle.
JobsUser-visible commands, support traces, and billing or settlement context.
Heartbeats or status eventsLiveness history and incident timelines.

The indexer cannot prove endpoint honesty, model output quality, exchange execution, or credit redemption. Those need product-specific evidence: operator API probes, contract state, attestations, settlement receipts, SP1 proofs, or signed reports.

Reader map

ReaderWhat they need from these docs
ConsumerWhich service instance they are using, who operates it, what evidence backs the result, and what can fail.
DeveloperThe job schema, query paths, metadata, contracts, app policy, and validation steps.
OperatorHardware, ports, keys, provider credentials, pricing, capacity, health checks, and rollback steps.
App builderHow to route the app from metadata, when to use the generic protocol page, and where live product state comes from.
Indexer ownerEnough event history to distinguish pending provisioning, operator failure, normal shutdown, and missing data.

Common mistakes

Bad wordingBetter wording
”Deploy the blueprint for a user.""Request a service instance from a blueprint."
"The operator provisions the blueprint.""The operator provisions the service instance."
"The dapp reads the blueprint for bot state.""The dapp reads indexed service state and the operator API for bot state."
"Submit a job for a normal read.""Read from the contract, indexer, or operator API."
"The hosted app is the blueprint.""The hosted app is the UI for service instances created from the blueprint.”