Skip to content

Refundable deposits keep spam out of open source. See how it works

A GitHub App. No code changes, works with branch protection.

Every pull request has a price.

Chitragupta asks a small refundable deposit before a pull request enters review. Merged work gets it back as rolling credit. Spam forfeits it.

A pull request on GitHub where the Chitragupta bot has requested a two dollar refundable deposit before review.
Fix typo in README#142
awaiting-depositchitragupta/deposit pending
chitraguptabotcommented 2 minutes ago

Hi @contributor, this repository uses Chitragupta to keep spam pull requests off the review queue.

A refundable deposit of $2.00 is needed before this pull request is reviewed.

Top up your wallet
  • Minimum top up is $20.00, which covers several pull requests
  • The deposit is refunded once this is merged or closed in good standing
  • A maintainer can run /waive @contributor instead

Without a deposit this pull request closes on its own in 48 hours.

Deposits refunded
2,382
Spam blocked
1,868
Average deposit
$2.00
Auto closed
267

How it works

Every step stays where your team already looks.

Git remains the source of truth. The whole deposit lifecycle reads like commit history, because that is where it lives.

a1b2c3d

Pull request opened

An outside contributor opens a pull request. Chitragupta checks their waiver and balance, then posts the deposit request as a commit status.

Fix typo in README#142
awaiting-depositchitragupta/deposit pending
chitraguptabot2 hours ago

Hi @contributor, this repository uses Chitragupta to keep spam pull requests off the review queue.

A refundable deposit of $2.00 is needed before this pull request is reviewed.

Top up your wallet

Without a deposit this closes on its own in 48 hours.

Features

Built for maintainers, not for another dashboard.

Everything runs inside the pull request you are already reading. Install it, set a deposit, and go back to reviewing code.

  • A wallet that funds itself

    Contributors top up once. Every deposit after that deducts automatically, so there is no payment step per pull request.

  • Deposits refunded on merge

    Two dollars by default, returned in full when a pull request is merged or closed in good standing. Set your own amount per repo.

  • Spam that finally costs something

    Run the reject command and the deposit is forfeited instead of refunded. On cloud, 60 percent goes to your org.

  • Unpaid pull requests close themselves

    Anything still awaiting a deposit after 48 hours closes on its own. Nothing to triage, nothing to remember.

  • Commands from the comment box

    Waive a trusted contributor, reverse it, or change config without leaving the pull request. There is no dashboard to learn.

  • Config in a single file

    One chitragupta.yml in your repo holds the deposit amount, the timeouts, and everyone you have waived.

.github/chitragupta.ymldeposit_amount: 2 · auto_close_timeout: 48 · auto_unlock_timeout: 60

Pricing

Same protection. Two ways to run it.

Installing is free either way. The only difference is who runs the infrastructure and how a forfeited deposit gets split.

  • Cloud

    Most teams start here

    60/40split on forfeited deposits

    Sixty percent of every forfeited deposit goes to your org, forty percent covers the platform. Nothing to deploy.

    • Two dollar default deposit, twenty dollar minimum top up
    • Escrow handled by Dodo Payments, audit log on every pull request
    • Commit status ready for branch protection in about a minute
    Install on GitHub

    We run the webhooks, the database, and the payouts.

  • Self hosted

    You host it

    100/0split on forfeited deposits

    Every forfeited dollar stays with your org and there is no platform cut. You run the webhooks and the database.

    • The same deposit and top up flow as cloud
    • MIT licensed, deploy it inside your own network
    • You own the data and control the payout schedule
    Read the self hosting guide

    You pay payment processing only. We take nothing.

Where a deposit ends up

$2 default
Merged, or closed in good standing
Refunded in full
Rejected as spam
Forfeited: 60% to org on cloud, 100% self hosted
Still locked after 60 days
Unlocked and returned

Payment processing is deducted before any split, roughly 2.9 percent plus 30 cents per top up. Refunds land two to three days after a merge. A twenty dollar top up covers ten pull requests, about a 6 percent effective fee on either plan.

Make spam the expensive option.

Installing is free. Contributors only ever pay a deposit, and they get it back the moment you merge.

One .github/chitragupta.yml and you are set. MIT licensed, self hostable.