Bot marketplace
Share bots across studios — publish, browse, copy.
The marketplace lets studios share bot definitions. A bot you've built and validated can be published for any other studio to copy into their own games. Copies are independent — once a studio forks your bot, your later edits don't propagate to them, and theirs don't propagate back.
Why a marketplace
Designing a believable filler bot is an investment. The marketplace turns that investment into a public asset:
- New studios bootstrap with proven bot patterns instead of starting from a blank textarea.
- Studios that specialize (e.g., racing-style ramp bots) get attribution and visibility when others copy them.
- The bots you copy are validated against your own game's economy on import — if a copied bot references an item or currency you don't have, you'll see the issue before it ever runs.
Lifecycle
draft ──► validated ──► published ──► copied ◄── any studio
│
└──► unpublished (existing copies unaffected)A bot moves through these states explicitly. Publishing is a button click on
a bot that's already validation-status valid. Unpublishing demotes the
bot back to studio scope; copies that other studios already made keep
working because they're independent rows.
Publishing
Open the bot in your studio and click Publish to marketplace in the Marketplace section. The bot must validate cleanly first — broken bots are never listed.
After publish:
scopeflips tomarketplace.publishedAtis stamped.- The bot detaches from a specific game so it's usable across studios.
- Your own event references continue to work — the bot's id is stable.
Browsing
Visit Marketplace in your studio's nav. The browse page shows every published bot from every studio, with search by name or description and cursor-paginated infinite scroll. Each card shows the bot's name, key, version, copy count, and publish date.
Copying
On a marketplace bot's detail page, choose:
- Destination game — the bot lands as a game-scoped bot under your studio.
- New key — defaults to
<source-key>-copybut you can rename. - New name — defaults to the source name.
After copy:
- A fresh
idis generated for the copy. forkedFromBotIdrecords the source for attribution.- The source bot's
versionis snapshotted (so we can show an “Update available” indicator if the source ships a new version). - The source's
copyCountis incremented for discovery. - The copy is fully editable. Your tweaks don't affect the source or anyone else who copied it.
Lineage
A forked bot shows its source in the editor's Marketplace section, with a link back to the original listing. This lineage is also visible in audit log entries for the bot.
Permissions
| Action | Required role |
|---|---|
| Publish a bot to the marketplace | GAME_ADMIN, GAME_DESIGNER |
| Copy a marketplace bot into your studio | GAME_ADMIN, GAME_DESIGNER |
| Unpublish a bot you own | GAME_ADMIN, GAME_DESIGNER |
| Take down any marketplace bot (policy) | PLATFORM_ADMIN |
Approval pipeline
Publishing isn't the same as appearing in the public listing. The flow looks like this:
draft / studio-scoped ──► publish ──► pending review ──► approved (listed) │
└──► rejected ◄──────────┘When you publish a bot:
- It flips to
scope: marketplacewithapprovalStatus: pending. - It is not visible in the public browse and cannot be copied yet.
- The Kraty team picks it up from the marketplace review queue.
A reviewer goes through the diagram, definition, and validation output, then either:
- Approves — the listing goes live in the public browse and becomes copyable.
- Rejects with notes — the listing is delisted but stays on your side. Fix the definition and republish to re-enter the queue.
Rejection notes land in your studio's audit log so the conversation is searchable.
What's next
The current MVP gates listings with a human review only. A future release will layer in automated adversarial validation (target-value extremes, deleted track-targets, etc.) so obvious issues are caught before they reach the human reviewer.