Skip to content

shawnyeager/sideband-lab

Repository files navigation

Sideband Lab

Visual projects exploring control, trust, money, and who wins as AI reshapes everything — the lab for Sideband.

lab.sideband.pub

Projects

Project What it is
Agent-Era Infrastructure Map Companies and protocols scored on openness and distribution across five layers of the emerging agent stack
U.S. GDP Status A status page for the economy where the components are AI providers and the metric is GDP
Three-Body Problem A force simulation of the three-way gravitational fight between state regulators, card networks, and open protocols

Stack

  • Astro — static site generator, renders the shell
  • React — component islands (map)
  • D3.js — force simulations, vendored for supply chain integrity
  • Supabase — entity scores and layer data
  • Vercel — deployment

Projects are framework-agnostic. Each one uses whatever fits — React, vanilla JS, D3, or plain HTML. The Astro shell wraps them with a shared header and meta tags.

Local development

git clone https://github.com/shawnyeager/sideband-lab.git
cd sideband-lab
npm install
cp .env.example .env   # fill in Supabase keys if you want live map data
npm run dev

The map works without Supabase credentials — it just won't load entity data. The other projects are fully static.

Adding a project

Each project is a standalone HTML page in public/[slug]/index.html, wrapped by an Astro route that injects the shared header and meta tags.

  1. Create src/pages/[slug]/index.astro — reads the HTML file and injects projectHeader + projectMeta
  2. Create public/[slug]/index.html — your project's standalone HTML (must have <head> and <body> tags)
  3. Add an entry to src/content/projects.json with status: "draft"
  4. Add a thumbnail at src/assets/projects/[slug].png and an OG image at public/img/og/[slug].png
  5. Set status: "live" when ready

See CLAUDE.md for the full scaffolding template and conventions.

Project structure

src/           Source code — components, pages, layouts, styles
public/        Static assets — fonts, images, project HTML
scripts/       CLI tools — screenshot capture, entity scoring, data export
supabase/      Database migrations
data/          Exported snapshots (map-entities.json)

Map scoring

Entity scores are computed deterministically from structured signals. An LLM reads source material and extracts factual signals (license type, governance model, operator count, etc.) — it never picks a score. A weighted formula then computes the 0-100 position on each axis from those signals.

X-axis (Closed → Open): spec_license, governance, permission_required, independent_implementations, fork_modify_allowed, tos_restrictions

Y-axis (Centralized → Distributed): deployment_model, operator_count, single_point_of_failure, self_hostable, works_offline, central_coordination_required

Same evidence in, same score out. Each score is auditable: you can trace exactly which signal contributed how many points and what source text supported it. Signal definitions and weights live in scripts/score-entities.mjs.

Contributing

Issues and PRs are welcome. If you spot a bug, have a data correction for the map, or want to propose a new project idea, open an issue.

License

MIT

About

Sideband Lab — visual projects exploring control, trust, money, and who wins as AI reshapes everything

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors