At SingHacks, ResearchAgent was one web page where a language model proposed each purchase and a person approved every quote. Since then it has become released software: a web app, a Mac app, an MCP server and two SDKs. Policy code buys evidence from writers within your budget, and every payment leaves a receipt on the XRP Ledger.
Pull requests merged into main per day, Singapore time. Hover or tap a day for commits. The October build has its own archive: October build log.
Show the numbers
Pull requests and commits per day
Day
PRs merged
Commits
19 Sep
1
47
20 Sep
0
4
21 Sep
0
1
22 Sep
0
2
2 Oct
0
1
4 Oct
17
46
5 Oct
6
6
6 Oct
4
5
7 Oct
26
35
8 Oct
4
5
9 Oct
11
15
10 Oct
2
2
11 Oct
3
3
2 Nov
6
6
3 Nov
54
60
4 Nov
40
40
5 Nov
3
3
7 Nov
34
34
8 Nov
4
4
10 Nov
9
10
11 Nov
51
52
12 Nov
66
66
13 Nov
7
7
02The release rail
Every stop has a receipt.
4 milestones and 15 releases. Open a stop for what shipped, a screenshot or terminal output, and the proof: the pull request, the release notes or a ledger transaction.
September · SingHacks
19–20 SepMilestoneSingHacks: the prototype
The prototype that took us to the finals: one web page, synthetic sources, a language model proposing what to buy, and a person approving every quote.
What shipped
A research desk that bought synthetic premium sources within an XRP budget and wrote a cited dossier.
A language model proposed each purchase and a person approved every quote before payment (manual approval was required in the event build); payment was a simulated by default, with optional development-network settlement.
The frozen prototype held 34 files and 970 lines of code (tag hackathon-baseline).
PASS checks: 46 passed, 0 failed, 2 skipped
PASS audit anchor: Validated XRPL Testnet ledger 22228575
PASS testnet 11/11 (read-only, s.altnet)
Skipped is not failed. PASS does not prove who a writer is.
RESULT PASS
Published v1.1.1 Python wheel checking the committed hosted export, read-only development-network, 11 Nov
03Then and now
What changed, capability by capability.
Each row starts at the SingHacks prototype and ends at what ships today, with the pull request that first delivered it.
Capabilities at SingHacks and now
Capability
At SingHacks
Now
First shipped
01Payment
A simulated by default; development-network optional
→Each writer paid at its own development-network wallet, one charge per intent
A progress page that only shows wins is marketing. These are measurements that missed a target, regressed, or replaced a better-looking number of our own. Each links to the evidence.
×MissedTwo of four cold first-try runs overran 90 seconds2 of 4 cold runs over 90 s: 73.8 s pass · 90.2 s timed out · stopped at the 90 s deadline · 84.2 s pass
What we did Kept the timeouts beside the passes; the 90 s limit stayed unchanged.
◐MeasuredMost v4 blind held-out questions did not end in a purchasev4: 13 of 20 held-out questions ended without a cited purchase; the key fact led the answer in 2 of 20
What we did Reported the blind number instead of the dev bank, then froze and ran a new blind bank (v5, 11 Nov).
Publish to npm, PyPI and the MCP RegistryPackages are built and tested from a clean install on GitHub Releases; registry publishing comes next.
Not claimed
MainnetSee the README Status and limits for deployment readiness.
Independent writersNo consenting outside writer is listed yet; writers are fictional or team-authored and labelled.
A signed Mac appThe DMG is unsigned and not notarised.
—Method
How we count
Counts are dated and query-defined: facts at 484856c (13 Nov 2026). SingHacks ran 19–20 Sep 2026; the prototype was frozen earlier as tag hackathon-baseline (commit 935532f, 7 Sep), and the closest snapshot to the event's end is e16435a (20 Sep). Both are shown rather than picking one.
Metric definitions
Metric
Value
Definition
PRs merged
347
gh pr list --state merged --base main, merged on or after 21 Sep 2026 (SGT), merge commit reachable from 484856c2
Commits
403
git rev-list --count e16435a3..484856c2 (after the last commit before 21 Sep 2026)
Releases
15
gh release list, published, tag reachable from the counted commit (prereleases included)
Testnet transactions
61
rows in site/ledger/transactions.json; the ledger page re-checks each one live
Held-out
16/20
v5 blind bank, bought and cited, run once on 11 Nov (docs/evidence/v5-heldout)
Tests in the repo
2,127
static count of it()/test() declarations in *.test.* / *.spec.* files plus Python def test_ (not executions)
Lines of code
90,733
physical nonblank lines in tracked TS/JS/Python/Shell files, tests and tooling included
Rebuilt with npm run site:progress from git, GitHub, CHANGELOG.md, docs/SFF-PUSH.md (latest entry 12 Nov) and the evidence files linked above. Generated 13 Nov 2026, 10:41 SGT. Missing data stops the build instead of showing a stale number.