Skip to content

Official plugins

pi-roundtable ships two plugins that you copy into your project instead of installing. The copy is an ordinary plugin file of your own, so you can read it, change it, or delete it.

Plugin What it does
codex-images Draws agents’ avatars from a prompt and reference pictures, through your ChatGPT subscription login.
dice Gives agents a roll_dice tool.

Run add plugin with the plugin’s name inside your project:

Terminal window
bunx roundtable add plugin dice
bunx roundtable add plugin codex-images

Each command writes plugins/<name>.ts and plugins/<name>.test.ts, imports the plugin in roundtable.config.ts, and lists it in plugins. Both names are reserved: add plugin copies the official plugin for them and keeps the hello template for every other name. It refuses, and writes nothing, when either file already exists. See CLI for everything add plugin checks.

Then run the tests in your project:

Terminal window
bun test

dice adds one tool, roll_dice, that members and above can call. It takes an expression and answers with plain text:

2d6+3: [3, 5] + 3 = 11

You can ask for it in a message to an agent, such as “Roll 4d6 and drop the lowest.” The agent calls the tool and reads you the result.

Write It means
2d6, d20 Roll that many dice with that many sides.
+3, -1 Add or subtract a number.
2d6+1d4-1 Several groups in one expression.
4d6k3, 4d6kh3 Keep the 3 highest dice.
4d6kl1 Keep the lowest die.
4d6d1, 4d6dl1 Drop the lowest die.
4d6dh1 Drop the highest die.
dF, 3dF Fate dice, which add -1, 0, or +1 each. Without a count it rolls 4.

Dropped dice show in parentheses, as in 4d6k3: [5, (1), 6, 3] = 14. An expression over the limits, or one it cannot read, is refused with a message that says what to fix, and the agent can try again. The limits are 100 dice in all, 1000 sides on a die, 200 characters, and 1000000 in a plain number.

dice needs no login and no setting.

codex-images fills the images slot, the part the core uses to draw. With it, agent_create accepts an avatar prompt, agents get an agent_avatar tool, and the owner’s profile panel offers to redraw. Without an images plugin, each agent gets a generated picture from its display name instead. roundtable doctor reports whether a plugin fills the slot.

It needs a login to the openai-codex provider, the same login mechanism the agents use for their models. When the host has none, the plugin refuses to start and the message says to log in to openai-codex. The plugin reads the login each time it draws, so a refreshed token is used.

A request that Codex refuses, usually because of the prompt, fails with ImageNotGeneratedError, and asking again with the same prompt fails again. A request has a five-minute limit, and an image over 32 MiB is refused.

The copy lives in your project, so edit it like any plugin.

  • In plugins/dice.ts, the limits are constants at the top of the file, and the tool’s description repeats them to the model, so change both together.
  • In plugins/codex-images.ts, the model that routes the request is a constant.
  • Each file exports a function (createDice, createCodexImages) that takes the part a test replaces, a random source or a fetch, and the ready-made plugin built from it (dice, codexImages) that the config lists.
  • The tests beside them run offline: dice with a fake random source, codex-images with a fake fetch. Keep them passing as you change the plugin.

To remove one, delete its two files and its entry in roundtable.config.ts.

For what a plugin can add beyond this, see What plugins can add, and for writing tests like these, see Test a plugin.