Staff Dashboard

Reservations, API setup, onboarding, and GTM tracking.

dev-only auth · move to WorkOS before production

Dashboard
Reservations, setup status, and quick actions.
⚠️
Resend not connected — email notifications are off

To receive order confirmations and send customers receipts, connect Resend. See the Resend tab for steps. Keys go in Infisical/Vercel — not in this dashboard.

0
NY Nodes reservations
0
Raleigh reservations
0
Device pre-orders
Integration Status
Resendneeds setup
Stripelinks live
Strike (Lightning)pending
Cerebras APIpending
OpenRouter APIpending
Grok / X Authpending
Supabase DBpending
Infisical Secretsneeds setup
Reservations
Staff log — no PII stored. Use reference IDs only. Connect reservations.md ↗ and Stripe webhook for auto-sync.
● NY Nodes: 0 reserved  ◆  Raleigh: 0/12 seats  ◆  Device pre-orders: 0  ◆  Lightning $1,950 · Card $2,000 (NY)  ◆  Lightning $950 · Card $1,000 (Raleigh)  ◆  no PII stored — reference IDs only  ◆  
🔒
No PII — reference IDs only

Do not enter names, emails, phone numbers, or any personally identifiable information in this dashboard. Use a short reference (e.g. NY-001, RL-003) or last 4 of a transaction ID. Staff notes are for internal tracking only — keep them brief and non-identifying.

New York Nodes in The Sky Stripe ↗
Premier venue · ⚡ $1,950 · 💳 $2,000 0 reserved
#Ref IDPaymentAmountDateStaff notes (no PII)Clear
no entries — click + Add entry above
Raleigh Nodes by the Rye Stripe ↗
12 seats · July 21 · ⚡ $950 · 💳 $1,000 0/12 seats
#Ref IDPaymentAmountDateStaff notes (no PII)Clear
no entries — click + Add entry above
Device Pre-orders (ESP32-S3)
$100 pre-order · founder prototype 0 orders
#Ref IDPaymentAmountDateStaff notes (no PII)Clear
no entries — click + Add entry above
Resend — Email Integration
Sends order confirmations and notifications. See docs/nextsteps.md §1 for full steps.
⚠ DO NOT paste real API keys into this dashboard. This page is served over the web — anything entered here is visible.
Real keys go in Infisical (see below) and are injected as Vercel environment variables at deploy time.
The fields below are for reference / documentation only.
🔄 Environment variables are rotated regularly. Use Infisical → Vercel sync to keep them current without touching code.
Setup: infisical.com → create project → add secrets → connect Vercel integration at infisical.com/docs/integrations/cloud/vercel
Resend Connection not connected
RESEND_API_KEY not set

Set this in Infisical and Vercel → env vars. Key starts with re_

What Resend sends
Order form submitted (Lightning)
→ Customer receives order summary · → jim@highermark.xyz receives notification
Stripe payment completed
→ Customer receives payment confirmation · → jim@highermark.xyz notified via Stripe webhook → Resend
Strike Lightning payment confirmed
→ jim@highermark.xyz notified · Eventually: customer auto-confirmation
Order form submitted (Card)
→ Customer receives form summary · → jim@highermark.xyz notified
Implementation Steps
  1. Sign up at resend.com and verify domain highermark.xyz
  2. Generate API key under Settings → API Keys
  3. Add RESEND_API_KEY to Infisical project highermark → environment production
  4. Enable Infisical ↔ Vercel sync at infisical.com/docs/integrations/cloud/vercel
  5. Create api/send-confirmation.js (scaffold below)
  6. Create api/stripe-webhook.js to handle Stripe events and call Resend
  7. Update vercel.json to route /api/*
  8. Test with Resend's test mode before going live
// api/send-confirmation.js (scaffold) import { Resend } from 'resend'; export default async function handler(req, res) { const resend = new Resend(process.env.RESEND_API_KEY); const { name, contact, event, paymentMethod, amount } = req.body; // 1. Send to customer (if email provided) if (contact && contact.includes('@')) { await resend.emails.send({ from: 'highermark <no-reply@highermark.xyz>', to: [contact], subject: `Your reservation — ${event}`, html: `<p>Hi ${name},</p><p>Your ${event} reservation is confirmed. Payment: ${paymentMethod} · ${amount}.</p>`, }); } // 2. Notify staff await resend.emails.send({ from: 'highermark <no-reply@highermark.xyz>', to: ['jim@highermark.xyz'], subject: `New reservation — ${event}`, html: `<p>Name: ${name}<br>Contact: ${contact}<br>Payment: ${paymentMethod} · ${amount}</p>`, }); res.json({ ok: true }); }
API Keys & Integrations
Reference panel. All fields are placeholders — real keys live in Infisical and Vercel environment variables.
⛔ NEVER paste real API keys here. This is a static HTML file served over the web.
Real keys → Infisical → Vercel env vars via the integration. Keys are rotated on schedule and injected at deploy time — they are never stored in the repo or visible on the frontend.
Resend
RESEND_API_KEYnot set

Sign up: resend.com

Stripe
STRIPE_SECRET_KEYlinks live
STRIPE_WEBHOOK_SECRETwebhook pending

Dashboard: dashboard.stripe.com

Strike (Lightning)
STRIKE_API_KEYpending

Sign up: developer.strike.me

Cerebras (Fast LLM — highermark AI)
CEREBRAS_API_KEYpending

Sign up: api.cerebras.ai · See also: docs/cerebrasapi.md

OpenRouter (Multi-model routing)
OPENROUTER_API_KEYpending

Sign up: openrouter.ai

Grok API + X Auth (Hermes integration)
GROK_API_KEYpending
X_CLIENT_ID
X_CLIENT_SECRET

Sign up: x.ai + developer.twitter.com

Supabase (Reservations database)
SUPABASE_URLpending
SUPABASE_ANON_KEY

Sign up: supabase.com


How to set these properly (Infisical → Vercel):
1. Add each key to Infisical under project highermark → env production
2. Connect the Infisical Vercel integration — secrets auto-sync on each deploy
3. In your API routes, access via process.env.RESEND_API_KEY etc.
4. Never import env vars in frontend .html files — always proxy through api/ serverless functions
Implementation Roadmap
Full details in docs/nextsteps.md and nextsteps.config.
Priority 1 — Email (Resend)
  1. Sign up at resend.com
  2. Verify domain highermark.xyz
  3. Add RESEND_API_KEY to Infisical
  4. Create api/send-confirmation.js
  5. Create api/notify-staff.js
  6. Deploy to Vercel with env vars synced
  7. Test: submit order form → check jim@highermark.xyz
Priority 2 — Stripe Webhook
  1. Go to Stripe webhooks
  2. Add endpoint: https://highermark.xyz/api/stripe-webhook
  3. Select events: checkout.session.completed
  4. Copy webhook secret → add to Infisical as STRIPE_WEBHOOK_SECRET
  5. Create api/stripe-webhook.js — verify signature, call Resend, log to Supabase
Priority 3 — Lightning (Strike)
  1. Apply at developer.strike.me
  2. Get API key → add to Infisical as STRIKE_API_KEY
  3. Create webhook for payment.updated
  4. Create api/strike-webhook.js
  5. Test with a $0.01 Lightning payment
Priority 4 — highermark AI APIs
  1. Cerebras: api.cerebras.ai → create api/cerebras-chat.js
  2. OpenRouter: openrouter.ai → create api/openrouter-chat.js
  3. Grok: x.ai → create api/grok-chat.js
  4. Update highermark-ai.html to call real endpoints
  5. Wire credit system to Supabase ledger
Staff Onboarding
Welcome to highermark. Get set up using the steps below.
Step 1 — Complete #onboarding in the work chat

Once you've joined the work chat, go to the #onboarding channel and follow the instructions there to get fully set up. That covers tools, access, and what you'll be working on.

Already interviewed? Connect directly

If you've already been through an interview, reply directly from the email thread or reach out on X. If you communicate primarily on Nostr, send your npub to @jimsbr or email it.

Communicate on Nostr? Send your npub to @jimsbr or include it in your email.

GTM Kickoff

Once onboarded, you'll be contributing to Go To Market across these channels. Outputs and schedules are in the work chat.

X / Twitter Discord Reddit Instagram TikTok Facebook
GTM — Go To Market
Channel tracking. Update links in nextsteps.config as channels launch.
Active
𝕏
X / Twitter
@jimsbr
● active
Pending — awaiting output
💬
Discord
link pending
waiting for output
🔴
Reddit
link pending
waiting for output
📸
Instagram
link pending
waiting for output
👤
Facebook
link pending
waiting for output
🎵
TikTok
link pending
waiting for output
Request GTM access or work chat

To get access to channels, content calendars, or to join the GTM team, message @jimsbr on X or email jim@highermark.xyz.

Stripe Payments — Setup & Scaffolding
Wire up real Payment Intents for X Multiplayer ($2) and premium gifts ($24). Stripe links are currently live for pre-orders.
⚠ Never put sk_live_ keys in frontend HTML. Use Vercel serverless functions. Keys go in Infisical → Vercel env vars only.
Current Stripe Links (Live)
NY Nodes card ($2,000)buy.stripe.com/7sY8wP...
Raleigh Nodes card ($1,000)buy.stripe.com/eVq3cv...
X Multiplayer / highermark ($2)buy.stripe.com/28E00j...
New Products to Create
X Multiplayer Access create in Stripe

One-time $2 payment. Local extension download. No subscription.

  1. Stripe Dashboard → Products → Add product
  2. Name: "X Multiplayer Access" · Price: $2.00 · One time
  3. Copy price_xxx → add to Infisical as STRIPE_PRICE_XMP_2
  4. Update xmultiplayer.html with the Payment Link URL
Premium Gift (3mo) create in Stripe

$24 one-time gift of 3 months premium to buyer's account.

  1. Stripe Dashboard → Products → Add product
  2. Name: "X Multiplayer 3mo Premium Gift" · Price: $24.00 · One time
  3. Copy price_xxx → add to Infisical as STRIPE_PRICE_XMP_24
  4. Update xmultiplayer.html second tier button
Payment Intent Backend Scaffold
// api/create-payment-intent.js (Vercel serverless) import Stripe from 'stripe'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY); export default async function handler(req, res) { const { tier } = req.body; // 'xmp-2' or 'xmp-24' const amounts = { 'xmp-2': 200, 'xmp-24': 2400 }; const intent = await stripe.paymentIntents.create({ amount: amounts[tier] ?? 200, currency: 'usd', automatic_payment_methods: { enabled: true }, metadata: { tier, source: 'xmultiplayer' }, }); res.json({ clientSecret: intent.client_secret }); }
Arkade.money — Lightning QR Integration
Arkade generates Lightning invoices for your products. Used for the $85.21 device pre-order and can be wired to all event tickets.
Arkade is the consumer-facing Lightning checkout. The current $85.21 QR in index.html is an Arkade QR image. To make all QRs live and invoice-generating, connect your node and create Arkade products for each price point.
Setup Steps
  1. Create account at arkade.money
  2. Connect your Lightning node: Arkade → Settings → Node (LND/CLN or custodial fallback)
  3. Create products for each price point: $85.21 (device), $950 (Raleigh), $1,950 (NY), $2 (X Multiplayer)
  4. Copy each product deep link → paste into the corresponding page (see table below)
  5. Regenerate QR images using the Python script in docs/infraforlightning.md §3a with the Arkade LNURL as data
  6. Set up Arkade webhook → api/arkade-webhook.js to auto-fulfill on payment
Price Points & File Locations
ProductAmountFileElement IDStatus
Device pre-order Lightning$85.21index.htmlmainQrImgQR image live — invoice static
Raleigh Nodes$950raleigh-nodes.htmlrlUriinvoice + QR live
NY Nodes$1,950ny-nodes.htmlnyLnurlinvoice + QR live
X Multiplayer$2xmultiplayer.htmlln-addrLightning address only
Arkade Webhook Scaffold
// api/arkade-webhook.js export default async function handler(req, res) { // TODO: verify Arkade signature from request headers const { product_id, amount_sats, payer_note } = req.body; // 1. Log to Supabase // 2. Trigger Resend confirmation email // 3. Mark order fulfilled res.json({ received: true }); }

Add ARKADE_WEBHOOK_SECRET to Infisical. See full guide in .

Milestones & Due Diligence
Transparent project tracker. Update manually until Supabase integration is live. Visible to all staff, founders, and device owners.
All staff, users, and founders (anyone who owns a device or holds a reservation) are considered highermark staff and have access to this dashboard. This tracker is for transparency and accountability.
Project Milestones
Bard music bot — 2 years flawless uptime
Discord music bot running continuously. Base proven.
complete
OpenClaw verified joining live Discord channel
Agent framework integration confirmed working.
complete
🟣
v1 founder prototypes — Curtana + Bard on device
ESP32-S3 hardware with plug-and-run agent + music bot. BYO-LLM keys. In progress.
in progress
Raleigh Nodes — July 21, 2026
12-seat intimate Bitcoin event. Venue confirmed pending. Umbrel Pro included.
upcoming
NY Nodes in The Sky — TBD
Premier venue event above Manhattan. Venue TBC.
upcoming
X Multiplayer — closed testing
Local extension for coordinated multi-account agent flows on X. In closed testing.
testing
v1.x — OpenClaw/Hermes integration · multi-LLM switching
First-class integrations for agent frameworks.
roadmap
Due Diligence
Payments & Legal
Stripe links live
Lightning QRs for node events
US company registered
Stripe webhooks configuredpending
Resend email confirmedpending
Technical
Site deployed & live
Password-gated access
Infisical secrets managerpending
Supabase DB connectedpending
API endpoints deployedpending
nextsteps.md
Full implementation guide. Open raw .md ↗
Priority 1 — Resend (Email)
  1. Sign up at resend.com
  2. Verify domain highermark.xyz
  3. Add RESEND_API_KEY to Infisical
  4. Create api/send-confirmation.js and api/notify-staff.js
  5. Deploy to Vercel with env vars synced from Infisical
Priority 2 — Stripe Webhook
  1. Stripe Dashboard → Webhooks → Add endpoint: https://highermark.xyz/api/stripe-webhook
  2. Events: checkout.session.completed, payment_intent.succeeded
  3. Copy webhook secret → Infisical as STRIPE_WEBHOOK_SECRET
  4. Create api/stripe-webhook.js — verify sig, call Resend, log to Supabase
Priority 3 — Lightning (Strike)
  1. Apply at developer.strike.me
  2. Add STRIKE_API_KEY to Infisical
  3. Create api/strike-webhook.js for payment.updated events
Priority 4 — X Multiplayer Stripe Products
  1. Create $2 product → STRIPE_PRICE_XMP_2
  2. Create $24 product → STRIPE_PRICE_XMP_24
  3. Deploy api/create-payment-intent.js
  4. Update xmultiplayer.html triggerStripe() to use real backend
Priority 5 — Arkade QR Codes
  1. Create Arkade account + connect node at arkade.money
  2. Create products for $85.21, $950, $1,950, $2 — copy deep links
  3. Regenerate QR SVGs using Python script in infraforlightning.md §3a
  4. Wire arkadeBtn in pay.js to your Arkade product URL
reservations.md
Manual log until webhooks are live. Open raw .md ↗
NY Nodes in The Sky Lightning $1,950 · Card $2,000

Strictly limited capacity · premier venue

Stripe: https://buy.stripe.com/7sY8wPaLY8r1drMgAb43S0e LNURL: LNURL1DP68GURN8GHJ7MRWW4EXCTNPWF4KZER99EEKSTMVDE6HYMP0XF3RGDE4XEJNWVNRXQCXVWFNVDNX2V33XSCRQDE5X33NJWFCXV6S7K3LKJ
Raleigh Nodes by the Rye Lightning $950 · Card $1,000 · July 21

12 seats total · downtown Raleigh · Umbrel Pro included

Stripe: https://buy.stripe.com/eVq3cvbQ2az987s5Vx43S0f
Auto-Sync Once Live
  1. Stripe checkout.session.completed → api/stripe-webhook.js → Supabase
  2. Lightning confirmed via Strike webhook → api/strike-webhook.js → Resend email
  3. Order form submitted → api/send-confirmation.js → Resend summary to customer + jim@highermark.xyz
infraforlightning.md
Lightning infrastructure, QR generation, and Arkade checkout. Open raw .md ↗
Overview
Card path
$110 · Stripe · standard ship
Lightning path
$85.21 · Arkade + node · ~1wk faster
Components needed
  1. Lightning node — LND, CLN, or managed (Voltage, Greenlight). One-click on Umbrel/Start9.
  2. LNURL / Lightning Address — LNbits LNURLp extension or BTCPay LNURL. Serves pay@highermark.xyz
  3. Invoice API — LNbits API or BTCPay Greenfield for minting invoices
  4. Arkade — consumer-facing Lightning checkout. Wire arkadeBtn in pay.js to your Arkade product URL
Generate static QR SVGs (offline)
pip install qrcode python3 - <<'PY' import qrcode, qrcode.image.svg as svg amounts = ["0.01","1","10","100","230","850","2000","3500","5000"] for a in amounts: data = f"lightning:pay@highermark.xyz?amount={a}&label=highermark-founder" qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_M) qr.add_data(data); qr.make(fit=True) img = qr.make_image(image_factory=svg.SvgPathImage) img.save(f"assets/qr/qr_{a.replace('.','_')}.svg") PY
btcpayserver.md
Configure BTCPayServer for the shout box (tips + messages on the Lightning view). Open raw .md ↗
Setup Steps
  1. Stand up BTCPay: Umbrel/Start9 one-click app, or LunaNode VPS + docker-compose. Domain: pay.highermark.xyz
  2. Create store → connect on-chain wallet (xpub from hardware wallet) + Lightning node
  3. Store → Apps → Create app → Point of Sale · item: "Shout/Tip" · price: custom · enable comment field (LNURL commentAllowed)
  4. Account → API Keys → generate key with btcpay.store.canviewinvoices permission → add to Infisical as BTCPAY_API_KEY
  5. Store → Webhooks → Add → URL: https://highermark.xyz/api/btcpay/webhook · event: InvoiceSettled
Frontend wiring

Shout box lives in index.html (.shout inside Lightning modal) driven by rotateShout() in assets/js/pay.js. Replace hard-coded shouts[] array with loadShouts() that fetches from /api/shouts (your backend proxies BTCPay Greenfield API).

cerebrasapi.md
Cerebras Cloud — ultra-fast LLM inference for Curtana. Open raw .md ↗
Credentials & Setup
  1. Sign up at api.cerebras.ai
  2. Add to Infisical: CEREBRAS_API_KEY=csk-xxx and CEREBRAS_BASE_URL=https://api.cerebras.ai/v1
  3. Create api/cerebras-chat.js proxy endpoint
  4. Update highermark-ai.html — replace simulateStream() with fetch('/api/cerebras-chat', {...})
Models
llama3.1-8b~$0.10/1M tokens · fast
llama3.1-70b~$0.60/1M tokens · capable
avg Discord interaction~$0.00005 at 8b
Architecture — highermark AI
OpenRouter + Stripe credit wallet + WorkOS auth. Open raw .md ↗
Stack
Auth
WorkOS (SSO, magic link)
Payments
Stripe checkout + webhooks
LLM router
OpenRouter API
Fast inference
Cerebras Cloud (primary)
Frontend
Static HTML/JS
Backend
Vercel / Railway serverless
Credit System

1 credit = $0.01 USD. Users buy credits via Stripe checkout, credits deducted per token on model use.

Fast tier (Cerebras 8b): 0.001 credits/1k tokens
Balanced (GPT-4o-mini): 0.015 credits/1k tokens
Capable (Claude 3.5): 0.30 credits/1k tokens
Free tier: 50 credits ($0.50) on signup
Roadmap
highermark.xyz — stages and milestones. Open raw .md ↗
The two bots

Curtana is the AI agent — connects to an LLM you provide (OpenAI, Anthropic, Mistral, Groq, …) and plugs into OpenClaw / Hermes agent flows.

Bard is the music bot. Joins voice channels, queues, skips, loops. Two years of flawless uptime.

Status Table
✅ Now
Bard 2yrs flawless · OpenClaw verified
🟣 v1
Curtana + Bard plug-and-run · dashboard · BYO-LLM · on-device data
⬜ v1.x
First-class OpenClaw/Hermes · multi-LLM switching
⬜ v2
Local on-device AI (small models on chip)
⬜ Suite
Round 1.28" LCD variant · USB adapters · more