Skip to content

Run-a-node funnel: hero CTA, live node board, referral links, headless install fix (v0.2.32) - #57

Merged
ralyodio merged 1 commit into
masterfrom
feat/run-a-node-funnel
Oct 21, 2026
Merged

ralyodio merged 1 commit into
masterfrom
feat/run-a-node-funnel

Conversation

@ralyodio

Copy link
Copy Markdown
Collaborator

Goal: a stranger goes from c0mpute.com to a running node in under five minutes, and sees that other people already did.

Funnel audit (fresh Ubuntu 24.04 container, non-root user with sudo, no TTY): the installer took 122 s, then exited 1 before starting the worker. plugins/transcode/install.sh redirected apt to /dev/tty, which cannot be opened under ssh without -t, cloud-init or a container, and install_transcode_deps was the last command of an if body under set -e. Binaries, no node.

Changes

  • install: package managers get the terminal only when /dev/tty opens, otherwise run non-interactively (DEBIAN_FRONTEND=noninteractive for apt); transcode deps are optional (|| true). /install.sh and plugin installers are served as text/x-shellscript.
  • Home: above the fold "Run a node. Help build open AI.", the 100,000-node goal stated as the mission (not a claim about today), live node count + progress bar, install line, OS/GPU support, link to the board and referral link. Buyers keep their path one line below.
  • /nodes + /api/nodes: public board from a new aggregator route GET /nodes: last 8 chars of the peer id, class (cpu / gpu:vendor), cores, bench score, version, referral handle, last seen. Only fields already in the public capability ad; the CPU model string is never published (test pins it).
  • Referrals: /r/<handle> shows curl -fsSL https://c0mpute.com/install.sh | C0MPUTE_REF=<handle> sh; install.sh (--ref/C0MPUTE_REF) writes ~/.c0mpute/ref; the worker adds ref to the hardware blob of its ad (no struct change, old aggregators ignore it); the board counts nodes per handle. Public scoreboard, no payout, stated on the page.
  • Providers: what pays today (Infernet inference billed through CoinPay, 16 coins or PayPal; infernet payout set), honest that demand is early, requirements table, why it matters.
  • README "Run a node" section with a live nodes-online badge; nav "run a node" + "nodes"; sitemap; llms.txt.
  • v0.2.32 so workers carry the referral code (tag after merge).

Tests: cargo test -p c0mpute-core new tests (referral sanitizing, node board ranking/referrer counts/no CPU model) pass; tsc --noEmit clean; next build ok; local next start against a mock aggregator renders /, /nodes, /r/chovy (404 on an invalid handle) and serves the shell content type.

🤖 Generated with Claude Code

…s install fix; v0.2.32

- Home page leads with "Run a node", the 100,000-node goal (stated as the
  mission, not a claim), a live node count with progress bar, and the one-line
  install. ISR fetch uses next.revalidate so the count is not swallowed into
  the stub by Next's no-store dynamic error.
- /nodes: public board from a new aggregator GET /nodes (short peer id, class,
  cores, bench score, version, referral handle; never the CPU model string),
  plus /api/nodes JSON.
- Referrals: /r/<handle> gives an install line with C0MPUTE_REF; install.sh
  (--ref or C0MPUTE_REF) saves ~/.c0mpute/ref, the worker puts it in its
  capability ad's hardware blob, the board counts nodes per handle.
- install.sh no longer aborts on headless boxes: the transcode installer only
  redirects to /dev/tty when one can be opened (it failed under ssh without
  -t, cloud-init and containers), and its failure is optional under set -e,
  so the worker now starts. /install.sh is served as text/x-shellscript.
- Providers page: what pays today (Infernet via CoinPay, 16 coins + PayPal,
  infernet payout set), honest about early demand, requirements table.
- README "Run a node" section + nodes-online badge, nav, sitemap, llms.txt.
- v0.2.32 (Cargo, JS packages, latest.json fallback).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

9 finding(s)

MEDIUM: 9

Severity Rule Location
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:53
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:105
MEDIUM js-unescaped-html-sink apps/web/src/components/pit-footer.tsx:17
MEDIUM sh-remote-script-execution scripts/dev-setup.sh:25
MEDIUM sh-eval-expansion scripts/dev-setup.sh:35
MEDIUM sh-remote-script-execution scripts/install.sh:162
MEDIUM sh-remote-script-execution scripts/install.sh:187
MEDIUM sh-remote-script-execution scripts/install.sh:280
MEDIUM sh-remote-script-execution scripts/install.sh:297

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit afa9d55 into master Oct 21, 2026
12 checks passed
@ralyodio
ralyodio deleted the feat/run-a-node-funnel branch October 21, 2026 13:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant