
Flint
Flint is a trustless disbursement protocol for open source contributors and grants.
Demo
About
Flint is a trustless disbursement protocol for grants and open source. You lock USDC, work gets verified from GitHub, a human signs, and the payout plus a soulbound receipt go out on Arc. Contributors do not fill a Flint form. They update a file in the repo and keep shipping PRs. No spreadsheet in the middle. No bank wire. The hole is simple. Too many grants are vision based. A team sells the story, takes the money, stops shipping, and the product dies. Or they actually ship and the committee never signs. Both sides ghost. Funds sit or already left, and there is no trail that says which goal was met. Uniswap Foundation committed $26M in grants in 2025 and paid out $11M. A lot of that still moves through forms and a Safe. Open source has the same wait. GSoC has paid 18,000+ people. LFX, Outreachy, Mozilla still use bank wires. If you are overseas that is 3 to 5 days and $25 to $45 on SWIFT, plus paperwork, before you see a cent. Flint makes the grant goal based. A maintainer opens a flint issue for a grant. A contributor adds one row to CONTRIBUTORS.md with their wallet. That is the whole signup. Grant mode escrows the full amount, writes milestones on chain, and releases a slice when the linked PRs check out. Open mode puts up a pool, scores a GitHub cycle, and splits with sqrt or proportional. Scoring runs in a Chainlink CRE TEE with gpt-oss-120b on Groq. Only the score leaves the enclave. The maintainer or committee still has to sign. If they disappear, 14 days on a grant or 30 days on a pool and it pays anyway. The Graph Studio indexes every pool, grant, and receipt so a committee can query it later. Work in the repo. Wallet in a markdown file. USDC and a receipt out.
How it's made
Flint is a GitHub App wired to escrow on Arc. You work in the repo like you already do. The app watches issues and merges. The chain holds the USDC and pays when the work checks out. The App posts flint issues (milestones, grantee, deadline). A webhook verifies that and lists them as pending grants. Contributors put their wallet in CONTRIBUTORS.md. When PRs merge, the keeper and the App see it. That same event is what the scorer uses. On the other side, nine contracts do the money. Grant escrow for tranches. Pool escrow for a cycle. Policy contracts turn a score into an amount. A batch pay sends USDC. A soulbound receipt is minted so the work stays attached to the wallet. You fund and sign from the site. Privy can make the wallet from email. Circle CCTP can bring USDC over from Base. Gas on Arc is USDC. The two sides meet in a Chainlink CRE TEE. It pulls GitHub from inside the enclave, runs gpt-oss-120b on Groq, and only the score comes out. DON consensus writes that score on the contracts. The Graph Studio indexes every pool, grant, and receipt so the site is reading the chain, not a spreadsheet. What that gives you in practice: the repo is the source of truth, and the money cannot move until that repo’s work is scored and someone signs. If they never sign, the contract still pays. Fourteen days on a grant, thirty on a pool. The person who shipped is not waiting on a wire or an inbox.