# signal.family — the weave Crypto's default mode is PvP: dark terminals, war paint, everyone's edge is someone else's exit. signal.family is the other thing — player versus environment. The market is the boss; the family fights it together, reading one tape at the same moment. ## Laws 1. **Less is the feature, not the compromise.** One column. One feed. One tap to buy. Every element that survives must be the only element doing its job — a label labels, a line measures, a sentence tells. If two things say it, one goes. 2. **Sentences, not dashboards.** The UI speaks: "$412 of EGG bought · 12s." No cards, no candles, no grids. A token's buy/sell balance is a single 2px line, because that is genuinely all the information it contains. 3. **Nothing between you and the block.** No GeckoTerminal, no DexScreener, no vendor. `pve.py` reads Swap events raw off HyperEVM RPC, prices through WHYPE/stables it sees on-chain itself, and serves the page. If it can't be read raw, it isn't shown. 4. **Low code is a discipline, not a shortcut.** One Python file (stdlib only), one HTML file. Expansion uses `
` — the browser's own muscle. Every dependency refused is a failure mode deleted and a fork someone else can actually run. 5. **Daylight, not trenches.** Mint-washed bone, spruce ink. Every trading surface is black because trenches are fought at night; a family buys in the morning. Green is for buys and life; clay for sells — used rarely, never screamed. 6. **The family sees the same thing at the same time.** No premium tier, no faster websocket for whales. The alpha is the shared tape itself. 7. **Launch is a birth, not an exit.** When the launchpad comes, tokens are born in front of the family from block one — watched, not dumped on. No exit friction, no hidden allocations, or it doesn't ship. 8. **Words are load-bearing.** A sentence on the site is something a person would say out loud to a friend at the table: one fact, one number, or one action. No slogans, no "seamless", no "empower", no adjectives doing the work of facts, no cute empty states, no three-word hero taglines that could sit on any launchpad's page. If a line would survive a find-and-replace of our name with a competitor's, it is not ours — cut it. Copy is reviewed like code: what does this line let the reader do or know? Nothing → delete. Placeholders say what goes in the box ("handle", "why this one"), never "enter your…". The LEXICON is the dictionary; this law is the grammar. 9. **On-chain truth.** What the site says about a token is what the chain says: name, symbol, supply, trades, and — when a pad wrote them — the description, image and links, read off the token's own `contractURI()` or the pad that birthed it. Our births put the words themselves on-chain (ERC-7572, inline), because a face that lives in one company's database is a rumour. We show a stranger's metadata only when we can name where on-chain it came from; missing stays missing, never guessed, never bought. One exception, named: a token's *face* is a social object — the icon the market recognizes shows first, the image written at launch is the fallback, because launch-day uploads are often drafts. ## Materials - Type: **Familjen Grotesk** ("the family grotesque" — the name chose itself) + **Spline Sans Mono** for anything that counts. - Ground `#EEF4F0` · ink `#0E241D` · family green `#0B9D74` · clay `#B0532C`. - Signature: the tape of living sentences. Everything else stays quiet so it can speak. ## Operation - `python3 pve.py` → indexer + server on :8860 (`PVE_PORT`, `PVE_RPC`, `PVE_BACKFILL` env). - SQLite `pve.db`: pools, tokens, trades. Cursor survives restarts. - `/api/tape` recent swaps · `/api/tokens` 24h aggregates · `/api/health`.