production or staging), your running application fetches prompts by label at runtime using the SDK, and — before a risky change ships — you can run a quality gate that scores a candidate version against the current production baseline and blocks the release if it regresses.

The prompt library
The main Prompts page shows all prompts in your project as a list. Each row shows the prompt name, the number of versions, which labels are active, and when it was last updated. Prompts are grouped by folder. Ungrouped prompts appear first, followed by each folder’s prompts — see Organizing prompts into folders below. Click any prompt to open its detail view.Creating a prompt
Click New prompt
Choose a name
support-reply or product-description-generator. This name is used by the SDK to fetch the prompt at runtime.Add a folder (optional)
Choose a type
- Text — a single string with
{{variable}}placeholders for dynamic content - Chat — an array of message objects (
role,content) with placeholder support
Write the prompt
{{variable_name}} syntax for any values you want to substitute at runtime.Add model config (optional)
Set a label
staging, to this initial version.Add a commit message
Save
Organizing prompts into folders
As your prompt library grows, group related prompts into folders — for example, one folder per feature or per customer-facing surface. Moving a prompt to a folder never changes its name, so anything fetching it via the SDK is unaffected.Open the prompt's actions menu
Click Move to folder
Choose or create a folder
Confirm the move
The prompt detail view
Opening a prompt takes you to a detail view with seven tabs:Labels and promotion
Labels are mutable pointers to specific prompt versions. The recommended workflow is:- Create a new version — it starts as a draft with no label.
- Click Set staging to test it, or click Release to promote it directly to
production. - Your application code fetches prompts by label:
production fires an automatic regression check: Zespan compares evaluator scores between the new production version and the version it replaced, and — if any evaluator dropped more than 10 percentage points — creates a quality_regression notification. The Versions tab also shows this inline as an alert with Roll back and Fix with AI actions.Protected labels
Some labels — such asproduction — can be locked so that only users with Admin or Owner roles can move them. Configure protected labels in Settings → Prompts. This prevents accidental promotion from a Member-level account.
The quality gate
Before you trust a draft version, run it through the quality gate: it scores a dataset run of the candidate version, compares that score against a scored baseline run (by default, the run tied to whatever currently holds theproduction label), and returns a pass/fail verdict.
The gate checks three things:
Pick a dataset and evaluator
Produce a dataset run for the candidate version
Run the gate
Read the verdict
POST /v1/prompts/{name}/versions/{version}/gate, and a prompt edited in the dashboard and one edited in a pull request are held to the identical bar. See the Use tab for the linking snippet, or use the zespan-gate CLI to poll the route and turn the verdict into a CI exit code without writing the polling logic yourself.
Blast radius
The Versions tab also shows a blast radius card: which agents (byagent_name) called the version currently holding the production label in the last 24 hours, and how many calls each made. This tells you who’s actually exposed before you promote or roll back — a change that looks safe on paper can still be high-blast-radius if a critical agent depends on it.
Deployment history
Every promotion and rollback is recorded and shown newest-first on the Versions tab, including which version moved to which label and whether the quality gate passed for that release.Rollback
Roll back re-points theproduction label to the version it pointed at immediately before the most recent promotion — it undoes the last release, not an arbitrary older version. Click Roll back next to the current production version, or from the regression alert if one is showing.
You can also roll back via ZespanPilot: “Roll back the support-reply prompt.”
Enhance
The Enhance tab rewrites a text prompt using its own real production failures, not generic advice. It pulls the version’s recent failing generations from your traces, clusters them by root cause with an AI call, and proposes a rewrite that targets the top cause — every claim in the rewrite is backed by real trace IDs you can open.Choose what the rewrite should optimize for
Generate
Review the proposed draft
Save as a draft or save and release
Dependency tracking
A prompt can embed another prompt’s content by reference, using an inline@@@zespanPrompt:name=<name>|version=<n>@@@ (or |label=<label>) token inside its text — for example, a system prompt that pulls in a shared policy block maintained as its own prompt. When you save a version containing one of these references, Zespan resolves it, substitutes the referenced prompt’s content, and validates there’s no circular or missing dependency before the save succeeds.
Webhooks
Configure webhooks to notify external systems whenever your prompt library changes — for example, posting to a Slack channel when a new version ships, or kicking off a deploy when a label moves toproduction.
From the main Prompts page, click Webhooks to manage them.
Each webhook fires on one or more of these events:
Creating a webhook
Open the Webhooks page
Click New webhook
Name the webhook
slack-prompt-alerts or deploy-on-promote.Choose a channel
- HTTPS endpoint — enter the URL that should receive delivery payloads
- Slack — paste a Slack incoming-webhook URL to post directly to a channel
Select events
version.created, label.assigned, and version.deleted should trigger this webhook.Enable and save
Verifying deliveries
Every delivery is signed with your webhook secret. Zespan sends the signature in theX-Zespan-Signature-256 header as sha256=<hex digest> — the same convention GitHub webhooks use — so you can verify a payload genuinely came from Zespan before acting on it.
If a delivery fails due to a transient error, Zespan retries it automatically.

