[bldr]docs
gRPC APIDaemon

Data

Content-addressed data: GC, named refs, single-block blob/IPLD get/put, recursive network fetch, and filesystem-tree import/export.

Content-addressed data: GC, named refs, single-block blob/IPLD get/put, recursive network fetch, and filesystem-tree import/export.

Service builder.Data, 18 rpcs.

Gc(GcRequest) -> stream GcEvent

Run a garbage-collection pass, streaming live mark/sweep progress. The final message is a done event carrying the totals (GcResponse).

Request: GcRequest

message GcRequest {
  // no fields
}

Response: GcEvent

One message on the Data.Gc stream: incremental progress, then a terminal done with the final totals.

message GcEvent {
  oneof event {
    GcProgress progress = 1;
    GcResponse done = 2;
  }
}

ScanStorageUsage(ScanStorageUsageRequest) -> stream StorageUsageEvent

Scan the block store and report what holds its bytes: a read-only mark pass from every GC root, with no sweep. Streams live progress; the final message is a done event carrying the report (StorageUsage). Scans may run side by side, but never alongside a GC sweep or a compaction, which hold the engine's rewrite lock exclusively.

Request: ScanStorageUsageRequest

message ScanStorageUsageRequest {
  optional uint32 top_roots = 1;
}
Field
top_rootsHow many of the largest roots to list in StorageUsage.top_roots. 0 → 20.

Response: StorageUsageEvent

One message on the Data.ScanStorageUsage stream: incremental progress, then a terminal done with the report.

message StorageUsageEvent {
  oneof event {
    StorageUsageProgress progress = 1;
    StorageUsage done = 2;
  }
}

GetRef(GetRefRequest) -> GetRefResponse

Request: GetRefRequest

message GetRefRequest {
  optional string name = 1;
}

Response: GetRefResponse

message GetRefResponse {
  optional bool found = 1;
  optional string cid = 2;
}
Field
found 
cidSet when found = true.

ListRefs(ListRefsRequest) -> ListRefsResponse

Request: ListRefsRequest

message ListRefsRequest {
  optional string data_type = 1;
  optional string name_prefix = 2;
}
Field
data_typeOnly refs whose CID carries this data type, named by the label bldr inspect prints (deployment, runnable, fs-node, …). Empty → every type. An unrecognised label is an error rather than an empty list: a typo that silently matches nothing looks exactly like "you have none".
name_prefixOnly refs whose name starts with this. Empty → every name.

Response: ListRefsResponse

message ListRefsResponse {
  repeated RefInfo refs = 1;
}

SetRef(SetRefRequest) -> SetRefResponse

Request: SetRefRequest

SetRef covers both create and update; the condition selects which semantics.

message SetRefRequest {
  optional string name = 1;
  optional RefCondition condition = 2;
  optional string expected_cid = 3;
  optional string cid = 4;
}
Field
name 
condition 
expected_cidFor condition = IF_EQUALS: the expected current CID.
cidThe new CID to store.

Response: SetRefResponse

message SetRefResponse {
  optional bool applied = 1;
  optional string previous_cid = 2;
}
Field
appliedtrue if the condition was satisfied and the ref was updated.
previous_cidThe CID held by the ref before this call (empty if none).

DeleteRef(DeleteRefRequest) -> DeleteRefResponse

Request: DeleteRefRequest

message DeleteRefRequest {
  optional string name = 1;
  optional RefCondition condition = 2;
  optional string expected_cid = 3;
}
Field
name 
condition 
expected_cidFor condition = IF_EQUALS: the expected current CID.

Response: DeleteRefResponse

message DeleteRefResponse {
  optional bool applied = 1;
  optional string previous_cid = 2;
}

StatBlob(StatBlobRequest) -> StatBlobResponse

Return the total byte size of a Blob DAG without assembling the content.

Only the root Blob CBOR node is read — each part carries its size inline, so no chunk blocks need to be fetched. was_local in the response is true when the root block was already in local storage before this call.

local = true: fail with NOT_FOUND if the root block is absent locally. local = false: fetch the root block from the network on a cache miss.

Request: StatBlobRequest

message StatBlobRequest {
  optional string cid = 1;
  optional bool local = 2;
}

Response: StatBlobResponse

message StatBlobResponse {
  optional string cid = 1;
  optional uint64 size = 2;
  optional bool was_local = 3;
}
Field
cid 
size 
was_localtrue if the root Blob block was already in local storage before this call.

GetBlob(GetBlobRequest) -> stream GetBlobResponse

Stream the byte content of a Blob DAG, with optional range selection.

The response stream carries three kinds of messages (always in this order):

  1. A single header message with the CID and total byte count for the requested range (use it to set up a progress bar or pre-allocate).
  2. One or more chunk messages carrying the raw bytes.
  3. A single stats message with the number of blocks fetched from peers.

offset / until select a byte range [offset, until). Both are optional; defaults are 0 and the blob's total size respectively.

local = true: root block must be local; chunk blocks also local-only. Returns NOT_FOUND for any missing block. local = false (default): fetch missing blocks from the peer network.

Request: GetBlobRequest

message GetBlobRequest {
  optional string cid = 1;
  optional bool local = 2;
  oneof _offset {
    uint64 offset = 3;
  }
  oneof _until {
    uint64 until = 4;
  }
}
Field
cid 
local 
offsetfirst byte to stream (default: 0)
untilexclusive end byte (default: blob size)

Response: GetBlobResponse

message GetBlobResponse {
  oneof payload {
    GetBlobHeader header = 1;
    bytes chunk = 2;
    GetBlobStats stats = 3;
  }
}

GetIpld(GetIpldRequest) -> GetIpldResponse

Fetch a single DAG-CBOR block and return it as a YAML string.

cid is a CID or named ref. The YAML encoding uses tagged scalars: CID links → !cid <cid-string> Byte strings → !base64 <base64-string>

local = true: local store only; NOT_FOUND if absent.

Request: GetIpldRequest

message GetIpldRequest {
  optional string cid = 1;
  optional bool local = 2;
}

Response: GetIpldResponse

message GetIpldResponse {
  optional string yaml = 1;
  optional string cid = 2;
  optional string json = 3;
}
Field
yaml 
cid 
jsonThe same value as JSON with dag-json-style markers (links &#123;"/": cid&#125;, bytes &#123;"/": &#123;"bytes": [...]&#125;&#125;) — what the build controller's TS bridge consumes, so JS callers never parse YAML.

InspectObject(InspectObjectRequest) -> InspectObjectResponse

Inspect a CID: detect its kind (raw Blob, FsNode, ContainerImage, or generic DAG-CBOR) and return a typed, UI-friendly view plus the raw IPLD (as YAML) for DAG-CBOR objects. Drives a "clickable CID / object browser": child CIDs (dir entries, image layers) are returned so a UI can descend.

Request: InspectObjectRequest

message InspectObjectRequest {
  optional string cid = 1;
  optional bool local = 2;
}
Field
cid 
localRestrict to the local store (no network).

Response: InspectObjectResponse

message InspectObjectResponse {
  optional string cid = 1;
  optional ObjectKind kind = 2;
  optional string codec = 3;
  optional uint64 size = 4;
  optional string yaml = 5;
  optional BlobView blob = 6;
  optional FsNodeView fs = 7;
  optional ContainerImageView image = 8;
  optional BuildOutputView build_output = 9;
  optional DeploymentView deployment = 10;
  optional BuildInputView build_input = 11;
  optional HamtView hamt = 12;
  optional BuildMemberView build_member = 13;
  optional RunnableView runnable = 14;
  optional ImageIndexView image_index = 15;
  optional TestResultsView test_results = 16;
  optional CoverageReportView coverage_report = 17;
  optional CoverageMemberView coverage_member = 18;
  optional DiagnosticsView diagnostics = 19;
  optional PipelineView pipeline = 20;
}
Field
cid 
kind 
codecBlock encoding, derived from the CID's data type: "raw" (opaque bytes) or "dag-cbor" (structured). Kept under the historical field name.
sizeSize of the root block in bytes.
yamlRaw IPLD serialised as tagged YAML (DAG-CBOR objects only) — the "view raw" payload. Empty for raw blobs.
blobExactly one typed view is set, matching kind.
fs 
image 
build_output 
deployment 
build_input 
hamt 
build_member 
runnable 
image_index 
test_results 
coverage_report 
coverage_member 
diagnostics 
pipeline 

InspectRevisionSnapshot(InspectRevisionSnapshotRequest) -> InspectRevisionSnapshotResponse

Decode a WorkspaceRevisionSnapshot block (a committed workspace revision: pinned members + absolute options) into a UI-friendly view. Distinct from InspectObject because a snapshot is byte-identical to a BuildInput and can't be told apart by shape — the caller asserts the type (e.g. following a workspace's revision/parent CID).

Request: InspectRevisionSnapshotRequest

message InspectRevisionSnapshotRequest {
  optional string cid = 1;
  optional bool local = 2;
}
Field
cid 
localRestrict to the local store (no network).

Response: InspectRevisionSnapshotResponse

A committed WorkspaceRevisionSnapshot, decoded for display.

message InspectRevisionSnapshotResponse {
  repeated SnapshotMember members = 1;
  optional string options_json = 2;
}
Field
members 
options_jsonThe snapshot's absolute workspace options, as a JSON object.

ValidateCidKind(ValidateCidKindRequest) -> ValidateCidKindResponse

Guess a CID's ObjectKind without building the full typed view — a cheap shape probe the UI delegates to (e.g. /deploy validating a Deployment CID, the object browser) instead of guessing client-side.

Request: ValidateCidKindRequest

message ValidateCidKindRequest {
  optional string cid = 1;
  optional bool local = 2;
}

Response: ValidateCidKindResponse

message ValidateCidKindResponse {
  optional ObjectKind kind = 1;
  optional bool ok = 2;
}
Field
kindUNSPECIFIED if the CID could not be parsed or the block is unavailable.
okFalse when the CID string was malformed or the block wasn't found.

PutBlob(stream PutBlobRequest) -> PutBlobResponse

Split streamed bytes into content-addressed chunks (FastCDC) and store the resulting Blob DAG. Returns the CID of the root Blob CBOR node.

The client streams one or more messages; each carries a contiguous slice of the payload. The server reassembles, chunks with FastCDC, and stores all leaf blocks before returning. blocks_stored counts newly written blocks (already-present blocks are not re-stored and not counted).

Request: PutBlobRequest

message PutBlobRequest {
  optional bytes data = 1;
}

Response: PutBlobResponse

message PutBlobResponse {
  optional string cid = 1;
  optional uint64 blocks_stored = 2;
}

PutIpld(PutIpldRequest) -> PutIpldResponse

Parse yaml as an IPLD value, encode as DAG-CBOR, store, and return the CID. The input follows the same tagged YAML encoding as GetIpldResponse.

Request: PutIpldRequest

message PutIpldRequest {
  optional string yaml = 1;
  optional string json = 2;
  optional string data_type = 3;
}
Field
yaml 
jsonAlternative JSON form (same markers as GetIpldResponse.json). When both are set, json wins; the TS bridge sends only this.
data_typeThe type to mint the CID with, by its label — what bldr inspect prints: pipeline, test-results, build-output, … Empty stores generic dag-cbor. Only structured DAG-CBOR types are accepted: a blob or an FS-model type has its own encoding and its own RPC, and an unknown label is INVALID_ARGUMENT rather than a block nobody can decode.

Response: PutIpldResponse

message PutIpldResponse {
  optional string cid = 1;
}

Fetch(FetchRequest) -> FetchResponse

Recursively download every block in the DAG rooted at cid from peers.

Blocks already present locally are not re-fetched. blocks_stored counts only newly written blocks. After a successful Fetch an FsNode tree is ready for FUSE mounting; a Blob DAG is ready for GetBlob assembly.

local = true: skip the network and verify local completeness only; returns NOT_FOUND for any missing block.

Request: FetchRequest

message FetchRequest {
  optional string cid = 1;
  optional bool local = 2;
}

Response: FetchResponse

message FetchResponse {
  optional string cid = 1;
  optional uint64 blocks_stored = 2;
}

FetchIpld(FetchRequest) -> FetchIpldResponse

Like Fetch, but also decodes the root block as YAML on completion — saves a separate GetIpld round-trip.

Request: FetchRequest

The same message as FetchRequest.

Response: FetchIpldResponse

message FetchIpldResponse {
  optional string cid = 1;
  optional uint64 blocks_stored = 2;
  optional string yaml = 3;
}

PutFs(PutFsRequest) -> PutFsResponse

Walk a path on the server filesystem, store the tree as an FsNode DAG, and return the root CID.

The server must have access to path; it is an absolute path on the machine where builder-node is running. All file content is chunked and stored as Blob DAGs; directory trees become HAMT MapNodes.

Request: PutFsRequest

message PutFsRequest {
  optional string path = 1;
}
Field
pathAbsolute path on the server filesystem to import.

Response: PutFsResponse

message PutFsResponse {
  optional string cid = 1;
}
Field
cidCID of the root FsNode.

GetFs(GetFsRequest) -> GetFsResponse

Materialise an FsNode DAG rooted at cid to path on the server filesystem.

If the blocks are not already stored locally and local is false, the node will fetch them from the peer network before materialising. When local is true, materialisation fails with NOT_FOUND if any block is missing locally. path is an absolute path on the server machine.

Request: GetFsRequest

message GetFsRequest {
  optional string cid = 1;
  optional string path = 2;
  optional bool local = 3;
}
Field
cidCID or named ref of the root FsNode to materialise.
pathAbsolute destination path on the server filesystem.
localRestrict to local blocks only; do not contact the network.

Response: GetFsResponse

message GetFsResponse {
  optional string cid = 1;
}
Field
cidCID of the materialised root (same as the request CID).

Types used above

GcProgress

Live progress of a GC pass, streamed by Data.Gc.

message GcProgress {
  optional uint64 refs_marked = 1;
  optional uint64 refs_total = 2;
  optional bool mark_complete = 3;
  optional uint64 shards_done = 4;
  optional uint64 shards_total = 5;
  optional uint64 blocks_kept = 6;
  optional uint64 blocks_removed = 7;
  optional bool sweep_complete = 8;
}
Field
refs_markedMark phase: how many root refs have been marked out of the total. refs_total can grow mid-pass as the live set expands (new pins). mark_complete flips true once every root has been marked and the sweep begins.
refs_total 
mark_complete 
shards_doneSweep phase: shards processed out of the total (block store is sharded; shards_total is 1 for the unsharded engine), and the running counts of blocks kept / removed so far. sweep_complete flips true when done.
shards_total 
blocks_kept 
blocks_removed 
sweep_complete 

GcResponse

message GcResponse {
  optional uint64 removed = 1;
  optional uint64 retained = 2;
  optional uint64 cache_removed = 3;
  optional uint64 cache_kept = 4;
  optional uint64 cache_scanned = 5;
}
Field
removed 
retained 
cache_removedFunction-invocation cache GC pass (run before the block-store sweep).
cache_keptunexpired cache entries kept
cache_scannedtotal cache trie nodes scanned

StorageUsageProgress

Live progress of a scan.

message StorageUsageProgress {
  optional uint64 roots_marked = 1;
  optional uint64 roots_total = 2;
  optional uint64 blocks_marked = 3;
  optional bool counting_unreachable = 4;
}
Field
roots_markedRoots submitted to the mark phase out of the total known so far.
roots_total 
blocks_markedBlocks reached so far.
counting_unreachableTrue once marking is done and the scan is counting what nothing reached.

StorageUsage

message StorageUsage {
  optional StorageAmount total = 1;
  optional StorageAmount reachable = 2;
  optional StorageAmount unreachable = 3;
  repeated StorageUsageByClasses by_classes = 4;
  repeated StorageUsageByDataType by_data_type = 5;
  repeated StorageUsageGroup groups = 6;
  repeated StorageUsageRoot top_roots = 7;
  optional uint64 duration_ms = 8;
}
Field
totalevery block in the store
reachable 
unreachablewhat the next GC would reclaim
by_classeslargest first
by_data_typelargest first
groupslargest first
top_rootslargest first
duration_ms 

StorageAmount

message StorageAmount {
  optional uint64 blocks = 1;
  optional uint64 bytes = 2;
}

StorageUsageByClasses

Blocks held by exactly this set of classes and no other. The rows partition the reachable set, so they sum to StorageUsage.reachable.

message StorageUsageByClasses {
  repeated StorageRootClass classes = 1;
  optional StorageAmount amount = 2;
}
Field
classessorted, never empty
amount 

StorageUsageByDataType

message StorageUsageByDataType {
  optional string data_type = 1;
  optional StorageAmount reachable = 2;
  optional StorageAmount unreachable = 3;
}
Field
data_typethe DataType label: blob, fs-node, dag-cbor, …
reachable 
unreachable 

StorageUsageGroup

Roots of one class sharing a label, e.g. every cached output of pod.dag/v0.0.0. charged is first-reach attribution: each reachable block is charged to exactly one root, the earliest in a fixed order (classes in enum order, roots in a stable order within a class), so the groups sum to the reachable set and a group's charge is what it holds that nothing earlier does. A block pinned after the scan read its roots is counted in the LIVE_PIN group with an empty label, charged to no root.

message StorageUsageGroup {
  optional StorageRootClass class = 1;
  optional string label = 2;
  optional uint64 roots = 3;
  optional StorageAmount charged = 4;
}

StorageUsageRoot

message StorageUsageRoot {
  optional StorageRootClass class = 1;
  optional string label = 2;
  optional string cid = 3;
  optional StorageAmount charged = 4;
}

RefInfo

message RefInfo {
  optional string name = 1;
  optional string cid = 2;
  optional string data_type = 3;
}
Field
name 
cid 
data_typeWhat the CID says it holds, as the label bldr inspect prints (deployment, runnable, fs-node, …); dag-cbor when it claims nothing in particular.

GetBlobHeader

message GetBlobHeader {
  optional string cid = 1;
  optional uint64 size = 2;
}
Field
cid 
sizetotal bytes in the requested range

GetBlobStats

message GetBlobStats {
  optional uint64 blocks_fetched = 1;
}

BlobView

message BlobView {
  optional uint64 size = 1;
  optional bool is_text = 2;
  optional string preview = 3;
  optional bool truncated = 4;
}
Field
size 
is_textWhether the sampled bytes decode as UTF-8 text.
previewFirst bytes of the blob (UTF-8), truncated. Empty for binary.
truncatedTrue if the blob is larger than the sampled preview.

FsNodeView

message FsNodeView {
  optional string node_kind = 1;
  optional uint32 mode = 2;
  optional uint32 uid = 3;
  optional uint32 gid = 4;
  optional uint64 size = 5;
  optional string symlink_target = 6;
  optional string preview = 7;
  optional bool preview_truncated = 8;
  repeated FsEntry entries = 9;
  optional bool entries_truncated = 10;
}
Field
node_kind"directory" | "file" | "symlink" | "fifo" | "char-device" | "block-device" | "socket" | "wipeout".
mode 
uid 
gid 
sizeFor a file: content size in bytes.
symlink_targetFor a symlink: the target path.
previewFor a file that is UTF-8 text: a truncated preview.
preview_truncated 
entriesFor a directory: its immediate entries (each child CID is clickable).
entries_truncatedTrue if entries was capped (very large directory).

FsEntry

message FsEntry {
  optional string name = 1;
  optional string kind = 2;
  optional uint32 mode = 3;
  optional uint64 size = 4;
  optional string cid = 5;
}
Field
name 
kindSame vocabulary as FsNodeView.node_kind.
mode 
size 
cidCID of the child FsNode (open it with InspectObject).

ContainerImageView

message ContainerImageView {
  optional string architecture = 1;
  optional string os = 2;
  repeated string env = 3;
  repeated string entrypoint = 4;
  repeated string cmd = 5;
  optional string working_dir = 6;
  optional string user = 7;
  repeated string labels = 8;
  repeated ImageLayer layers = 9;
}
Field
architecture 
os 
env 
entrypoint 
cmd 
working_dir 
user 
labels"key=value" pairs.
layers 

ImageLayer

message ImageLayer {
  optional string media_type = 1;
  optional uint64 size = 2;
  optional string cid = 3;
  optional string digest = 4;
}
Field
media_type 
size 
cidCID of the layer content (a Blob or FsNode), when known — clickable.
digestOCI digest string (e.g. sha256:...), for reference.

BuildOutputView

A BuildOutput: named output directories, deployments, runnables, and test targets — each a name → CID link.

message BuildOutputView {
  repeated NamedCid outputs = 1;
  repeated NamedCid deployments = 2;
  repeated NamedCid runnables = 3;
  repeated NamedCid tests = 4;
}

NamedCid

A name → CID link entry (a BuildOutput's outputs / deployments).

message NamedCid {
  optional string name = 1;
  optional string cid = 2;
  optional string kind = 3;
  optional map<string, string> labels = 4;
}
Field
name 
cid 
kindWhat the CID is, for a build output: "fsnode" (a directory — the default, and what's used for deployments/runnables/tests), "container_image", or "image_index". Lets a client show/handle an image output differently from a filesystem tree.
labelsThe output's labels, when it carries any (a BuildOutput's output_labels): opaque key/value pairs the controller attached to say what the tree is for, so a client can present such outputs differently without fetching them. Empty for an unlabelled output (the common case) and for deployments/runnables/tests.

DeploymentView

A standalone Deployment block: a node function + its options.

message DeploymentView {
  optional string function = 1;
  optional string options_yaml = 2;
  optional map<string, string> labels = 3;
}
Field
function 
options_yamlThe options block rendered as tagged YAML (CIDs linkified by the client).
labelsDefault labels declared with the deployment (e.g. bldr.deployment.name).

BuildInputView

A build's BuildInput: workspace members (name → content CID) + options.

message BuildInputView {
  repeated NamedCid members = 1;
  optional string options_yaml = 2;
}
Field
membersInline member entries (name → member content CID). Members stored in a deeper HAMT shard appear as hamt links the client can drill into.
options_yaml 

HamtView

message HamtView {
  repeated HamtEntry entries = 1;
}

HamtEntry

A HAMT (sharded map) node: each slot is either a key→value leaf or a link to a child shard node.

message HamtEntry {
  optional string key = 1;
  optional string cid = 2;
  optional bool is_subtrie = 3;
}
Field
keyempty for a sub-trie link
cidvalue CID (leaf) or child-node CID (sub-trie)
is_subtrie 

BuildMemberView

A BuildMember: a workspace member as stored in a BuildInput — a link to the member's content, the kind of content it points at, and its config options.

message BuildMemberView {
  optional string content_cid = 1;
  optional string kind = 2;
  optional map<string, string> metadata = 3;
}
Field
content_cid 
kind"directory" | "container-image" | "dag" | "other".
metadataPer-member options (members.&lt;name>.options in the workspace config).

RunnableView

A standalone Runnable block: bridge networks + long-lived services, the docker-compose-equivalent launched by bldr run.

message RunnableView {
  repeated RunnableNetworkView networks = 1;
  repeated RunnableServiceView services = 2;
}

RunnableNetworkView

message RunnableNetworkView {
  optional string name = 1;
  optional string subnet = 2;
  optional bool internet_access = 3;
}
Field
name 
subnetempty → auto-assigned
internet_access 

RunnableServiceView

message RunnableServiceView {
  optional string name = 1;
  optional string image_cid = 2;
  repeated string command = 3;
  optional map<string, string> env = 4;
  optional string hostname = 5;
  optional string network = 6;
  repeated RunnableMountView mounts = 7;
  repeated RunnablePortView ports = 8;
  repeated string depends_on = 9;
  optional bool internet_access = 10;
}

RunnableMountView

message RunnableMountView {
  optional string source_cid = 1;
  optional string dest = 2;
  optional bool hotswap = 3;
  optional bool mutable = 4;
}

RunnablePortView

message RunnablePortView {
  optional uint32 host_port = 1;
  optional uint32 pod_port = 2;
  optional bool udp = 3;
}

ImageIndexView

A multi-arch OCI image index: a set of per-platform image manifests. Distinct from a single-platform ContainerImage (which has layers + a config).

message ImageIndexView {
  optional string media_type = 1;
  optional string digest = 2;
  repeated ImageIndexEntry manifests = 3;
}

ImageIndexEntry

message ImageIndexEntry {
  optional string os = 1;
  optional string architecture = 2;
  optional string variant = 3;
  optional string manifest_cid = 4;
  optional string digest = 5;
  optional uint64 size = 6;
  optional string media_type = 7;
}
Field
os 
architecture 
variante.g. "v7" for arm/v7; empty if none
manifest_cidThe stored per-platform manifest block CID (drill into it), if linked.
digest 
size 
media_type 

TestResultsView

A TestResults block: a build test target's cases. Counts and the pass verdict are derived from cases by the client. Pageable on the wire — one response holds this block's cases; more_results_cid links the next page (fetched separately).

message TestResultsView {
  repeated TestCaseView cases = 1;
  optional string more_results_cid = 2;
}
Field
casesthis page's cases
more_results_cidnext page's CID, empty on the last page

CoverageReportView

A CoverageReport root: what one coverage run proved. members mirrors the stored block, which holds the whole index inline (a workspace has tens of members) — so no cap and no paging here.

message CoverageReportView {
  optional string tool = 1;
  optional CoverageSummaryView summary = 2;
  repeated CoverageMemberEntryView members = 3;
  optional string more_members_cid = 4;
  optional string generated_cid = 5;
  optional string external_cid = 6;
}
Field
toolWhat produced the data, e.g. cargo-llvm-cov. Explains where the numbers came from; never something to branch on.
summary 
members 
more_members_cidNext page of the member index, empty on the last page. Populated only by a report too wide for one block; summary already covers the whole run.
generated_cidThe CoverageMember holding files that belong to no member (generated code); empty when the run produced none.
external_cidThe CoverageMember holding files from outside the workspace entirely (an instrumented dependency); empty when the run kept none.

CoverageSummaryView

The counters of one coverage summary, a pair per granularity (see bldr-types' CoverageSummary). A tool with no notion of a granularity reports 0/0 there; a consumer renders that pair as "not measured", never as 0%.

message CoverageSummaryView {
  optional uint64 lines_total = 1;
  optional uint64 lines_covered = 2;
  optional uint64 functions_total = 3;
  optional uint64 functions_covered = 4;
  optional uint64 regions_total = 5;
  optional uint64 regions_covered = 6;
  optional uint64 branches_total = 7;
  optional uint64 branches_covered = 8;
}

CoverageMemberEntryView

One row of a CoverageReport's member index.

message CoverageMemberEntryView {
  optional string name = 1;
  optional CoverageSummaryView summary = 2;
  optional string detail_cid = 3;
}
Field
name 
summary 
detail_cidThe member's own CoverageMember block, holding its file index.

CoverageMemberView

One member's coverage: its totals and where its file index lives.

message CoverageMemberView {
  optional string name = 1;
  optional CoverageSummaryView summary = 2;
  optional string files_cid = 3;
  optional uint64 file_count = 4;
}
Field
name 
summary 
files_cidThe files HAMT root (path-in-member → per-file entry); empty for a member with no covered files.
file_countHow many entries files holds — stored on the block because the HAMT can only answer by walking.

DiagnosticsView

A Diagnostics block: this page's findings. Counts are derived from diagnostics by the client — the TestResultsView convention, and the only honest option: one block cannot know its chain's total. member and target are empty on every entry, because a bare block carries neither a workspace nor the name of the build step that produced it.

message DiagnosticsView {
  repeated CodeDiagnostic diagnostics = 1;
  optional string more_diagnostics_cid = 2;
}
Field
diagnostics 
more_diagnostics_cidNext page's CID, empty on the last page (inspected separately).

PipelineView

A Pipeline block: a declarative pipeline definition authored by build code (scope.addPipelineTarget).

message PipelineView {
  optional string name = 1;
  optional string definition_json = 2;
}
Field
name 
definition_jsonThe whole definition, rendered as JSON with links in dag-json form (&#123;"/": "&lt;cid>"&#125;). The block's shape is the contract — bldr-types/src/pipeline.rs, mirrored by the authoring API — and it is decoded before rendering, so this is always a validated definition, never arbitrary bytes. Carried as JSON rather than mirrored message by message so a grown definition never reworks this view: a consumer renders the fields it knows and shows the rest as data.

SnapshotMember

One member of a WorkspaceRevisionSnapshot (a pinned MemberRevision).

message SnapshotMember {
  optional string name = 1;
  optional string pin = 2;
  optional string kind = 3;
  optional TrackingInfo tracking = 4;
  optional map<string, string> options = 5;
}
Field
name 
pinThe pinned content CID (a DAG root). Always present in a snapshot.
kindWhat the pinned content is (e.g. directory, container-image).
trackingUpstream tracking, if the snapshot member carries any.
optionsThe member's absolute per-member options.

StorageRootClass

What keeps a block alive. A block can be held by several classes at once; StorageUsage.by_classes reports each combination separately.

enum StorageRootClass {
  STORAGE_ROOT_CLASS_UNSPECIFIED = 0;
  STORAGE_ROOT_CLASS_LIVE_PIN = 1;
  STORAGE_ROOT_CLASS_NAMED_REF = 2;
  STORAGE_ROOT_CLASS_PIN_ANCHOR = 3;
  STORAGE_ROOT_CLASS_CACHE_OUTPUT = 4;
  STORAGE_ROOT_CLASS_MAP_ENTRY = 5;
  STORAGE_ROOT_CLASS_CACHE_VOLUME = 6;
}
Value
STORAGE_ROOT_CLASS_UNSPECIFIED 
STORAGE_ROOT_CLASS_LIVE_PINPinned in memory by something in flight (a build, an import, a mount).
STORAGE_ROOT_CLASS_NAMED_REFA named ref, local or cluster-wide. Label: the ref name (empty for a cluster ref, which is listed by CID alone).
STORAGE_ROOT_CLASS_PIN_ANCHORThis node's distributed-pinning anchors. Label: empty.
STORAGE_ROOT_CLASS_CACHE_OUTPUTA cached function-invocation output. Label: the function name; (nested inputs) for the nested-call inputs a cache frontier roots.
STORAGE_ROOT_CLASS_MAP_ENTRYA CID-map entry. Label: the key's first path segment (log, …).
STORAGE_ROOT_CLASS_CACHE_VOLUMEA workspace cache volume. Label: the volume name.

RefCondition

Matches local_storage::SetRefCondition — controls the atomic precondition.

enum RefCondition {
  REF_CONDITION_UNSPECIFIED = 0;
  REF_CONDITION_IF_NOT_EXISTS = 1;
  REF_CONDITION_IF_EXISTS = 2;
  REF_CONDITION_IF_EQUALS = 3;
}
Value
REF_CONDITION_UNSPECIFIEDDefault / unset — treated as unconditional by the server.
REF_CONDITION_IF_NOT_EXISTSApply only if the ref does not currently exist.
REF_CONDITION_IF_EXISTSApply only if the ref currently exists.
REF_CONDITION_IF_EQUALSApply only if the ref's current CID matches expected_cid.

ObjectKind

The detected high-level type of a block.

enum ObjectKind {
  OBJECT_KIND_UNSPECIFIED = 0;
  OBJECT_KIND_BLOB = 1;
  OBJECT_KIND_FS_NODE = 2;
  OBJECT_KIND_CONTAINER_IMAGE = 3;
  OBJECT_KIND_DAG_CBOR = 4;
  OBJECT_KIND_BUILD_OUTPUT = 5;
  OBJECT_KIND_DEPLOYMENT = 6;
  OBJECT_KIND_BUILD_INPUT = 7;
  OBJECT_KIND_HAMT = 8;
  OBJECT_KIND_BUILD_MEMBER = 9;
  OBJECT_KIND_RUNNABLE = 10;
  OBJECT_KIND_IMAGE_INDEX = 11;
  OBJECT_KIND_TEST_RESULTS = 12;
  OBJECT_KIND_COVERAGE_REPORT = 13;
  OBJECT_KIND_COVERAGE_MEMBER = 14;
  OBJECT_KIND_COVERAGE_FILE = 15;
  OBJECT_KIND_DIAGNOSTICS = 16;
  OBJECT_KIND_PIPELINE = 17;
}
Value
OBJECT_KIND_UNSPECIFIED 
OBJECT_KIND_BLOBopaque bytes (DataType::Blob)
OBJECT_KIND_FS_NODEa filesystem tree node
OBJECT_KIND_CONTAINER_IMAGEan OCI image manifest
OBJECT_KIND_DAG_CBORgeneric DAG-CBOR (no known shape)
OBJECT_KIND_BUILD_OUTPUTa build's BuildOutput (outputs + deployments)
OBJECT_KIND_DEPLOYMENTa Deployment block (function + options)
OBJECT_KIND_BUILD_INPUTa build's BuildInput (members + options)
OBJECT_KIND_HAMTa HAMT map node (sharded map)
OBJECT_KIND_BUILD_MEMBERa BuildMember (member content link + kind)
OBJECT_KIND_RUNNABLEa Runnable block (networks + services)
OBJECT_KIND_IMAGE_INDEXa multi-arch OCI image index (per-platform manifests)
OBJECT_KIND_TEST_RESULTSa TestResults block (test cases + pass/fail)
OBJECT_KIND_COVERAGE_REPORTa CoverageReport root (run totals + member index)
OBJECT_KIND_COVERAGE_MEMBERone member's coverage (totals + its file index)
OBJECT_KIND_COVERAGE_FILEone file's per-line counts (paged); no typed view — the raw IPLD is the view
OBJECT_KIND_DIAGNOSTICSa Diagnostics page (findings + link to the next page)
OBJECT_KIND_PIPELINEa Pipeline definition, authored by build code

On this page

Gc(GcRequest) -> stream GcEventRequest: GcRequestResponse: GcEventScanStorageUsage(ScanStorageUsageRequest) -> stream StorageUsageEventRequest: ScanStorageUsageRequestResponse: StorageUsageEventGetRef(GetRefRequest) -> GetRefResponseRequest: GetRefRequestResponse: GetRefResponseListRefs(ListRefsRequest) -> ListRefsResponseRequest: ListRefsRequestResponse: ListRefsResponseSetRef(SetRefRequest) -> SetRefResponseRequest: SetRefRequestResponse: SetRefResponseDeleteRef(DeleteRefRequest) -> DeleteRefResponseRequest: DeleteRefRequestResponse: DeleteRefResponseStatBlob(StatBlobRequest) -> StatBlobResponseRequest: StatBlobRequestResponse: StatBlobResponseGetBlob(GetBlobRequest) -> stream GetBlobResponseRequest: GetBlobRequestResponse: GetBlobResponseGetIpld(GetIpldRequest) -> GetIpldResponseRequest: GetIpldRequestResponse: GetIpldResponseInspectObject(InspectObjectRequest) -> InspectObjectResponseRequest: InspectObjectRequestResponse: InspectObjectResponseInspectRevisionSnapshot(InspectRevisionSnapshotRequest) -> InspectRevisionSnapshotResponseRequest: InspectRevisionSnapshotRequestResponse: InspectRevisionSnapshotResponseValidateCidKind(ValidateCidKindRequest) -> ValidateCidKindResponseRequest: ValidateCidKindRequestResponse: ValidateCidKindResponsePutBlob(stream PutBlobRequest) -> PutBlobResponseRequest: PutBlobRequestResponse: PutBlobResponsePutIpld(PutIpldRequest) -> PutIpldResponseRequest: PutIpldRequestResponse: PutIpldResponseFetch(FetchRequest) -> FetchResponseRequest: FetchRequestResponse: FetchResponseFetchIpld(FetchRequest) -> FetchIpldResponseRequest: FetchRequestResponse: FetchIpldResponsePutFs(PutFsRequest) -> PutFsResponseRequest: PutFsRequestResponse: PutFsResponseGetFs(GetFsRequest) -> GetFsResponseRequest: GetFsRequestResponse: GetFsResponseTypes used aboveGcProgressGcResponseStorageUsageProgressStorageUsageStorageAmountStorageUsageByClassesStorageUsageByDataTypeStorageUsageGroupStorageUsageRootRefInfoGetBlobHeaderGetBlobStatsBlobViewFsNodeViewFsEntryContainerImageViewImageLayerBuildOutputViewNamedCidDeploymentViewBuildInputViewHamtViewHamtEntryBuildMemberViewRunnableViewRunnableNetworkViewRunnableServiceViewRunnableMountViewRunnablePortViewImageIndexViewImageIndexEntryTestResultsViewCoverageReportViewCoverageSummaryViewCoverageMemberEntryViewCoverageMemberViewDiagnosticsViewPipelineViewSnapshotMemberStorageRootClassRefConditionObjectKind