Kraty

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:

  • scope flips to marketplace.
  • publishedAt is 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>-copy but you can rename.
  • New name — defaults to the source name.

After copy:

  • A fresh id is generated for the copy.
  • forkedFromBotId records the source for attribution.
  • The source bot's version is snapshotted (so we can show an “Update available” indicator if the source ships a new version).
  • The source's copyCount is 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

ActionRequired role
Publish a bot to the marketplaceGAME_ADMIN, GAME_DESIGNER
Copy a marketplace bot into your studioGAME_ADMIN, GAME_DESIGNER
Unpublish a bot you ownGAME_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: marketplace with approvalStatus: 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.