Home

Signing Backends

Content Credentials always contain a C2PA signature, but that signature can be created by different signing backends. The backend is separate from the provenance profile: the profile controls how much provenance is included, while the signer controls which identity signs the manifest.

Backend Choices

Use this as a starting point:

SignerBest forWhat it means
autoDefault render and site workflowsUse Stencila Cloud signing when a Cloud token is available, otherwise use the local signing identity
cloudPublic or organizational releasesSend the asset and generated provenance to Stencila Cloud for signing
localLocal testing and private workflowsSign with the self-signed identity created by stencila credentials init

The default signer is auto. It uses Stencila Cloud signing when a Cloud token is available and falls back to local signing when possible. Use local when you need to avoid Cloud signing, or cloud when unauthenticated local fallback should be an error.

stencila render article.smd article.pdf --credentials
stencila render article.smd article.pdf --credentials --credentials-signer cloud
stencila render article.smd article.pdf --credentials --credentials-signer local
stencila render article.smd article.pdf --credentials --credentials-soft-binding
stencila render article.smd article.pdf --credentials --credentials-no-soft-binding

The standalone asset command, stencila credentials sign, currently signs with a local identity or explicitly supplied certificate material. It does not use the Cloud signing backend.

Local Signing

Local signing uses certificate and key material on your machine. Create the default local identity with:

stencila credentials init

Local signing is useful while developing a workflow or sharing files inside a small team, but public verifiers should usually report the signer as untrusted or unrecognized unless your workflow provides custom trust anchors.

Cloud Signing

Cloud signing sends the asset and the generated provenance payload to Stencila Cloud's C2PA signing service. The service signs via:

POST https://c2pa.stencila.cloud/v1/sign

This /v1/sign route is a Stencila extension hosted beside the C2PA Soft Binding Resolution API. It is not part of the official C2PA API.

Cloud signing requires a Stencila Cloud API key, normally provided by signing in to Stencila Cloud:

stencila cloud signin

You can also provide STENCILA_API_KEY through the environment or Stencila secrets. STENCILA_C2PA_URL can override the C2PA service base URL for testing or deployment-specific routing.

Cloud signing through --credentials-signer cloud signs the provenance that the local client generated. This gives a stronger signer identity than a local self-signed certificate, but it does not prove that the local snapshot payload was independently generated by Stencila Cloud.

Site Rendering

For workspace-wide render defaults, configure Content Credentials at the root of stencila.toml:

[content-credentials]
enabled = true
profile = "public"
signer = "cloud"
soft-binding = true

For sites, you can also enable or override Content Credentials under site:

[site]
content-credentials = true

Use the detailed site form to override the root profile or signer:

[site.content-credentials]
profile = "public"
signer = "cloud"
soft-binding = true

During site rendering, Stencila signs extracted media assets and annotates the HTML image components with compact manifest metadata. The signed asset bytes and their C2PA manifests remain the source of truth for verification.

Manifest Identity

Stencila records how the manifest was generated and signed in standard C2PA claim_generator_info, using Stencila extension keys for the two facts generic C2PA fields do not distinguish:

Scenarionameorg.stencila.generated_byorg.stencila.signed_by
Rendered locally, signed locallyStencila CLIclientlocal
Rendered locally, signed by Stencila CloudStencila Cloud Signing Serviceclientstencila-cloud
Rendered and signed by Stencila CloudStencila Cloudstencila-cloudstencila-cloud

The third case is the strongest Stencila-hosted provenance signal because the provenance snapshot was generated by Cloud infrastructure and signed there. The second case still has a Cloud signature, but the snapshot was supplied by the client.

Soft Bindings

Stencila Cloud is implementing the C2PA Soft Binding Resolution API at https://c2pa.stencila.cloud/v1. Soft binding registration is enabled by default. Use --credentials-no-soft-binding, or soft-binding = false in [content-credentials], to skip the combined sign, store, and soft-bind workflow. When signing falls back to a local identity, Stencila signs the asset locally and reports that soft binding registration was skipped.

© 2026 Stencila