Portal Community
Two families: add/list/remove/update/verify manage pins on the connected Kubo daemon itself. remote* operations manage pins on an external Pinning Service API (PSA)-compliant provider that Kubo has been told about — a different concept from the cluster resource, which talks to a separate IPFS Cluster daemon.

add

FieldTypeRequiredDefault
cidtext✓ Yes
recursiveboolNotrue
pinNametextNo

Missing cidCFG_MISSING_CID. Response: { cid, recursive, pinName }.

list

FieldTypeRequiredDefault
pinTypeselectNoall (direct/indirect/recursive/all)
nameFiltertextNo—, exact match
limitintNo

Response: array of { cid, type, name }, plus count.

limit is applied client-side. Kubo returns the full pin list; limit then truncates it after the fact rather than being sent to Kubo as a query parameter.

remove

FieldTypeRequiredDefault
cidtext✓ Yes
recursiveboolNotrue

Missing cidCFG_MISSING_CID. recursive must match the value the pin was originally added with. Response: { cid, recursive }.

update

FieldTypeRequiredDefault
oldCidtext✓ Yes
newCidtext✓ Yes
unpinboolNotrue

Missing fields → CFG_MISSING_OLD_CID, then CFG_MISSING_NEW_CID. Requires oldCid already recursively pinned. Response: { oldCid, newCid, unpinned }.

verify

FieldTypeRequiredDefault
verboseboolNofalse
quietboolNotrue

Response: { verified, count, badPins: [{ cid, reason }] }.

A failed verification is data, not an error. verified: false still routes to the success output port — it's a legitimate integrity-check result, not an execution failure.

remoteAdd

FieldTypeRequiredDefault
cidtext✓ Yes
remoteServiceNametext✓ Yes
pinNametextNo
backgroundboolNofalse

Missing fields → CFG_MISSING_CID, then CFG_MISSING_REMOTE_SERVICE. Blocks until a terminal pin status unless background=true. Response: { cid, remoteServiceName, pinName, remoteStatus }.

remoteList

FieldTypeRequiredDefault
remoteServiceNametext✓ Yes
nameFiltertextNo—, exact match
cidFiltertextNo—, comma-separated CIDs
statusFiltertextNopinned, comma-separated statuses

Missing service → CFG_MISSING_REMOTE_SERVICE. Response: array of { cid, name, remoteStatus }, plus count.

remoteRemove

FieldTypeRequiredDefault
remoteServiceNametext✓ Yes
nameFiltertextNo
cidFiltertextNo
statusFiltertextNopinned
forceboolNofalse

Missing service → CFG_MISSING_REMOTE_SERVICE. Kubo requires force=true when the filter matches more than one remote pin — the executor forwards the flag, Kubo enforces the safety rule. Response: { remoteServiceName }.

remoteServiceAdd

FieldTypeRequiredDefault
remoteServiceNametext✓ Yes
remoteServiceEndpointtext✓ YesPSA-compliant base URL
remoteServiceApiKeytext (sensitive)✓ Yes

Validated in order: CFG_MISSING_REMOTE_SERVICECFG_MISSING_REMOTE_ENDPOINTCFG_MISSING_REMOTE_API_KEY. Response: { remoteServiceName, remoteServiceEndpoint }remoteServiceApiKey is deliberately never included in the output.

remoteServiceList

FieldTypeRequiredDefault
includeStatsboolNofalse

Response: array of { name, endpoint, statStatus, queuedCount, pinningCount, pinnedCount, failedCount }, plus count. API keys are never present in the listing — Kubo stores them write-only.

remoteServiceRemove

FieldTypeRequired
remoteServiceNametext✓ Yes

Missing service → CFG_MISSING_REMOTE_SERVICE. Response: { remoteServiceName }. De-registers the service locally — it does not unpin content already sitting on the remote provider.