This is a submission for the Presage SmartSpectra SDK Challenge.
What I Built
Tidal Loom turns natural chest movement into layered ribbons of ink.
Choose terracotta, sage or ocean, sit comfortably, and let a small canvas respond to you. There is no target breathing rate, score or assessment. The interaction is simply movement becoming a mark.
A labelled illustration mode lets anyone explore the artwork before choosing camera processing. Live mode uses SmartSpectra’s chest-breathing trace. An artwork-only recorder can export a short video without including camera images or audio.
Demo
Watch the 51-second live SmartSpectra demonstration. Natural chest movement controls the ribbons; the recording includes only the artwork and its live signal label.
Try the illustration in your browser. No account or camera is needed for that mode. To run it locally, clone the repository, run node preview.mjs and open http://127.0.0.1:52106.
For live mode, follow the README’s desktop setup: npm ci, npm run build:live, then npm run start:live. Use your own SmartSpectra API key, read the data notice, give consent and choose Start with my camera. The app does not require its own account. Place your face and upper chest in view, under steady lighting, and breathe naturally.
Code
Source and setup instructions on GitHub
The app uses Electron, Canvas 2D and SmartSpectra 3.4.0. Eight automated tests cover the signal’s validation/freshness gates and the sensor lifecycle, including stopping while camera permission is still pending.
How It Responds to Human Signals
The SDK requests MetricType.CHEST_BREATHING. The app decodes breathing.upperTrace, normalizes a short rolling window and smooths the resulting value. That value changes the ribbons’ amplitude, making the composition open and narrow with chest movement.
When validation fails or the data becomes stale, live animation pauses. It requires fresh valid samples to resume. Late callbacks from an ended session are ignored. Synthetic illustration mode stays explicitly labelled, including in exported footage.
Prize Categories
Most Creative or Delightful Use of Human Signals. Tidal Loom uses the signal as an art material: a direct, visible interaction without turning it into a performance target.
Consent and Data Handling
Camera mode is for adults aged 18 or older and requires an explicit consent checkbox and Start. Stop clears the local motion window and ends capture. Hiding or closing the app also ends capture.
Camera images remain on the device. Tidal Loom holds at most 180 movement samples in memory and does not maintain an application database or add analytics.
Optional SDK telemetry and accumulated output are disabled. The SmartSpectra SDK privacy policy nevertheless describes automatic transmission of derived measurements to Presage and Anthropic for Insights; that processing cannot currently be disabled. Authentication and usage records also remain. Tidal Loom does not add a prompt or display the resulting Insights.
Presage describes retaining Insights while the developer account is active and normally deleting them within 60 days after account closure; other records have separate retention periods. Stopping the app clears local samples, not server records. The linked SDK policy explains deletion requests and the full retention schedule.
Recording is optional. It captures only the artwork and signal-source label, with no camera frames, audio or API key. The video stays in memory until replaced or the app closes, unless explicitly downloaded. The recorder uploads nothing; downloaded files can be deleted locally.

Top comments (0)