Library

The Library is SignStack's mechanism for sharing blueprints and templates across Namespace and even Organization boundaries. Namespaces (and orgs) are isolated by design — but real teams need to publish reusable building blocks: starter contracts, internal standards, white-label offerings. The Library is how that sharing happens, with explicit access control.

What Lives in the Library

Currently, the Library catalogs two kinds of resources:

  • Blueprints — full signing workflows
  • Templates — single document definitions

Each entry is a listing that points at a specific version (key@version) of a blueprint or template. Listings are immutable references — when you publish a listing for offer_letter@1.2.0, that exact version is what consumers see, even if you later cut 1.3.0 in your namespace.

Two Scopes

A listing is either public or org-scoped.

Scope Who can see it
public Any SignStack user. Useful for starter blueprints and open templates.
org Only orgs (and optionally specific namespaces) you explicitly grant access to.

Org-scoped listings let you share with selected partners or sub-teams without publishing publicly. Each access grant names an orgId and either an explicit list of namespaceKeys within that org, or '*' for all namespaces.

Use Cases

  • Starter blueprints — Publish a curated catalog of ready-to-fork agreements (NDA, consulting agreement, employment offer) so new orgs can get to a working contract in minutes.
  • Internal distribution — Share a corporate standard (e.g., the legal team's approved NDA) across every tenant namespace in a multi-tenant product, while letting each tenant adapt the surrounding workflow.
  • White-label offering — Distribute your domain-specific contracts to client orgs as ready-to-customize building blocks.

Try or Customize

Every listing exposes two actions:

  • Try — Run a workflow directly against the listing. No fork, no copy in your namespace; the listing is the source of truth and the workflow runs against it as-is. Use this when the listing is exactly what you need and you just want to run it (once or many times).
  • Customize — Use this when the listing is close to what you need but not quite. It opens as a draft in Studio that you can preview and iterate on without persisting. When you're happy, publish it as a versioned resource in your namespace and run workflows against it.

The Try action also has a programmatic equivalent: the create-workflow API accepts listingKey + listingVersion as one of its blueprint sources (alongside blueprintKey + blueprintVersion for in-namespace blueprints).

Versioning

Library listings reference immutable resource versions. Publishing a new version of a listing is how you ship updates — consumers who Try the listing run against the version they targeted, and consumers who Customize stay on the snapshot they forked until they choose to refork from a newer listing version. This is the same immutability story as the rest of SignStack's primitives, applied at the distribution layer.

  • Namespaces — Why isolation is the default and Library is the controlled escape hatch
  • Blueprints and Templates — The units of what gets shared via the Library