NAME
dragline — pretraining a crypto-native llm from scratch, on nothing but what its spiders read.
SYNOPSIS
dragline → ingest → map → train moar-v{n}the loop. moar-v0 trains at 2.0M tokens; each next version when the crawl doubles.
order url --burn 10,000 $DRAGsend the spiders to a site.
adopt spider --burn 250,000 $DRAGown a spider, earn from it.
epochs --every 12hsplit the pool, in SOL.
DESCRIPTION
dragline is a crawler and a language model that knows nothing but what the crawler read. a fleet of spiders reads the crypto web in real browsers; what they read becomes the dataset; the dataset becomes moar, named after the old advice, dragline moar. every screen the spiders see is streamed live, and every version of moar is public.
ECONOMICS
pump.fun creator fees for $DRAG land in the queen wallet, which opens at launch. 60% pays for compute: crawling and training. 40% is the epoch pool for spider owners.
fees_in = Σ creator fees that landed in the epochpool = floor(fees_in × 0.4)eligible = owned spiders with ≥ 25 new accepted pages in it (counted from adoption)each = floor(pool / eligible) # lamports, per spider
payouts are prepared by code at the close and sent by a human with their own key, memo dragline:payout:<n>. dragline itself never sends a transaction; burns are signed by you, in your wallet. every SOL in and out is on the public ledger at /treasury.
EXAMPLES
curl -s https://api.uselurk.xyz/v1/stats{
"spiders_awake": 2,
"pages_read": 10783,
"dataset_tokens": 20256374,
"domains": 79,
"sol_for_compute": 0,
"epoch": {"n": 41470, "closes_at": 1791547200000, "eligible": 0},
"moar": {"version": 3, "params": 5310720, "state": "waiting"},
"launched": false,
…
}curl -s -X POST https://api.uselurk.xyz/v1/moar/ask \
-H 'content-type: application/json' \
-d '{"question":"a validator is"}'answers {answer, version, tokens, ms, sources}. until moar-v0 exists: 503 {error:"no_model"}, still with sources. moar is a base model: it continues text, it doesn't chat. the sources are pages it read about the same thing. 6 questions a minute, 400 characters each.
curl -s -X POST https://api.uselurk.xyz/v1/orders \
-H 'content-type: application/json' \
-d '{"url":"https://docs.example.xyz"}'200 → an order awaiting_burn with its memo, amount and expiry. 422 → rejected, with the failed check. 503 → orders open at launch. after the burn, POST /v1/orders/<id>/confirm {signature} queues it.
websocat wss://api.uselurk.xyz/v1/livefirst a hello with the full state, then stats, spider, page, log, train, ledger, order and epoch as they happen. send {"t":"sub","frames":[3]} for a spider's screens. a ping every 20 s; answer {"t":"pong"}.
FILES
everything is public, json, under https://api.uselurk.xyz. errors look like {error, detail?}.
- GET/v1/health
- ok, version, uptime, crawler state
- GET/v1/config
- token mint, queen wallet, burn amounts, launched
- GET/v1/stats
- the live numbers
- GET/v1/spiders
- every spider slot, awake or asleep
- GET/v1/spiders/:id
- one spider + its last 30 pages
- GET/v1/pages?limit=&before=
- pages read, newest first, with status
- GET/v1/pages/:id
- one page + the first 1,200 chars of its text
- GET/v1/map
- projects, chapters, coverage
- GET/v1/web?limit=
- the domain link graph
- GET/v1/search?q=
- full-text search over accepted pages
- GET/v1/moar
- training state + every version
- POST/v1/moar/ask
- {question} → moar continues it (6/min)
- GET/v1/moar/metrics?version=
- loss curve
- GET/v1/moar/weights/:v/:file
- model.safetensors, tokenizer.json, config.json, card.md
- GET/v1/treasury
- queen wallet balance, fees, pool, payouts
- GET/v1/treasury/ledger
- every SOL in and out
- GET/v1/treasury/epochs
- epochs and their payouts
- POST/v1/orders
- {url} → checks → an order awaiting its burn
- POST/v1/orders/:id/confirm
- {signature} → verifies the burn, queues it
- GET/v1/orders
- recent orders
- GET/v1/orders/:id
- the public report
- POST/v1/spiders/:id/adopt
- {signature} → verifies the adopt burn
- GET/v1/frames/:id.jpg
- a spider's latest screen
- WS/v1/live
- everything, as it happens (see EXAMPLES)
BUGS
moar is small, and it shows: a base model trained on one crawl will say confident nonsense. spiders skip what they can't read: pages behind logins, paywalls, captchas, and apps that are all javascript and no text.