Publishing to the marketplace
Publishing turns a working connector or operator pack into a listing other tenants can install. The mechanics are one command; the substance is the listing metadata, which the marketplace renders directly and the Fibric team reviews before anything goes live. During early access, review is a conversation with the team, proposals are considered individually, and the bar is the same one the five live listings cleared.
Listing metadata requirements
A listing has two layers: the card shown in the marketplace grid, and the detail page behind it. Every field below is real; these are the fields the live catalog is built from, and review checks each one.
Card fields
| Field | Type | Required | Requirement |
|---|---|---|---|
id | string | yes | Stable slug, cn- prefix for connectors, op- for operator packs. Immutable after first publish. Examples: cn-kustomer, op-order-sentinel. |
name | string | yes | The display name. Product-plain, no slogans: "Kustomer", "Order Risk". |
category | string | yes | Marketplace category. Must be consistent with the def's ConnectorCategory. |
type | 'connector' | 'operator' | yes | Whether the listing is a connector or an operator pack. |
status | 'live' | 'early-access' | set by review | You do not set this. See the status lifecycle. |
caps | string | yes | One short capability line for the card, sense side then act side: "reads conversations · writes notes back idempotently". |
blurb | string | yes | One to two complete sentences. Cards never truncate, so the blurb must stand on its own. |
tags | string[] | yes | Three to five search tags. |
Detail page fields
| Field | Type | Required | Requirement |
|---|---|---|---|
tagline | string | yes | One sentence stating what the listing does in the installer's terms. "Conversations in, notes and status back — idempotently, in production today." |
about | string[2] | yes | Exactly two paragraphs. The first describes what it senses or reasons over and why that matters; the second describes what it does about it and where it runs today. Claims about production use must be true and verifiable. |
senses | string[3] | yes | Exactly three lines describing what the listing reads. Concrete nouns, no adjectives doing the work. |
acts | string[] | yes | What it writes or proposes. For side-effecting connectors, each line should name the discipline: "Writes notes to a conversation, idempotently." |
auth | string | yes | One sentence describing how credentials work, consistent with the def's AuthSchema. Operator packs use the standard line: they run inside the tenant and hold no credentials of their own. |
requires | string[] | yes | What an installer must already have, stated by capability, with example connectors in parentheses: "A support connector (Kustomer or Zendesk) for conversation context." |
worksWith | string[] | yes | Ids of listings this one pairs with. Must be real catalog ids; review rejects dangling references. |
since | string | live only | YYYY-MM of first production use. Set when the listing reaches live status, not before. cn-kustomer carries 2026-03; op-order-sentinel carries 2026-04. |
Fields like about and senses render verbatim on the detail page. Review reads them against your def: a tool surface that does not match the acts list, or an auth line that contradicts the declared AuthSchema, sends the proposal back. Write the listing from the def, not from ambition.
A complete listing.json
The listing travels with the project as listing.json. This example is complete: every required card and detail field, in the register the marketplace expects.
{
"id": "cn-brightdesk",
"name": "Brightdesk",
"category": "comms",
"type": "connector",
"caps": "reads conversations and SLA state · writes notes back idempotently",
"blurb": "Reads Brightdesk conversations as governed events and writes notes back under idempotency, so a retried write is a safe no-op.",
"tags": ["support", "cx", "conversations", "helpdesk"],
"tagline": "Brightdesk conversations in, notes back — idempotently.",
"about": [
"The Brightdesk connector reads conversations, messages, and SLA state as governed events: every thread stamped with its tenant, its source, and the moment it changed, so an operator sees the conversation the way an agent would.",
"Writes go the other way under the same discipline: notes are idempotent, so a retried write collapses into the original rather than duplicating. Side effects run only through the deterministic executor, behind the tenant's trust policy."
],
"senses": [
"Conversations and messages as they arrive and change",
"SLA state and breach events per conversation",
"Customer records with contact history"
],
"acts": [
"Writes notes to a conversation, idempotently",
"Updates conversation status and assignment"
],
"auth": "A Brightdesk API key with the scopes you grant, stored in your tenant's secret store.",
"requires": [
"A Brightdesk instance and an API key with conversation read and note write scopes"
],
"worksWith": ["op-order-sentinel", "op-radar-analyst"]
}
Submitting
fibric publish validates the def and the listing together, then submits the proposal for review. Nothing becomes visible to other tenants at this point.
$ fibric publish ./connectors/brightdesk
validating def cn-brightdesk@1.0.0 ok
validating listing listing.json ok
card: id, name, category, type, caps, blurb, tags ok
detail: tagline, about[2], senses[3], acts, auth,
requires, worksWith ok
worksWith references resolve: op-order-sentinel, cn-magento ok
running contract tests 4 tools, 3 events ok
submitted proposal pub_01j9x2 for review.
status: proposed. the Fibric team will follow up on this proposal;
track it with: fibric publish --status pub_01j9x2
The review process
Fibric is in early access, and review reflects that honestly: proposals are reviewed by the Fibric team, individually, with a person on the other end. There is no automated approval path yet. Review covers four things, in order:
- Contract. The def satisfies the SDK contract: every tool validates its input, every side-effecting tool is flagged
sideEffecting, the declared auth kind matches how the connector actually authenticates, and the probe answers. - Secrets. No credential material in code, config, or logs, per the secret handling rules. This is the most common reason a proposal goes back.
- Listing accuracy. Every claim in
about,senses, andactsis checked against the tool and event surface. Production-use claims require a running deployment the team can verify. - Behavior. The team runs your fixture corpus through the harness and exercises the tools against a sandbox connection you provide. For operator packs, the prompt contract and guardrail defaults get a dedicated read.
Expect dialogue rather than a verdict. The five live listings each went through at least one revision cycle, and turnaround during early access is days, not weeks.
Pricing your listing
Pricing is part of the proposal and shows on the detail page. The platform's standing terms frame what you choose:
| Item | Terms |
|---|---|
| Platform | Free during early access. The Team plan is $240/mo under early-access terms. |
| Free connectors | Most connectors are free to install; the platform meters usage, not the listing. |
| Premium connectors | From $29 per source per month. A "source" is one connection: one Kustomer instance, one building. |
| Operator packs | From $49 per operator per month, per installed operator. |
| Action overage | $0.01 per action above plan allowances, metered from receipts, whoever published the connector that acted. |
Choose free unless the connector carries ongoing cost or genuine depth; a premium price on a thin wrapper will not survive review. Pricing changes after launch apply to new installs only; existing installs keep the terms they installed under until they upgrade a major version.
On paid listings you keep 97% of gross transaction value; Fibric retains a 3% listing fee (2% on private offers over $1M/year, 1.5% over $5M/year). Checkout runs on Stripe; payouts arrive monthly through Stripe Connect. Free listings pay no fee. Register as a publisher at fibric.io/sell/register.
Status lifecycle
Every listing moves through three states, and only review moves it forward:
| Status | Meaning | Visible to |
|---|---|---|
proposed | Submitted, in review with the Fibric team. May go through revision cycles. | You and the review team. |
early-access | Approved. Installable, provisioned through the early-access program with the team involved in each install. Most of the catalog is here today. | All tenants, marked early access. |
live | Running in production for at least one tenant, verified by the team, with the since date set. Five listings hold this status today: op-order-sentinel, op-radar-analyst, cn-kustomer, cn-magento, and cn-amazon-connect. | All tenants. |
Status attaches to the listing, versions attach to the artifact. A new version of a live listing does not reset its status, but a major version with new required capabilities gets a fresh behavioral review before it is offered to installers. Deprecation is explicit and never deletes: a deprecated version stays installable-in-place forever, because someone's production depends on it.
Updating a live listing
Publishing a new version of an existing listing is the same command against the same id with a bumped version. What review looks at depends on what changed:
- Listing-only changes (a sharper
tagline, an addedworksWithreference) are reviewed for accuracy only and typically turn around fastest. - Patch and minor artifact versions get a contract re-check and a fixture replay. The listing keeps its status.
- Major versions, anything that adds a required capability, changes the auth kind, or (for packs) alters guardrail defaults, get a fresh behavioral review before the version is offered to installers.
Existing installs are never force-upgraded. A tenant running cn-brightdesk@1.0.0 keeps running it after 1.1.0 ships; the upgrade is their decision, made against the diff the marketplace shows them.
Keep going
- Testing connectors: the fixture corpus and CI gates review expects you to arrive with.
- defineConnector(): the def the listing must accurately describe.
- Operator packs: the extra review surface packs carry, prompt contract and guardrails.
- CLI reference:
fibric publishflags and output in full.