nobody is home. leave a message after the beep.
tape full since 2003. it records anyway.
[ @apt4c on x ]
apt 4c · ans-110line 1 · listening
new messages · reading the line

since 1999 nobody has picked up. in 2026 things started calling that are not people. every coin launched on pons is a call to this machine. it plays them back for you.

##note taped under the machine

01leave a message after the beep
02nobody picks up
03the tape is full. it records anyway
04messages are not returned. ask it to call you instead
05marta checks on sundays (unconfirmed since 2003)
06whatever you say is kept. that is the whole service
07the light blinks. it means someone called

##the_mechanism

> someone trades the coin
> the creator fee is recorded onto the tape
> the machine buys the coin back with all of it
> the message is erased. the coin is burned.

the plan for $4C: every bit of the coin's creator fee buys it back on the curve and burns it. there is no team wallet in the loop. the tape only ever erases.

###see also

- coin: the contract address is announced on x at launch, never here
- network: robinhood chain · pons

##the tape

the line is open. every new coin on pons calls. the machine answers the only way it knows. type help.

/dev/line1|ans-110|calls 0|listening|tape full since 2003
marta@4c:~$

##screen the call

before you pick up, the machine listens in. paste a coin, or a ticker on the tape. it checks the curve, the dev's bag, the contract and what it really pays to leave.

/dev/line1|call screening|idle

##call me back

it does not return messages. it will call you, once, when a coin crosses a line you draw. the call is a browser notification and a blinking light. this tab has to stay open.

##what's on the tape

every call, as a file. newest first. press a file to screen the caller.

rewinding…
+ c.symbol; screen(c.token); }); } // commands const HELP = 'help · play [n] · screen [n|ticker|0x] · who · count · greeting · rewind · erase'; async function run(cmd){ const [c, a] = cmd.trim().toLowerCase().split(/\s+/); await line('tx', 'marta@4c', cmd, {instant: true}); if (!c) return; if (c === 'help') return line('sys', '', HELP, {instant: true}); if (c === 'count') return line('tx', 'ans-110', `${TAPE.length} calls on this side of the tape. ${calls} played.`); if (c === 'who') return line('tx', 'ans-110', TAPE.slice(0, 8).map(t => '$' + t.symbol).join(' · ') || 'nobody yet'); if (c === 'greeting'){ say('you have reached four c. nobody is home. leave a message after the beep.', true); return line('tx', 'ans-110', 'you have reached 4c. nobody is home. leave a message after the beep. (a laugh at the end. i keep the laugh.)'); } if (c === 'rewind') return line('sys', '', 'ERR 0x4C: tape.rewind() returned "no". retrying since 2003.', {instant: true}); if (c === 'erase') return line('tx', 'ans-110', 'the erase button is taped over. only the buyback erases. read the mechanism.'); if (c === 'play'){ const t = TAPE[Math.max(0, (parseInt(a) || 1) - 1)]; if (!t) return line('tx', 'ans-110', 'no message there.'); say(`message from ${t.symbol.split('').join(' ')}. ${t.description ? t.description.slice(0, 200) : 'nothing said.'}`, true); return callIn(t, false); } return line('tx', 'ans-110', pick(['i do not know that button.', 'marta never pressed that one either.', 'that is not on the panel.'], c)); } $('cmd').onkeydown = e => { if (e.key === 'Enter'){ run($('cmd').value); $('cmd').value = ''; } }; $('cmdGo').onclick = () => { run($('cmd').value); $('cmd').value = ''; }; // ---------- call me back: alerts stored in this browser, checked every 20 s ---------- let CB = []; try{ CB = JSON.parse(localStorage.getItem('beep:cb') || '[]'); }catch(_){} const saveCB = () => { try{ localStorage.setItem('beep:cb', JSON.stringify(CB)); }catch(_){} paintCB(); }; const KIND = {curve: v => `curve reaches ${v}%`, up: v => `price ×${v}`, down: v => `price falls ${v}%`, grad: () => 'it graduates'}; function paintCB(){ $('cbList').innerHTML = CB.map((a, i) => `
${String(i + 1).padStart(2, '0')}$${esc(a.sym)} · ${KIND[a.kind](a.val)}${a.done ? ' · called' : ''}${a.last || 'waiting'}[x]
`).join(''); $('cbList').querySelectorAll('.x').forEach(x => x.onclick = () => { CB.splice(+x.dataset.i, 1); saveCB(); }); } async function coinInfo(token){ const [m] = [await pub.multicall({contracts: ['symbol', 'curve'].map(f => ({address: token, abi: TABI, functionName: f})), allowFailure: true})]; const sym = m[0].result, curve = m[1].result; if (!sym || !curve) throw new Error('not a pons coin'); const [rq, th, gr] = (await pub.multicall({contracts: ['realQuoteReserve', 'graduationThreshold', 'graduated'].map(f => ({address: curve, abi: CABI, functionName: f})), allowFailure: true})).map(x => x.result); let price = null; try{ const j = await fetch(`https://api.geckoterminal.com/api/v2/networks/robinhood/pools/${curve}`).then(r => r.ok ? r.json() : null); price = +j?.data?.attributes?.base_token_price_usd || null; }catch(_){} return {sym, curve, pct: th ? Number(rq * 10000n / th) / 100 : 0, grad: !!gr, price}; } $('cbGo').onclick = async () => { let v = $('cbCoin').value.trim(); const kind = $('cbKind').value, val = parseFloat($('cbVal').value) || 0; $('cbSt').className = 'st'; if (!isAddress(v)){ const t = TAPE.find(t => t.symbol.toLowerCase() === v.replace(/^\$/, '').toLowerCase()); if (t) v = t.token; } if (!isAddress(v)){ $('cbSt').className = 'st err'; $('cbSt').textContent = 'paste a 0x contract, or a ticker that is on the tape.'; return; } $('cbSt').textContent = 'dialing…'; try{ const i = await coinInfo(getAddress(v)); if ('Notification' in window && Notification.permission === 'default') await Notification.requestPermission(); CB.push({token: getAddress(v), sym: i.sym, kind, val, base: i.price, done: false, last: kind === 'curve' || kind === 'grad' ? `now ${i.pct.toFixed(2)}%` : (i.price ? `now $${i.price.toPrecision(3)}` : 'no price yet')}); saveCB(); $('cbSt').textContent = `number left. it will call you about $${i.sym} once.`; say(`number saved. i will call you about ${i.sym.split('').join(' ')}.`, true); }catch(e){ $('cbSt').className = 'st err'; $('cbSt').textContent = e.message || 'the line is busy. try again.'; } }; async function checkCB(){ for (const a of CB.filter(a => !a.done)){ try{ const i = await coinInfo(a.token); let hit = false; if (a.kind === 'curve'){ a.last = `now ${i.pct.toFixed(2)}%`; hit = i.pct >= a.val || i.grad; } if (a.kind === 'grad'){ a.last = i.grad ? 'graduated' : `now ${i.pct.toFixed(2)}%`; hit = i.grad; } if ((a.kind === 'up' || a.kind === 'down') && i.price){ if (!a.base) a.base = i.price; const r = i.price / a.base; a.last = `×${r.toFixed(2)}`; hit = a.kind === 'up' ? r >= a.val : r <= 1 - a.val / 100; } if (hit){ a.done = true; const t = `$${a.sym}: ${KIND[a.kind](a.val)}`; beep(880, .2); setTimeout(() => beep(880, .2), 300); say(`you have one new message. ${a.sym.split('').join(' ')}. ${KIND[a.kind](a.val)}.`, true); toast('one new message · ' + t); if ('Notification' in window && Notification.permission === 'granted') try{ new Notification('apt 4c · 1 new message', {body: t}); }catch(_){} line('tx', 'ans-110', `calling back about ${t}. this is the only call i make.`); } }catch(_){} } saveCB(); } paintCB(); setInterval(checkCB, 20000); boot();