The question
AI-agent tokens passed memecoins on share of investor attention this year. The pitch behind almost all of them is autonomous software doing real work. This site checks the software: for every token CoinGecko files under AI Agents, Agent Launchpads or AI Meme, is there a public repository, and how long since anybody pushed to it?
What counts as shipping code
A public repository published by the project itself — a link the team filed with its own CoinGecko listing or its own DexScreener token profile. Not a repository that merely mentions the token.
That distinction is the whole measurement, so it is worth showing why. A
GitHub search for aixbt, zerebro and
fartcoin returns 16, 14 and 60 results. Every one is
third-party: tutorials, zero-star clones, and unrelated projects last touched
in 2012 and 2017. Counting search hits as evidence would score all three as
alive — and would be a metric measuring the generosity of its own threshold
rather than the thing itself.
What it cannot see
Private repositories
A legitimate choice this site cannot distinguish from having no code. The single largest source of unfairness in these numbers, and the reason every page says “no public repo found” rather than “no code”.
Forges that aren't GitHub
GitLab, Codeberg and self-hosted instances are not followed. A project hosting there scores as having nothing.
Whether the code does anything
A daily commit to a README counts the same as a daily commit to an inference engine. This measures activity, not substance.
Anything on X
The original design measured when each agent last posted. It is not buildable — see below.
Why there is no X column
The first scope for this site was “when did each agent last post”. It cannot
be built without a paid API key, and that was measured rather than assumed:
the syndication endpoint returns zero bytes, the oEmbed
endpoint 301s, and x.com/<handle> returns
HTTP 200 with no timestamps in the HTML — even for handles that do
not exist. It cannot tell a live account from a deleted one.
A scraper written against that will appear to work and will score every account identically. Rather than ship a column that looks like a signal and is noise, the site does not report on X at all.
The hand audit, and the number it overturned
The scan only sees repository links a team filed with CoinGecko or DexScreener. Plenty of real projects never fill those fields in, so "no repo in either listing" is a much weaker claim than "no public code" — and for a while this site printed the strong one.
Every token above $10M with nothing in either listing was therefore checked by hand. The rule, and it is the entire value of the exercise:
A token ships code only if a GitHub owner's own profile links back to the project's own website. Both directions, or it does not count.
That audit moved ten projects worth $1.4B — Venice, Virtuals, Talus, AWE, Recall, Turbo, Bankr, SingularityNET, Phala and Elsa — out of the "no code" column. The unaudited scan had said 34% of the sector shipped code. The audited figure is 78%. The site led with the wrong one, and this paragraph is here because it did.
The rule earns its keep in both directions. The token Rei lists
reilabs.org, and github.com/reilabs is a real
organisation with 68 repositories — but its profile points at
reilabs.io, a different company. The name matched; the backlink
did not. Counting it would have credited a token with a stranger's source
code. Conversely AWE Network ships under STPDevteam,
which resembles nothing about the brand until you notice CoinGecko still
files the token under the id stp-network.
Every verdict and every rejected candidate is committed to
data/audit.json. Two projects whose own websites would not load
are recorded as inconclusive and excluded from every percentage, rather than
counted as empty.
The measurement that was wrong before that
The first working scan reported that 5% of the sector ships code. That number was false too, in the same direction and for a related reason.
To avoid CoinGecko's rate limit, that version took repository links from DexScreener alone, which does not throttle. But DexScreener token profiles carry a website and a Twitter handle and essentially never a repository. The scan was measuring which teams fill in a DEX aggregator's link form.
It scored Virtuals Protocol, OriginTrail, Concordium and iExec as shipping no
code. All four are open source, and CoinGecko lists repositories for two of
them that DexScreener had never heard of. A second bug sat underneath: the
scanner required a full owner/repo path, so
github.com/Concordium — an organisation with public code —
parsed as nothing at all.
Both are the same failure: an instrument measuring itself. It is a shape this family of sites keeps hitting, which is why the fix was to pay the rate limit rather than route around it. A cheap measurement that answers the wrong question is not cheaper.
The pattern across all three corrections is worth stating plainly, because it runs against the grain of what a site like this is expected to find: every error made the sector look worse than it is. The instrument was measuring which teams fill in link forms, and mistaking that for whether they write software. If a future change here produces a more damning number, that is exactly when to check the instrument first.
Sources
CoinGecko
The token universe, market caps, and the repository links teams file with their listing. Its keyless tier allows roughly five calls a minute before locking out entirely, which is why the scan is offline.
DexScreener
A second, independent set of team-submitted links. Queried by contract address, never by symbol — several unrelated tokens here share a ticker, and a name search folds an impostor's data into the real token's row.
GitHub API
Last push date, star count and the archived flag for every repository found. Where a listing points at an organisation, the most recently pushed non-fork repo is used, and the row is labelled.
Coverage
The scan covers the largest tokens by market cap and states exactly how many smaller ones it leaves out. A truncated scan that does not say so reads as full coverage.
The result is committed as a static snapshot rather than fetched live. That is not a stylistic choice: a sector-wide sweep against a five-call-a-minute limit is a background job measured in tens of minutes, not something a page load can do.