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. |
Add one
Section titled “Add one”Run add plugin with the plugin’s name inside your project:
bunx roundtable add plugin dicebunx roundtable add plugin codex-imagesEach 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:
bun testdice 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 = 11You 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
Section titled “codex-images”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.
Change the copy
Section titled “Change the copy”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 afetch, and the ready-made plugin built from it (dice,codexImages) that the config lists. - The tests beside them run offline:
dicewith a fake random source,codex-imageswith a fakefetch. 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.