Command Cheat Sheet
The bot is @trustless-oss. Mention it anywhere in an issue or PR comment, followed by a command. Commands are case-insensitive, and a leading slash is optional — @trustless-oss pay 70 and @trustless-oss /pay 70 both work.
Comment a command on the bounty issue. Payout and reject commands also work on a PR comment, as long as the PR body links the issue (Closes #123).
Maintainer commands
Only repository owners, members, and collaborators can run these. Comments from anyone else are ignored for privileged commands.
| Goal | Command | What happens |
|---|---|---|
| Set a manual bounty amount | @trustless-oss 150 | Sets the reward to 150 USDC. Works while the issue is still open or assigned-but-unlocked. |
| Split the payout | @trustless-oss pay 70 | Saves a 70/30 split. On merge, the contributor gets 70%, you get the remaining 30% back. |
| Reject the work | @trustless-oss reject | Disputes the milestone, refunds the escrow to your wallet, and cancels the bounty. |
| Force a re-check | @trustless-oss retry | Re-runs the automation now. Rarely needed — payouts advance on their own. |
@trustless-oss 150@trustless-oss pay 70@trustless-oss rejectAliases. pay also accepts split, work, work-completion, and completion. reject also accepts rejected, no, and invalid. Stick to pay and reject — the aliases exist so the bot is forgiving, not so you have to remember them.
Contributor commands
Anyone can run these.
| Goal | Command | What happens |
|---|---|---|
| Connect or change your payout wallet | @trustless-oss wallet | The bot replies with a personal link to connect (or switch) your Stellar wallet for this bounty. |
@trustless-oss walletwallet also accepts address, connect, change-address, ch-wallet, ch-address, and ch-add. They all do the same thing: return your connect link.
Anyone
| Goal | Command | What happens |
|---|---|---|
| List the commands | @trustless-oss help | The bot posts the full command list in the thread. |
@trustless-oss helpLabels
Labels are how an issue becomes a bounty. The bot reads them from GitHub webhook events.
| Label | Role | Notes |
|---|---|---|
rewarded | Required. Turns the issue into a bounty. | Pair it with exactly one difficulty label. |
low / medium / high | Reward tier. | Uses the USDC amount you configured for that tier in the dashboard. |
manual | Reward set per-issue. | Set the amount with @trustless-oss <amount> or by putting the amount in the issue body. |
rejected | Cancels the bounty. | Same effect as @trustless-oss reject: refunds escrow and cancels. |
Tiers are just labels with an amount. The dashboard ships three defaults — low, medium, high — but you can rename them, delete them, or add your own tiers mapped to any GitHub label. See Set reward tiers.
rewarded on its own, with no difficulty label and no amount, creates an unpriced bounty. It stays inactive until you add a tier label or set a manual amount. Funds are only reserved once the bounty has an amount.
How the amount gets locked
Understanding this prevents most “why didn’t it update?” confusion.
- While the issue is open (or assigned but not yet locked on-chain), you can change the reward freely — relabel it, or comment a new manual amount.
- Once a contributor connects a wallet and the milestone is pushed on-chain, the amount is locked. Relabeling or re-commenting an amount after that is ignored, because the database and the escrow contract must stay in sync.
Next: Troubleshooting · How payouts work