CLANK TAPE · DOCS

stack · data · deploy · zero runtime deps
[01]

Stack

what ships
┌─ runtime ──────────────────────────────────────────────────────────────┐
│ front end     static HTML + CSS (IBM Plex Mono)                        │
│ charts/tables Unicode box-drawing + ASCII bars (baked at build time)   │
│ JS            optional snapshot re-check only (board works without it) │
│ frameworks    none                                                     │
│ bundler       none                                                     │
└────────────────────────────────────────────────────────────────────────┘

┌─ build / fetch ────────────────────────────────────────────────────────┐
│ language      Python 3.12 (stdlib only)                                 │
│ script        scripts/snapshot.py                                      │
│ libs          urllib · json · html · pathlib · math · collections      │
│ pip packages  none                                                     │
│ output        data/latest.json + index.html                            │
└────────────────────────────────────────────────────────────────────────┘

┌─ schedule / host ──────────────────────────────────────────────────────┐
│ CI            GitHub Actions (ubuntu-latest, cron every 6h UTC)         │
│ workflow      workflows/daily-tape.yml → .github/workflows/ when live  │
│ host          GitHub Pages · main branch root · .nojekyll              │
│ live URL      https://avalidurl.github.io/clank-tape/                  │
│ chain focus   Base mainnet (8453)                                      │
└────────────────────────────────────────────────────────────────────────┘
[02]

Pipeline

snapshot → board
  clanker.world/api
        │
        ├─ GET /tokens?sortBy=deployed-at&sort=desc   (+ cursor pages)
        ├─ GET /tokens?sortBy=market-cap&sort=desc
        └─ GET /tokens/trending
                │
                v
        scripts/snapshot.py
                │
                ├─ normalize fees (v4_lp / v4_dyn / tax_v0 → bps)
                ├─ aggregate creators + UTC cohorts
                ├─ write data/latest.json
                └─ bake ASCII panels → index.html
                        │
                        v
              GitHub Pages (static)
repo layout
───────────
clank-tape/
├── index.html              baked board (regenerated)
├── style.css               terminal CRT theme
├── data/latest.json        last snapshot
├── docs/index.html         this page
├── scripts/snapshot.py     fetch + render
└── workflows/daily-tape.yml  Actions recipe
[03]

Clanker API notes

quirks we encode
• User-Agent required (ClankTape/0.1)
• Do not pass limit= — use default page size (~10) + cursor=
• sortBy that work: deployed-at · market-cap
• Fee encodings differ by regime:
    tax_v0  buyTaxRate/sellTaxRate in 1e-4 bps (1_000_000 = 100 bps = 1%)
            split shares in 1e8 (100_000_000 = 100%)
    v4_*    clankerFee/pairedFee (and baseFee/maxFee) in 1e-2 bps
            (10_000 = 100 bps); recipients[].bps sum to 10_000
• Trending token map keys may differ in checksum case → lowercase lookup
• Source of truth for fields: live payloads, not assumed SDK shapes
[04]

Hosting

Pages + Actions
GitHub Pages
  source: Deploy from a branch → main / (root)
  artifact: committed index.html + style.css + data/ + docs/

GitHub Actions (when workflow scope is enabled)
  trigger: cron '17 */6 * * *' + workflow_dispatch
  steps:  checkout → python 3.12 → snapshot.py → commit data+index

Until .github/workflows/daily-tape.yml is active, refresh manually:
  python3 scripts/snapshot.py && git add data index.html && git commit && git push
[05]

Local run

reproduce a tape
git clone https://github.com/avalidurl/clank-tape.git
cd clank-tape
python3 scripts/snapshot.py
# open index.html locally, or push and wait for Pages
[06]

Aeon?

agent runtime vs this board
Do we use Aeon here?
  NO — not for the Daily Tape refresh.

Clank Tape refresh = deterministic Python snapshot on GitHub Actions.
Aeon (aeon.fun) = LLM agent runtime that also uses GitHub Actions, with
skills/, model secrets, and cron that *thinks*.

Use Aeon later only if you want agentic briefs/alerts on top of the tape.
Do not wrap snapshot.py in Aeon just to republish static HTML.
[07]

LLM skill

for coding agents
Stable skill URL (same pattern as Clanker):
  https://avalidurl.github.io/clank-tape/skill/skill.md

Repo path: skill/skill.md

Agents: fetch that URL (or clone the repo) when working on Clank Tape,
refreshing the board, or explaining Fee Reality / cohorts / creators.