An unofficial map of what 6529 actually runs, which repositories are alive, and how the decentralization pieces fit together. Written for developers who are approaching the project from the outside and want the shape of the system before reading 3,500 pull requests.
api.6529.io, and the team's public dev channelThe sixty-second version, for someone who has read none of it
6529 runs 6529.io — a web3 social, collecting and governance application built around The Memes, an NFT collection that has dropped a card every Monday, Wednesday and Friday since June 2022.
Underneath the social product there is a network-state layer: every
identity accumulates TDH (a time-weighted measure of what NFTs you have held,
for how long), plus rep, cic and a derived level.
Those numbers are not cosmetic — they are the permission system. Groups are defined by
rules over them, and waves (the conversation surfaces) attach up to six groups each:
who can see, chat, submit, vote, administer and curate.
So the interesting engineering is not the chat app. It is that a social platform's entire authorization model is computed from on-chain holdings, and the stated goal is for that computation to eventually run on independent nodes rather than on 6529's servers.
The stack that actually serves 6529.io
6529seize-frontend — Next.js 16 (App Router), React 19, TypeScript, Tailwind 4.
Wallet stack is wagmi / viem / ethers / Reown AppKit. Deployed to AWS Elastic Beanstalk.
Apache-2.0.
6529seize-backend — TypeScript, ~56 serverless packages on AWS Lambda
(nodejs22.x), MySQL/Aurora, Redis. Contains the computation loops:
tdhLoop, transactionsLoop, delegationsLoop and
others. Apache-2.0.
6529-core — Electron app, ships its own releases.
com.core6529.app) whose WebView loads the production site,
so most mobile coverage is web coverage.
nftdelegation holds the
delegation contract. 6529Stream is a new, much more complex contract still
in review — see below.
6529reviewbot — an AI reviewer that runs against the org's pull requests,
including its own.
Both main repositories are public and the API is open: api.6529.io answers
unauthenticated reads with access-control-allow-origin: *. You can query
identities, groups, waves and drops without a key.
All 18 public repositories, by last push · 1 Aug 2026
| Repository | Lang | What it is | Last push |
|---|---|---|---|
6529seize-frontend | TS | The site. Everything user-facing. | today |
6529seize-backend | TS | API + the TDH / transactions / delegation loops. | today |
6529networkmuseum | Py | System of record for the Network Museum — policies, governance decisions, accession register. Explicitly transitional until on-chain storage exists. | today |
6529Stream | Py/Sol | The new flagship contract + its very large spec set. | 2d |
6529-core | TS | Desktop app. | 2d |
6529reviewbot | JS | AI PR reviewer used across the org. | 2d |
thememecards | — | Documentation of Meme Card distribution mechanics. | 1d |
allowlist-api / allowlist-lib | TS | Allowlist creation from criteria — the mint phases run on this. | 1d |
6529seize-admin | TS | Admin panel. | 171d |
nextgen | Sol | On-chain long-form generative art contracts. | 347d |
ai-code-review-action | TS | GitHub Action for AI review; superseded by 6529reviewbot. | 383d |
6529-Prenode | TS | Self-hostable TDH provider. See next section. | 395d |
bayc-zk | Go | Described in-repo as "just a test project". | 400d |
6529node | Go | A peer-to-peer node. See next section. | 509d |
nftdelegation | Sol | The delegation contract. Deployed and in use; the repo is simply finished. | 662d |
Janus | — | No description. | 832d |
gradient | — | The 6529 Gradient collection. | 1460d |
Ages above are baked in from the snapshot date. This page tries to refresh them live from the public GitHub API when you open it; if that fails, you are reading the snapshot.
"Dormant" means no pushes, not abandoned intent — nftdelegation is dormant
because a deployed contract does not change. The two that matter for understanding the
project's direction are 6529-Prenode and 6529node.
Three attempts, and how they relate to what runs today
This is the part that takes longest to reconstruct from the outside, because the repository names suggest a progression that did not happen. There are three distinct things, and only one of them has ever served traffic.
6529seize-backend computes TDH in src/tdhLoop — about
2,580 lines of TypeScript, dominated by tdh.ts (1,142 lines), plus
consolidation, editions, memes, merkle and upload modules. It has run continuously and
receives commits daily.
6529-Prenode is not a reimplementation. Its
src/tdhLoop shares file names with production — index.ts,
tdh.ts, tdh_consolidation.ts, tdh_merkle.ts — and
the same serverless configuration shape. It is the production calculation, trimmed and
wrapped so a third party can run it on their own AWS account and serve TDH over REST.
Its README states the purpose plainly:
"The 6529 Prenode decentralizes access to TDH data… it uses the same calculation logic as the 6529 websites. Standardized setup through a provided CloudFormation script means anyone can run on their AWS account."
"Most important: the immediate use of the Prenode is to enable multiple parties to independently serve as TDH providers to the on-chain TDH oracle contract that will be launching soon™. This will allow for on-chain composable TDH that is not dependent on any single party." — 6529-Prenode README
Note what this design gives and does not give. Many operators running one codebase is operator diversity. It is not implementation diversity: if the shared logic has a defect, every prenode agrees on the same wrong answer, and an oracle consuming them sees unanimity.
6529node is Go, and its internals are config, db, eth, mempool,
network, rpc with a cmd/node entrypoint. Mempool and a network layer
are the vocabulary of an actual peer-to-peer node, not a REST service. It is a ground-up
attempt at the real thing, 94 commits, last touched 7 March 2025. It has
never served production traffic.
Production has always been the main line and never stopped. The Prenode is a slice of
it, meant to run beside it, never to replace it. 6529node is a separate,
more ambitious bet that stopped early. Nothing that was abandoned was ever in
production, and nothing in production was ever abandoned.
There is a live registry at api.6529.io/oracle/prenodes, surfaced at
6529.io/network/prenodes. Read on
1 August 2026:
| Prenodes registered | Ping green | Ping orange | Ping red | TDH status |
|---|---|---|---|---|
| 37 | 1 | 1 | 35 | null on all 37 |
The registered hosts are community-run and self-funded — decentralizationmaxi.com,
node.freedomtotransact.xyz, regularnode.com and others. The oldest
registration is 27 June 2024; its last update was April 2025.
The reading that fits the evidence: participation was not the constraint. Thirty-seven operators is a strong response for a project this size. The on-chain TDH oracle that gave prenodes their purpose has not launched, and the prenode code stopped tracking production in July 2025.
The README's claim that the Prenode "uses the same calculation logic as the 6529
websites" was true when written. It is not true now. Diffing the two
tdhLoop trees, the per-token hold rate is computed differently:
// production — src/tdhLoop/tdh.ts
const hodlRate = equalIgnoreCase(nft.contract, MEMES_CONTRACT)
? MEMES_HODL_INDEX / (memesCalculationEditionSizes[nft.id]
?? getCalculationEditionSize(nft))
: nft.hodl_rate;
// Prenode — src/tdhLoop/tdh.ts
const hodlRate = HODL_INDEX / nft.edition_size;
The denominator. Production uses
max(supply, edition_size_floor), where the floor is the Manifold
totalMax capped at 310. The Prenode uses raw supply. Any Meme whose supply
sits below its floor — a freshly minted card before its research airdrop, or a card that
has had tokens burned — gets a smaller denominator on the Prenode and therefore a higher
TDH per token. That is exactly the burn-driven inflation the July 2026 change was written
to prevent. In a 23 July snapshot of all 525 cards, one was in that state: card #525, at
supply 163 against a floor of 310, which the Prenode would value at 1.90× the
production rate.
The numerator. Production's index is the maximum across Memes only, using floored sizes. The Prenode's is the maximum across Memes, Gradients and NextGen combined, using raw sizes. Whether that yields a different number depends on whether any Gradient or NextGen edition exceeds the largest Meme (3,941) — not tested here.
The narrow conclusion is enough on its own: production applies a rule the Prenode does not, so the two do not agree, and nothing in either repository would detect it. This is the class of drift a conformance contract exists to prevent, and no such contract covers TDH.
Where the protocol is written down, and where it is only code
| Layer | Formal spec? | Where |
|---|---|---|
| Stream (the new contract) | extensive | ADRs 0010–0015+, spec-policy.md organising documents by permanence class
(Permanent / Replaceable / Operational) with a Draft→Review→Final lifecycle. Actively
worked on. |
| Group eligibility (authorization) | new | docs/eligibility-spec.md — 562 lines, plus 61 golden test vectors in
JSON across 8 dimensions, plus a conformance harness that runs every vector against
both existing implementations. Still in an open pull request as of this
snapshot. |
| TDH | none found | No specification, no test vectors, no conformance contract located in any public
repository. TDH is defined by what tdhLoop does. |
| Meme Card distribution | documentation | thememecards |
| Allowlists | library | allowlist-lib |
It is the first artifact in this codebase that treats a rule set as a protocol rather than as behaviour. The format is worth stealing: a normative document, golden vectors as language-neutral JSON, and a harness that runs them against every implementation.
It also demonstrates the value immediately. When the vectors were first run against the two existing implementations — both written by the same team, in the same language, in the same repository — they disagreed in nine reproducible cases. Two of those were plain defects; the rest needed a human ruling on what the semantics should be. The spec's section 12 records each decision.
A vector is a term borrowed from cryptography: known inputs plus the exact output any correct implementation must produce. Because they are JSON and not test code, an implementation in any language can be checked against the same file.
So you can check everything here, or correct it
6529-Collections organisation — languages, last push,
licences, file trees, pull request state.
api.6529.io: /oracle/prenodes,
/api/identities/{handle}, /api/groups/{id},
/api/waves/{id}.
The scripts in this repository fetch the channel and build a local reader from it. The archive itself is not republished here — read it at the source.