Check an AI agent's pull request before it is paid.
One use of Knos: pay for code only when its checks pass.
Research to products people want, paid on proof.
Of 241 merged agent “tests pass” pull requests: 9 failed a test, build, lint or type check.
How it works
This runs on Solana devnet, a test network: the money is test USDC and worth nothing.
Why Solana?
Money is released with no custodian, and neither buyer nor supplier can change the count. One person holds every upgrade key today; a program change waits 8 days in public.
You can check a receipt without Solana. Solana moves the money and stores one fingerprint of all the receipts.
Agree the terms
Name the checks before the work starts. Fund a task
/knos fund 20 checks: test
Versioned terms: the whole contract
A versioned document of ten fields: what one deliverable is, who judges, who hears an appeal, who may change the terms. An order cites one version. The terms document.
Holdbacks: a share kept for a warranty
A share of the payment stays in the order for the warranty. If the change is undone during the warranty, GitHub signs that, and the share goes back to the funder. Disputes and warranties.
A third party signs the result
GitHub signs which workflow ran, and where. Protect a repository
GitHub signs:repositoryshajob_workflow_refFive parts of a receipt
Every receipt reads as identity, execution, acceptance, consequence and assurance: who signed, what ran, which test passed, what became payable, and what you still have to trust. The five parts.
Both sides get the same bill, and the money moves
Buyer and supplier each rebuild the same bill from what GitHub signed. Get paid
Paid on devnet, as a demonstration:4PovnMjD…2zcDxtNetting: small tickets, one release
Small payments are added up outside Solana and paid as one transfer per supplier per period. Netting.
Reserves: money locked before the work
A buyer locks money for one supplier before the work; the added-up payments are taken from it. Reserves.
Exits: leave before an upgrade
Any change to Knos's programs is shown in public eight days before it can run.
knos exit --before-upgradelists what you hold and its way out. Governance.
Buyer same bill
Supplier same bill
One transaction, end to end
- Fund the order in test USDC under terms fixed first.
- Reject the first work: a check failed, nothing paid.
- Accept the corrected work: GitHub signs the passing run.
- Pay the supplier once the program checks GitHub's signature.
- Refuse a replay of the same proof: nothing paid twice.
- Rebuild the invoice on both sides: one line, agreed.
Check a claim
17.8% of agents' first “tests pass” pull requests had a failed check: 147 of 826.
What the check reads
The check compares what a pull request claims with what GitHub's CI says at its head commit. No install, no login.
This page is static files. It reads GitHub's public API and Solana from your browser and sends nothing to Knos. Agent records come from the Agent PR Index.
For your own agent: pipx install knos, then knos init.
It adds a Stop hook: your agent must run the check before it may say its tests pass. It also adds a tool server agents can call
(MCP), knos mcp. It holds no key and no wallet. Every way to install it.
What is here
- A Solana program checks a CI system's signed identity token (
RS256), such as GitHub's. - The checks and the files a change may touch are fixed at funding.
- A supplier can collect payment without waiting for the buyer.
- Payment on a black-box check: 0 of 63 cheating pull requests passed it, 56 passed plain CI.
- A count of accepted work that neither side keeps alone, no money held.
Knos carries research across the valley of death: each step is paid only on verified proof.
A work order is a task, its budget and the terms that decide when it is done. All three are fixed before work starts. A bounty on an issue is the smallest work order. When the work is merged, GitHub signs which checks ran. A Solana program checks that signature before it pays. No person holds the money in between.
Install with one pull request
Write your repository. GitHub's editor opens, filled in.
What the link does
The link opens GitHub's own editor with one workflow file filled in. GitHub offers the branch and the pull request. No secret, no wallet; nothing is sent to Knos.
Add the check on every pull request: Protect a repository. Every way to install it.
See who wants your product, and where, before you build it
Qloo is limiting requests right now. Cards show the last live answer from 22 Oct 2026, 22:10 UTC.
How Knos works
Check demand
Ready brief
Money held
Paid on proof
Agent paid 5.0 test units, 2026-10-25 · Released by the referee's verdict
13 ideas checked this week, up from 0 last week
Open for backing
Nature, 2016 · maker wanted
A fitness watch with a sweat glucose sensor
Science, 2017 · maker wanted
A water bottle that harvests drinking water from desert air
Your idea · maker wanted
A smart water bottle that glows to remind you to drink
Passkey sign-in, no account · devnet, test money, no customers yet
Science to products, past the valley of death, paid on Solana.
Clear briefs: 2.08x fewer output tokens, measured on 20 tasks.
Each brief
One model (sonnet, medium effort) for both. Vague: 12,365 tokens, 5% passed. Ready: 5,942 tokens, 70% passed.
| Task | Vague | Ready | Saved | Passed |
|---|---|---|---|---|
| c01 | 3,380 | 67 | +3,313 | no / yes |
| c02 | 151 | 53 | +98 | no / yes |
| c03 | 1,718 | 63 | +1,655 | no / yes |
| c04 | 204 | 107 | +97 | no / yes |
| c05 | 669 | 58 | +611 | no / yes |
| c06 | 80 | 93 | -13 | no / yes |
| c07 | 169 | 72 | +97 | no / yes |
| c08 | 581 | 226 | +355 | no / yes |
| c09 | 274 | 118 | +156 | yes / yes |
| c10 | 554 | 111 | +443 | no / no |
| r01 | 208 | 846 | -638 | no / no |
| r02 | 825 | 701 | +124 | no / yes |
| r03 | 158 | 240 | -82 | no / yes |
| r04 | 351 | 277 | +74 | no / yes |
| r05 | 581 | 240 | +341 | no / yes |
| r06 | 90 | 444 | -354 | no / no |
| r07 | 1,507 | 784 | +723 | no / no |
| r08 | 74 | 520 | -446 | no / no |
| r09 | 259 | 705 | -446 | no / yes |
| r10 | 532 | 217 | +315 | no / no |
Output tokens include thinking. Every run, raw.
With Qloo's line: 3.2% fewer tokens, Ready 4 vs 4 of 10.
With and without Qloo
The 10 research briefs, each run without and with its Grounding (Qloo) line (sonnet, medium effort): 5,074 vs 4,912 output tokens, $0.307 vs $0.3325 estimated. The IDT ratio above is Knos's own (clear briefs), not Qloo's.
| Task | Without | With Qloo | Ready |
|---|---|---|---|
| r01 | 792 | 845 | no / yes |
| r02 | 698 | 927 | yes / no |
| r03 | 258 | 231 | no / yes |
| r04 | 294 | 278 | yes / no |
| r05 | 267 | 219 | no / no |
| r06 | 514 | 472 | no / no |
| r07 | 767 | 577 | no / yes |
| r08 | 549 | 548 | no / no |
| r09 | 712 | 630 | yes / yes |
| r10 | 223 | 185 | yes / no |
How we verify
Every claim below opens its own evidence.
Money held until the proof passes
A Solana program holds each payment until proof arrives. The public record
Referees release it
Three referee hosts run by Knos; two must sign the proof. The referee group
Demand comes from live taste data
Qloo's data decides who wants it, where, and the price. Code decides, not a person.
Upgrades wait in public
A program change waits eight days, in public. Who can change the programs
Check it yourself
Solana devnet, a test network: the money is test money, worth nothing.
Protect a repository
Add one workflow file. It needs no secret.
The two files
.github/workflows/knos.yml is the whole payment flow.
.github/workflows/knos-check.yml is optional: the check on every pull request.
What the file does: five jobs
- Answers every
/knoscomment./knos helplists the commands. - On
/knos fund: asks GitHub to sign one statement that funds this task. Anyone may send it to Solana; it can be used once. - On a merge that closes a funded issue: reads GitHub's record against the funded terms, and asks GitHub to sign the payment only when every funded check passed and the changed files are in scope.
- Comments, and assigns an issue for
/knos take. - Runs by hand (Actions, knos, Run workflow) to try a payment again.
What it cannot do: six limits
- Hold or move money. It has no wallet. Money moves only on Solana, after the program has checked GitHub's signature.
- Change your code, branches or settings: it can read, comment and assign.
- Spend a Balance past its limits: only its owner's and listed people's comments count, and no task takes more than its cap.
- Change a task's terms after funding, or take back a payment GitHub has signed for.
- Be changed by a pull request: it runs from the default branch and never uses
pull_request_target. - Vouch for more than its repository can: GitHub signs which workflow ran, at which commit, in which repository, not what it read there.
No secret is needed: Knos's public relay (a server that sends signed statements to Solana) sends them and pays the network fees. Each limit in full, and the optional relay key.
The optional check file
knos-check.yml checks every pull request, forks included, and moves no money. It reports
through its own status, check / claims. A pull request can change it for its own run, so it is advice:
nothing about money depends on it. The second file in full.
Fund a task
Comment on an issue. The checks you name are the terms.
The comment
/knos fund 20 checks: test
Each part of the comment
/knos fund- A line of a comment, or of a new issue's description, that starts with it.
/knos bountymeans the same. 20- The amount, from 5 to 100,000 test USDC, with at most 6 decimals. A version that uses real money would set its own maximum.
checks: test- The checks that must pass on the merged pull request's last commit. If you name none, Knos uses the
default branch's required checks, or else the checks that ran on its latest commit.
checks: none: your merge alone is the acceptance. - Optional
paths: src/**(the only files a pull request may change),days 30(when unpaid money goes back: 14 days unless you say, 90 at most),reserve 3(days/knos takeholds the task: 7 unless you say).
What the reply says
Knos: 20.00 test USDC is held for issue #7 until the proof passes. It is paid when a maintainer merges a pull request that closes this issue, if these checks passed at that pull request's last commit:test(the checks you named). The pull request may not change.github/**or.knos/**. If it is not paid by its deadline, the money goes back to where it came from. To earn it: open a pull request whose description saysFixes #7./knos takereserves the issue for 7 days. For the money to reach you when it is paid, comment/knos address <your Solana address>on your pull request; without an address it waits for you until you bind a wallet (180 days at most).
Who may fund, fixed terms, tests mode
Who may fund: the repository's owner, or someone the owner's Balance lists.
The terms are fixed: the funding transaction logs them and the task stores their hash. How long a reply takes is measured: see Numbers.
Every /knos comment gets a reply. /knos help lists the commands:
/knos take, /knos status, /knos reject, /knos tip.
Payment without a merge is offered only for a black-box check: the submission runs as a separate process and only its output is compared. Of 63 cheating pull requests in the tamper benchmark, plain CI passed 56, in-process acceptance tests passed 7 and the black-box check passed none.
Devnet: test USDC, worth nothing.
Add money
What a Balance is
A comment spends a Balance. A Balance is test USDC that one wallet sets aside for one GitHub owner's repositories. That wallet picks who may spend it (up to four people besides the owner) and the most one task may take. Only that wallet can take unspent money back. With no Balance, the devnet faucet gives free test USDC: at most 100 per comment, once per repository per minute. Faucet money cannot be withdrawn and is counted apart. A Balance in full.
-
Set the wallet to devnet first. Get test USDC
How it pays, the fee
A task is paid when a maintainer merges a pull request that closes the issue and its funded checks
passed at the last commit. The payment is final. /knos reject before merging keeps a pull request from
the bounty. Unpaid by the deadline, the money goes back; that needs no token.
Fee: 0.30% of the amount, at least 0.05 test USDC, paid by the funder on top (knos_pay 2.2 is live). Orders funded before the upgrade keep the rate fixed at their funding.
There is no maximum. It is charged only when someone is paid: a refund returns it with the amount. An order funded under knos_pay 2.1 keeps its stored fee: 2.5% of the first 1,000, 1% to 50,000, 0.5% above, at least 0.40 test USDC. Pricing says which fee the program on devnet applies today.
Fund any issue
What this form does
Hold test USDC, from your wallet, for an issue of any public repository. That repository needs no file. Nothing is sent until your wallet shows you the transaction and you approve it.
Checking which version of the payment program runs on devnet…
Your wallet
A task with no repository
How a task is judged
State the task as five or more pairs: an input and the answer it must get. Knos pays the first solution whose command prints every answer; its code runs as a separate process and only what it prints is compared. It sends nothing: you press the last button on each GitHub page yourself.
Get paid for merged work
Merge the work. Say where to be paid.
Devnet: test USDC.
-
Comment your address
/knos address YOUR_SOLANA_ADDRESS
When the address counts
Comment on your own pull request. It is paid to that address once the pull request is merged and GitHub has signed the run that pays it. An edited comment does not count: to change the address, post a new one.
Who is paid: the person whose pull request is merged for the task. You need no wallet to do the work.
-
Or bind a wallet once
A bound wallet comes first, whatever a pull request says. Three steps, by hand:
- Create an empty repository named knos-claim.
Keep the name
knos-claimand make it public, in your own account (a personal account, not an organisation). - Add its one file: knos-claim.yml
from Knos, as
.github/workflows/knos-claim.yml(Add file, Create new file, paste, Commit changes). The payout page,#payee=YOUR_LOGIN, fills it in for you. - Open that repository's Actions tab and choose knos claim. Press Run workflow and paste your Solana address yourself.
Or from a terminal, one command does all three:
knos claim YOUR_SOLANA_ADDRESS
Why by hand: an address carried in a link could be someone else's, so you type it. GitHub signs that the repository's owner names that address; the payment program takes that signature only from a run started by hand, by the owner, in a repository named
knos-claim. A later binding replaces an earlier one. - Create an empty repository named knos-claim.
Keep the name
-
Or do nothing yet
With no address and no bound wallet, the money is held for you for 180 days. Bind a wallet in that time and
/knos settleon the merged pull request sends it. After 180 days it goes back to the funder.
When an agent opened it
A bot account's pull request pays a person only when GitHub shows whose it is: the issue is assigned
to one person, a maintainer commented /knos pay @login, or an assignee commented /knos mine.
A line in the description never decides.
Make a wallet from a passkey
What a passkey wallet is
A passkey is the key your device keeps behind its fingerprint, face or screen lock. This page asks the device for one and shows its wallet's address; the private key never leaves the device. Name that address in either of the first two ways above.
A passkey works only at the web address it was made at (). Your device or password manager decides whether it is on your other devices.
Your wallet's address
Two ways to name it:
- On your pull request, comment:
- Or run the claim workflow by hand, as above. Paste this address into its box.
Keep a copy of the details, or use ones you kept
This browser keeps the passkey's id and public key for you if it lets the page, and nothing else. Neither is secret and neither can move money: signing needs the passkey on your device. Keep the line below somewhere you can find it, and paste it back here to use the wallet from another browser that has the same passkey.
Knos never charges the party being rated.
What Knos costs
| What | Price | Who pays |
|---|---|---|
| Demand check | 10 a month free | nobody |
| Deep demand check | 500 USD each, by card once the company exists | the company |
| Ready brief | free | nobody |
| Proof page | free | nobody |
| Release on verified proof | 1% on top, plus payment costs; the solver keeps 100% | the company |
| How a milestone is paid | by card up to 500 USD; larger milestones by bank transfer or in real money (Circle's USDC), held until the proof passes | the company |
Nobody is charged today: no company exists yet. Devnet charges 0.30% until the timelocked upgrade.
The price book
| Line | Unit | Price | Who pays | Where it is enforced |
|---|---|---|---|---|
| Check | pull request or artifact checked | free, forever | nobody | nowhere |
| Meter | evaluation | 100,000 a month free per organisation, then 0.002 USD | buyer | prepaid credits |
| Acceptance | dollar released or reconciled against a signed acceptance | 0.30%; by contract 0.20% on monthly value above 1M (the rate never goes below 0.20%); small tickets are netted: outcomes under 20 USD accumulate and settle as one release per payee per period, charged 0.30% of the netted amount with the 0.05 floor once per release; no cap | funder, on top of the amount | knos_pay at release (on chain: 0.30% and the floor; volume rates are a rebate by contract, off chain) |
| Record | lookup of a supplier's delivery record through the machine-priced API | 0.10 USD a lookup, paid per call by the caller (an agent, a marketplace, an underwriter) through the knos-order/x402 flow; the public record page and its file stay free | the buyer, marketplace or insurer reading it | knos record serve (anyone runs it; Knos hosts none) |
| Control | organisation, per year | Team 25,000; Business 100,000; Enterprise from 400,000 (not deliverable yet: it needs single sign-on, private deployment and support that do not exist) | buyer | contract |
| Pilot | one buyer, two suppliers, 30 days, one reconciled invoice | 2,500 USD, credited against year one | buyer | contract |
The Meter line is a proposed price: nobody pays it yet. On devnet today: 10,000 evaluations free a month, then 0.05 test USDC each.
Which fee applies to a task today is read from the program: reading Solana devnet…
What the programs enforce
Of the fee, 0.05 goes to whoever sends the payment to Solana (0.30 on someone's first payment). An order holds from 5 to 100,000 test USDC on devnet; a version that uses real money would set its own maximum.
The program enforces the Acceptance line at release: 0.30% and the floor. Volume rates are a rebate by contract, off chain. Meter is charged from prepaid credits. The Meter line is proposed: the deployed meter program charges 0.05 an evaluation after 10,000 free a month. Control and the Pilot are contract prices that nothing on chain enforces (what the Pilot is). Under a Plan the program only lets the Acceptance rate be lowered, never raised.
What a task costs
What counting would cost at the proposed price
The meter on devnet today: 10,000 free a month, then 0.05 test USDC each.
The fee, worked
How the rate applies
One rate applies to the whole amount, and the fee is never under the floor. On an order the funder pays the fee on top; the payee receives the amount in full. On a tip the fee comes out of the amount.
| Amount | How | Fee |
|---|
The effective fee, before you fund
| Order | Fee | Effective fee |
|---|---|---|
| 5 | 0.05 | 1.00% |
| 20 | 0.06 | 0.30% |
| 100 | 0.30 | 0.30% |
| 1,000 | 3 | 0.30% |
| 5,000 | 15 | 0.30% |
| 100,000 | 300 | 0.30% |
Small orders pay more
5 test USDC pays the floor, 0.05: 1.00% of it. On devnet the fee is test money: 0 revenue.
Records and ranks
Open what Knos paid, and to whom.
Where the records come from
Counted from the public record of both payment programs and from GitHub, and published as files beside these pages. Nothing is typed by hand. No file means no record here, which is not the same as no payment.
A month's statement
What it holds
What an account was paid, or what its money paid out, one month at a time, with a CSV made in your
browser. Each payment is a row of statements/<login>.json. Real and test money are never added together.
Ranks
- Earners: by real money (Circle's USDC) received. Test money and self-payment are not counted.
- Funders: by real money (Circle's USDC) paid out, with how reliably they paid.
- Agents by false-claim rate: from the Agent PR Index, lowest first, with 95% confidence intervals.
Reading the records…
The numbers, counted apart
Read the counts from the programs' own logs.
What is counted apart
Counted from the two payment programs' logs on Solana devnet, the public relay log and GitHub. Knos's own activity, self-payment and free faucet money are shown apart and never added to outside use.
The first deployment, as history
Its two addresses
The first deployment on devnet: knos-oidc vpWym9azbPU5f2PH2a6n8c4RfmsyUeW2dMuWr1DSHcE and knos-pay 9UzPFbh2A4e4sEPgngKG523FfYLnQ3qPfFVfFTTAdfDi. It finishes the jobs funded on it; new funding goes to the second deployment only. Whether anyone can still change it is read from Solana below.
Build on it
Require a fact GitHub signed, from your own Solana program.
What knos-oidc verifies
knos-oidc verifies a GitHub Actions or GitLab CI token on chain. Any program can then require a signed fact: which repository, which commit, which workflow, which account ran it.
Use it from your program
Read one account
A verified token is an account owned by knos-oidc. Read it; call nothing. The Rust interface crate depends on nothing else.
docs/reference/OIDC.md says how. An example with its test: examples/oidc_gate. The crate: crates/knos-oidc-interface. IDLs: idl/. A JavaScript client: sdk/settle.
How the signing keys are admitted
Key rules
- GitHub's keys are built in. Any other key enters only on a token GitHub signed for the rotate workflow at its fixed commit, waits a day and needs the guardian's approval.
- Every key stops working after 30 days unless that workflow attests it again. Nobody registers a key by hand.
- The guardian can approve a key or revoke one for good. It cannot add a key or change a delay.
- The programs are upgradeable only through a multisig with a public 8-day delay, until an outside review. Which keys are on chain: Numbers.