cloud.pieeg.com·Web Bluetooth · Web Serial · WebSocket · WebRTC

The Browser-Native BCI Operating System

Connect 8 to 48 channels over Web Bluetooth or Web Serial directly into a Chromium tab. Packet decoding, Hampel despiking, Butterworth IIR filtering, Worker FFT, 3D head topography, a 15 Hz programmable JS lab, and 35+ neural experiences execute client-side. No drivers, no account required.

Web Bluetooth (BLE) Web Serial (921,600 baud) 8 / 16 / 32 / 48 ch · 250-500 Hz WebRTC P2P Local Bridge (OSC) Client-side by default
https://cloud.pieeg.com/dashboard
250 Hz · 48,200 samples
Fp115.2 µV
Fp215.2 µV
C315.2 µV
O115.2 µV
Client-Side Hot Path
IngestuseRef ring (0 GC)
React state2 Hz throttled
Spectrum256-pt radix-2 Worker
Live Lab15 Hz JS sandbox
Local BridgeWebRTC DTLS → OSC
α Alpha (8-13 Hz)0.42
β Beta (13-30 Hz)0.24
Simulated 4s windowInspect path

[01 · CLOUD ARCHITECTURE]

Trace every surface in the browser tab

Pick a Cloud subsystem to inspect its signal inputs, client-side execution path, and live output format. Hover any specification row to highlight its nodes on the diagram.

Highlight
Data path through PiEEG Cloud

Live output preview

Values in the live panel are simulated to illustrate the runtime contract of each Cloud surface.

[02 · SESSION LOBBY & TRANSPORTS]

Nine hardware & lab sources. Zero drivers.

On load, cloud.pieeg.com/lobby probes browser Web Bluetooth and Web Serial readiness, remembers authorized USB serial ports for one-click reconnect, and adapts the 3D topomap montage to your board automatically.

Open Live Lobby
Web Bluetooth

IronBCI

1 × ADS1299

8-ch · 250 Hz · 24-bit

Standalone 8-channel wireless wearable for scalp EEG, EOG, EMG, and ECG.

ble:ironbci
Web Bluetooth

IronBCI-16

2 × ADS1299

16-ch · 250 Hz · 24-bit

Dual-chip 16-channel BLE acquisition for full 10-20 scalp montages.

ble:ironbci16
Web Bluetooth

PiEEG XR

ADS1299 + STM32WB

8-ch · 250 Hz · Face Mask

10 dry Ag/AgCl pads in a VR facial interface. Auto-loads the 3D face montage.

ble:ironbci (PiEEG_XR)
Web Bluetooth

PiEEG XR-16

2 × ADS1299

16-ch · 250 Hz · Face + Occipital

Combines facial EMG/EOG mask pads with an occipital visual-cortex cluster.

ble:ironbci16
Web Bluetooth

Octopus 16

2 × ADS131M08

16-ch · 250 Hz · ESP32-S3

Coin-sized spring-loaded pogo-pin array. Flash firmware in-browser, pair over BLE.

ble:octopus16
Web Serial (921.6k)

Kraken-48

6 × ADS131M08

48-ch · 250 Hz · 3 × Octopus

Aggregates three wireless Octopus-16 nodes over a single XIAO ESP32-S3 USB receiver.

serial:kraken48
Web Bluetooth

Aura VR

109-byte BLE frames

8-ch sEMG · 6-axis IMU

Wrist/palm sEMG plus gravity-compensated 6-axis IMU with live 3D hand kinematics.

ble:auravr
Web Serial (921.6k)

IronBCI-32

4 × AD7771 + STM32H7

32-ch · 500 Hz · High-Density

32-channel wet-electrode research rig speaking the FreeEEG wire protocol over USB.

serial:ironbci32
Web Serial + BLE

OctoBridge

ATmega328P USB + BLE

Sensors & Actuators · UNO

Pairs Octopus-16 EEG with room sensors, relays, servos, and LCD in one classroom tab.

octobridge.pieeg.com

No Hardware? Run Synthetic or Custom Mock

Launch instant in-browser streams (demo:8, demo:16, demo:32, demo:auravr) or open Mock Studio (/mock) to stack scripted blinks, bands, 60 Hz mains, and EMG bursts.

Raspberry Pi & Jetson SPI via WebSocket

Using PiEEG-8, PiEEG-16, or JNEEG on GPIO SPI? Run pieeg-server locally (with optional pieeg-core Rust DSP speedup) and point the Cloud lobby at ws://raspberrypi.local:1616.

Join a Live Relay or Browse Cloud Library

Paste a session code or open /live/:relayId to watch a shared experiment in real time with live viewer count, or explore public datasets in /library with zero login.

[03 · LIVE LAB (BIO-PEN) · CLOUD.PIEEG.COM/LAB]

Write multi-stage DSP & classifiers at 15 Hz. Share in one URL.

Live Lab runs a reactive chain of JavaScript cells inside a dedicated Web Worker against the live 2-second 250 Hz ring buffer. If no board is paired when you open a shared /lab/:penId link, it boots directly on the 8-channel simulated stream so every pipeline runs immediately.

Live 2-Class BCI Classifier (Shrinkage-LDA + LORO-CV)15 Hz Worker · 450 ms debounce
// Stage 1: Spatial Common Average Reference & Detrend
const clean = car(win);
const ch0 = detrend(clean[0] || []);
check(Math.abs(mean(ch0)) < 1e-3, "DC offset removed (mean ~ 0 uV)");
return ch0; // → auto-plots time-domain waveform trace
// Stage 2: Fit Ledoit-Wolf Shrinkage-LDA & Audit Trial-Grouped LORO-CV
const model = lda(dataset.X, dataset.y, 0.25);
const cv = loroCV(dataset.X, dataset.y, dataset.reps, "lda");
const x = features(frame);
check(cv.balancedAccuracy >= 0.6, "Held-out LORO-CV balanced accuracy >= 60%");
return {
  label: model.predict(x),
  probs: model.predictProba(x),
  loroBalancedAccuracy: cv.balancedAccuracy,
}; // → auto-plots live class probability bars + LORO badge
Freeze 2s Window: deterministic buffer lock for debuggingCtrl+S → mints /lab/:id permalink
Decoder Arena & Leakage Audit

Record 2-second labelled repetitions (rest, active, or custom classes) or click Seed Demo Epochs. The Arena benchmarks your pipeline against reference Shrinkage-LDA and L2 Logistic Regression, showing both trial-grouped LORO-CV balanced accuracy and naive sample-split k-fold accuracy side-by-side so temporal autocorrelation leakage is exposed.

Save, Fork & Guest Edit Tokens

Save any pipeline via cloud permalinks (/lab/:id), self-contained base64 URLs (/lab?pen=…), or portable .biopen.json bundles. Guest creators receive a local SHA-256 X-Pen-Token to update their pen without an account; visitors who edit and save mint a forked /lab/:newId.

Pre-Bound Worker Primitives

Spatial & Time
car(win)bipolar(chA, chB)detrend(s)zscore(s)rms(s)lineLength(s)slopeSignChanges(s)
Spectral
fft(s)psd(s, fs, maxHz)bandpower(s, [lo, hi])
Stats & Classifiers
cohensD(a, b)features(frame)lda(X, y, shrinkage)logreg(X, y)loroCV(X, y, reps)crossValScore(X, y, k)check(cond, msg)

Return-Driven Auto-Visualizer

number | { value, unit }Monospace readout + 120-tick rolling sparkline
number[] (> 16 items)Time-domain waveform trace with zero-line & µV peak
number[] (<= 16) | { labels, values }Color-coded channel or feature bar chart
{ freqs, power, peakHz }Power spectrum curve with 8-12 Hz alpha band marked
{ matrix, labels }2D covariance or LORO-CV confusion heatmap
{ label, probs, loroBalancedAccuracy }Live BCI decoder probability bars + LORO badge

[04 · LOCAL BRIDGE & NEURAL STREAM · WEBRTC P2P → OSC]

One TouchDesigner OSC In CHOP receives the whole headset.

Browser tabs cannot send raw UDP packets directly to local creative-coding tools. PiEEG Local Bridge (~5 MB standalone Rust/Tokio binary) pairs with your browser tab via a 6-character share code and opens a direct, DTLS-encrypted WebRTC P2P data channel over loopback or LAN. Zero signal frames route through the cloud.

Neural Stream OSC Address Tree (Default Prefix: /pieeg)
10 / 20 / 30 / 60 Hz
Cognitive state
/pieeg/focus, /pieeg/relax, /pieeg/engagement, /pieeg/dominant
0-1 session-relative indices; dominant in Hz
Band powers (avg)
/pieeg/delta, /pieeg/theta, /pieeg/alpha, /pieeg/beta, /pieeg/gamma
Relative power (band / total), 0-1
Events
/pieeg/blink
Momentary 0/1 pulse on detected frontal EOG blink
Channel levels
/pieeg/ch1/level … /pieeg/chN/level
Per-channel activity envelope (saturating RMS)
Per-channel bands
/pieeg/ch1/alpha … /pieeg/chN/gamma
δ θ α β γ for every selected channel (up to 128 params)

How P2P Pairing Works

  1. 1Run pieeg-local-bridge on Windows, macOS, or Linux. It opens 127.0.0.1:47800 and shows a 6-character share code.
  2. 2In cloud.pieeg.com, open Local Bridge, enter the 6-character code, and complete the one-time HTTPS SDP/ICE handshake.
  3. 3Flip Neural Stream to Streaming (or use useLocalBridge().send() from any experience or Live Lab stage).

Built-In Target Presets & Diagnostics

Includes one-click presets for TouchDesigner (port 7000), Max/MSP & Ableton, VRChat Avatars (port 9000), and custom OSC roots, plus mDNS (_osc._udp) auto-discovery and a copyable diagnostics report that detects background tab timer throttling.

[35+ BROWSER-NATIVE EXPERIENCES]

Browser-first ML. Explainable weights. Honest cross-validation.

Every experience in cloud.pieeg.com/experiences is lazy-loaded into its own JS chunk, reads ring buffers via refs to preserve 60 fps, explains its protocol and sensor limits up front, and reports trial-grouped cross-validation rather than inflated sample splits.

View All 35+ Experiences
BCI / Connectome

Mushroom Body Decoder

Live EEG band powers drive projection-neuron inputs of the Drosophila mushroom body (~2,000 Kenyon cells, 5% sparse coding, trained KC-to-MBON readout).

Launch in Cloud
sEMG / LORO-CV

Silent Speech Interface

Placement-agnostic subvocal sEMG word decoder. Epoched on muscle onset, fit with per-word L2 + group-lasso logistic classifiers and LORO-CV readiness.

Launch in Cloud
fEMG / Sparsity

Face Trainer v2

Common-Average Reference + 40-D time/spectral features across 8 channels. Group-lasso exposes per-electrode importance bars for every expression.

Launch in Cloud
16-ch Biometric

octoAuth

Octopus-16 neck sEMG challenge-response demo: verifies unpredictable isometric action liveness and person-specific sternocleidomastoid spatial maps.

Launch in Cloud
EOG / Liveness

octoCaptcha

Issues a random blink-count nonce after a GO cue and verifies corneal-retinal Fp1/Fp2 morphology, bilateral coherence, and human inter-blink jitter.

Launch in Cloud
Interactive DSP Course

Signal Lab

Three-world DSP curriculum (Time Domain, Cleaning, Frequency Domain) where every lesson runs a live interactive sandbox on your real EEG stream.

Launch in Cloud
Pose + Bio

BioPose Recorder

Aligns webcam body-stick keypoints alongside live multichannel biosignal traces for review, timeline marking, and JSON/CSV export (camera pixels never stored).

Launch in Cloud
Multimodal Dataset

Rorschach Recorder & Dataset Labs

Guided trial protocols (Rorschach Recorder, Aura Dataset Lab) that package native-rate EEG/sEMG, trial tables, and multimodal Excel/CSV archives.

Launch in Cloud

[05 · DATA ARCHITECTURE & DEPLOYMENT MODES]

What stays in your tab, and the three opt-in paths that touch a server

PiEEG Cloud is a static web application. Acquisition, filtering, spike rejection, spectral analysis, on-device classifiers, and local CSV recording run on your machine with no background upload.

Default: Local to Your Device

Web Bluetooth and Web Serial streams, DSP, FFT, 3D head maps, trained pattern weights (in localStorage), Local Bridge WebRTC P2P frames, and local CSV downloads never talk to PiEEG servers.

Opt-In 1Live Relay

When you start a relay, frames pass through our Fly.io (London) relay in transit to whoever holds your /live/:relayId link and are immediately discarded. Relay signal data is not recorded or logged.

Opt-In 2Session & Bio-Pen Sharing

Recordings stay on your disk until you explicitly upload one to Cloud Library (DigitalOcean Spaces, London) or save a /lab/:id Bio-Pen. Visibility (private, unlisted, public), embargo date, and permanent deletion are under your control.

Opt-In 3Cloud OTP Sign-In

Signing in to manage uploaded sessions uses your email and a 6-digit one-time code (MongoDB, Dublin). No passwords are stored. This is separate from the local 6-digit --auth code verified by a self-hosted pieeg-server.

Browser-Native Cloud vs Self-Hosted PiEEG Server
Same React 19 + Vite 6 dashboard UI · MIT Licensed
LayerPiEEG Cloud (cloud.pieeg.com)Self-Hosted (pieeg-server)
InstallationNone: open cloud.pieeg.com in Chrome, Edge, Brave, or Operapip install pieeg-server (Python 3.10+ on Pi, Jetson, Linux, macOS, Windows)
Hardware InputIronBCI 8/16, PiEEG XR 8/16, Octopus-16, Aura VR (Web Bluetooth); IronBCI-32, Kraken-48 (Web Serial)All BLE & USB Serial boards + Raspberry Pi / Jetson GPIO SPI shields (PiEEG-8, PiEEG-16, JNEEG)
DSP & FFTClient-side in the browser tab (Hampel, Butterworth IIR, 256-pt Worker FFT)Server-side Python or optional pieeg-core Rust wheel (~1057× faster bandpass)
Local App OutputWebRTC P2P to Local Bridge (5 MB Rust app) → UDP OSC for TouchDesigner, Max/MSP, VRChatNative Lab Streaming Layer (--lsl), VRChat UDP OSC (--osc), and HTTP webhooks
AI CopilotBuddy (buddy.pieeg.com): 100% in-tab, 10 read-only tools, BYO LLM key or local OllamaPiEEG Agent (pieeg-agent): LSL perception cascade, Jupyter notebook generator, MCP server

Open a tab and inspect the signal

Pair a board over Web Bluetooth or Web Serial, launch a synthetic stream in Mock Studio, or write a 15 Hz pipeline in Live Lab.