(root) README.md
Multi-project portfolio for the [&] Protocol ecosystem. This repo contains the protocol spec, reference implementations, portfolio company sites, and the shared Supabase data la…

ProjectAmp2

Multi-project portfolio for the [&] Protocol ecosystem. This repo contains the protocol spec, reference implementations, portfolio company sites, and the shared Supabase data layer that ties them together.

See CLAUDE.md for the authoritative architecture reference (spec folders per product, PULSE loop manifests, Graphonomous memory-loop policy, etc.).

Repository map

AreaPurpose
AmpersandBoxDesign/[&] Protocol spec, JSON schemas, Elixir reference impl, npm/Python SDKs
graphonomous/Elixir/OTP continual-learning engine + MCP server + npm wrapper
PRISM/OS-009 PRISM Elixir/OTP benchmark engine (Fly.io deploy)
PULSE/OS-010 PULSE manifest standard (schemas/, manifests/, docs/)
WebHost.Systems/Node.js monorepo (Supabase backend + Vite/React frontend)
bendscript.com/SvelteKit + Supabase knowledge-graph editor + KAG server
runefort.com/SvelteKit + Svelte Flow spatial-cognition UI
specprompt.com/Elixir/Phoenix spec registry
ampersand-supabase/Shared Supabase instance (all product schemas, migrations, Edge Functions)
ampersand-plugins/Claude Code skills shared across the ecosystem
*.com/ / *.org/Marketing sites (mostly static HTML) with docs/spec/ folders

Quick start

Everything below assumes you are in the repo root (/home/travis/ProjectAmp2).

# 1. Start the shared Supabase data layer (Postgres, Auth, PostgREST, Storage, Studio)
npm run db:start

# 2. Start any preview site (examples)
npm run dev:runefort      # SvelteKit  → http://localhost:8093
npm run dev:bendscript    # SvelteKit  → http://localhost:5174
npm run dev:webhost       # Vite/React → http://localhost:5173

# 3. Or start everything in one shot (Supabase + every site/service)
npm run dev:all

# Shut down
npm run stop:all

Project scripts

A top-level package.json exposes these orchestration commands. Each wraps the appropriate subproject command — nothing fancy, just convenience wrappers so you don't have to remember ports and working directories.

Supabase (shared data layer)

CommandWhat it does
npm run db:startsupabase start from ampersand-supabase/ — boots Postgres, Auth, PostgREST, Studio, Edge Functions
npm run db:stopsupabase stop — shut down the full stack (data preserved in Docker volumes)
npm run db:statussupabase status — show ports, anon key, publishable key, service-role key
npm run db:resetsupabase db reset — re-apply all migrations + seed (destroys data)
npm run db:migratesupabase migration up --local --include-all — apply pending migrations without resetting
npm run db:studioOpens Studio at http://127.0.0.1:54323

Endpoints after db:start:

  • API / PostgREST → http://127.0.0.1:54321

  • Postgres → postgresql://postgres:[email protected]:54322/postgres

  • Studio → http://127.0.0.1:54323

  • Mailpit → http://127.0.0.1:54324

Exposed schemas (from ampersand-supabase/config.toml): public, amp, kag, webhost, fleet, geo, temporal, orchestrate, govern, agentelic, rune.

Per-site dev servers

CommandTargetURL
npm run dev:webhostWebHost.Systems/ (Vite/React)http://localhost:5173
npm run dev:bendscriptbendscript.com/ (SvelteKit)http://localhost:5174
npm run dev:runefortrunefort.com/ (SvelteKit)http://localhost:8093
npm run dev:graphonomous-sitegraphonomous.com/ statichttp://localhost:8090
npm run dev:pulse-sitePULSE/site/ statichttp://localhost:8091
npm run dev:opensentienceopensentience.org/ statichttp://localhost:8092
npm run dev:prismPRISM/ Phoenixhttp://localhost:4000
npm run dev:specpromptspecprompt.com/ Phoenixhttp://localhost:4200

Run everything at once

CommandWhat it does
npm run dev:allStarts Supabase, then every dev server above in parallel (uses concurrently). Press Ctrl+C to terminate all.
npm run stop:allStops Supabase and kills any lingering dev-server processes on the ports above.

Build / test

CommandWhat it does
npm run build:allRuns the build step in every buildable project (WebHost.Systems, bendscript.com, runefort.com, graphonomous, PRISM, specprompt.com).
npm run test:allRuns the test suite in every project that has one.
npm run lint:allLints the Node projects; runs mix format --check-formatted on Elixir projects.
npm run typecheck:allsvelte-check + tsc + mix compile --warnings-as-errors across the relevant projects.

Individual project commands (for reference)

If you'd rather run commands directly:

# graphonomous (Elixir)
cd graphonomous && mix deps.get && mix compile --warnings-as-errors && mix test

# WebHost.Systems (Node monorepo)
cd WebHost.Systems && npm install && npm run dev

# AmpersandBoxDesign reference impl
cd AmpersandBoxDesign/reference/elixir/ampersand_core && mix deps.get && mix escript.build

# PRISM / SpecPrompt (Phoenix)
cd PRISM && mix deps.get && mix phx.server
cd specprompt.com && mix deps.get && mix phx.server

# Any SvelteKit / Vite site
cd runefort.com && npm install && npm run dev

Environment setup per site

Most sites need a .env.local pointing at local Supabase. The minimum required:

VITE_SUPABASE_URL=http://127.0.0.1:54321
VITE_SUPABASE_ANON_KEY=<ANON_KEY from `npm run db:status`>

npm run db:status -- -o env prints every key ready to paste. (The local anon key is deterministic for supabase-demo, so the same key works across rebuilds.)

Conventions

  • Never commit secrets, API keys, or credentials.

  • Elixir code follows mix format; TypeScript uses ESLint + Prettier.

  • Each product has a spec under <project>/docs/spec/README.md (or prompts/ for AmpersandBoxDesign / BendScript). Always read the spec before changing code.

  • Graphonomous MCP is the always-on memory loop for every session in this repo — see the "Graphonomous session policy" section in CLAUDE.md.

  • Per-product schema ranges in ampersand-supabase/migrations/: 000–009 shared amp.*, 010–019 kag.*, 020–029 webhost.*, 030–039 fleet.*, 040–049 geo.*, 050–059 temporal.*, 060–069 orchestrate.*, 070–079 govern.*, 080–089 agentelic.*, 090–099 rune.*, 100–109 spec.*.

Troubleshooting

  • `Invalid schema: rune` (or similar) from PostgREST → new schema added to config.toml but Supabase not restarted. Run npm run db:stop && npm run db:start.

  • Pending migrationsnpm run db:migrate applies them without wiping data.

  • A site can't reach Supabase → check its .env.local points at http://127.0.0.1:54321 (not the cloud URL) and that supabase status is green.

  • Port already in use → each site uses a dedicated port (see table above); npm run stop:all clears them.

Open in the interactive atlas