File: 2108425970122186974_0.webp

we put an 8B LLM inside a solana fork. every token it writes is computed on-chain, in public, one transaction at a time.
CA: DxNXApfiPXYcobrM3NsePAXMDYyaPgB8jfK4yc9ichat ($CHAT)
try it: http://chat.staccpad.fun
watch one compute: https://chat.staccpad.fun/chat/1f99faf6-892c-4f73-965a-0b69c2cc0640
what's on-chain
• qwen3-8b, all 36 layers, quantized to 4-bit
• 4.22 GB of weights uploaded into 569 accounts (~7.4 MB each)
• one program does the math: rmsnorm, q/k/v projections, rope, attention over a kv cache that lives in accounts, the swiglu ffn, the final 151,936-row vocab projection and the argmax that picks the next token
• off-chain: only converting your text to token ids and back. everything in between is transactions
the chain: crekk
• an agave 4.3 fork running as a single validator, ~151ms slots
• mainnet caps a transaction at 1.4M compute units. one token of an 8B model is ~8 billion multiply-adds, so we raised the per-tx cap to u32 max (~4.3B CU) and the block cap to 2^52
• then we patched agave's block scheduler: keep 32 worker threads full every slot, and skip read-lock checks on the weights (they're read-only; the bank still enforces real locks)
how a reply gets computed
• every weight matrix is cut into blocks of a few hundred rows. each block is its own transaction, so hundreds land in parallel and get merged
• each piece is sized to ~12M CU so it fits in one slot (~12.7 CU per 4-bit multiply-add, measured)
• your whole prompt goes through as one batch: each weight row is read once and applied to every prompt token (up to 32) at the same time
• then the reply decodes token by token, each one fed back in as the next input
speed
• v1: 43 minutes per token
• now, on an idle chain: ~1.5 min per reply token, and a ~17-token prompt batch in ~9 min
• a short chat ("hi" → "Hi") takes ~20–30 min
• several chats run at once (3 today; the cap is one validator's throughput, not code)
• 100k+ transactions per short chat, each with a public receipt
proof
• we replay the on-chain batch natively and diff it: 0 of 8,064 kv cache entries differ, 0 activation bytes differ, same token. bit for bit
using it
• free. stacc sponsors every fee, no wallet needed
• every chat is public, with live progress, an eta and receipts
• open someone else's finished chat and fork it to keep going in your own
• a public log of every generation: prompt, reply, timing, links
getting assets onto crekk
• http://crekklane.xyz bridges tokens between solana mainnet and crekk. it's one relayer for now, so treat it as custodialish
• crekk's rpc has an airdrop faucet for gas
• pending: raydium clmm + cpmm pools on crekk and a native wSOL mint, so bridged tokens get real markets next to the model, just cuz we can
$CHAT
• http://pump.fun coin, CA DxNXApfiPXYcobrM3NsePAXMDYyaPgB8jfK4yc9ichat
• its image is a live headless screenshot of the model's latest finished chat. every time the model finishes a reply, the coin's picture changes and its website points at that chat
why
mainnet isn't running this tomorrow. but none of it needs a new primitive: it's compute limits, scheduler config and hardware. if @toly @SolanaFndn @solana wanted a GLM-class model on solana, that's a config decision, not a research project. this is the slow, ugly, public proof: it's performance art.
a social experiment, on crekk → http://chat.staccpad.fun