Publish a Workflow

Turn a governed CSV plan into a signed, one-command install on the marketplace. Free by default; add a price to sell it.

Prerequisites

A publisher identity, and a workflow CSV that has already built cleanly on your machine (i.e. railcall build workflow.csv produced a signed receipt).

shell
railcall market publisher init      # once ever
railcall market publisher register  # once ever, then login
railcall market login

Claim your slug

Reserve the human-readable slug you want users to install by. Slugs are always namespaced under your handle.

shell
railcall market claim your-handle/fraud-triage

Publish

Publishing signs your bundle with the Ed25519 key bound to your publisher handle and uploads it. Users install by the slug you claimed.

shell
railcall market publish
# ↳ signs the current workspace bundle for your claimed slug
# ↳ uploads to railcall-marketplace-lggm.onrender.com
# ↳ available immediately at railcall.ai/marketplace

Pricing

Workflows are free by default. To sell one, set a price on the marketplace listing after your first publish — RailCall's 5% take is applied at checkout, wallet-and-payout model. Creators withdraw when they're ready.

Gated workflows

If your workflow depends on a paid module you also publish, set license_required: true on the module (not the workflow) — the workflow itself installs freely and refuses to run until the module license is present. That's the sami666/salesforce pattern today.

What NOT to hardcode
Never bake OAuth tokens, bearer secrets, or webhook URLs into your workflow CSV. Users configure those in Studio → Integrations against their own accounts. A published workflow that leaks a secret is a published leak.

Updating a listing

Re-run railcall market publish from the updated workspace. The marketplace stores every signed version; users pick up the newer version on their next railcall market install or in-Studio update.

Verify from a clean machine

shell
railcall market get your-handle/fraud-triage
railcall market install your-handle/fraud-triage
railcall workflow run <installed-path>       # dry-run first
railcall verify                              # last receipt, offline