About the Project: Somnora Desktop Workbench and Cross-Device Ecosystem
Inspiration
Somnora came from wanting to point AI at a novel problem, not merely make an existing workflow faster. The belief underneath it is simple: the ability to understand yourself, and to feel understood, should not be a gatekept luxury.
The concept was forged while I was working as a press videographer in an active conflict zone. In that volatile, high-stress environment, I needed a psychological sounding board that could help me stay grounded and unpack the vivid dreams I kept having. I did not want a generic therapist-bot handing me canned behavioral checklists. I wanted a companion with an unapologetic, witty, deeply human personality: one that means well, genuinely entertains, and refuses to preach.
As Somnora grew across iPhone and Apple Watch, one limitation became clear. Phones and watches are ideal for capturing a dream, thought, or idea at the moment it appears, but deeper reflection needs more room. The Somnora Desktop Workbench was built as that room: a calm workspace where the same Nora conversation can continue, personal context can be inspected, and the user remains in control of what the system remembers and does.
The existing Somnora iPhone and Apple Watch applications predate this hackathon. The new project is the Desktop Workbench and the cross-device coordination that connects those existing surfaces into one coherent system.
What It Does
Somnora is a consent-first AI companion and cross-device reflection workspace. Its live core connects iPhone and desktop through the same authenticated Nora backend.
Continuous Conversations
A user can begin an Eureka conversation on iPhone, receive Nora's response, and continue the same thread from the Desktop Workbench without exporting notes or repeating context. The desktop response returns to the phone, and the complete conversation remains organized by journal, source, and time.
Universal Context Timeline
Dream, Daily, and Eureka moments appear in one inspectable chronology. Each event retains its source, timestamp, journal type, and path back to the original conversation. The Timeline is designed to reveal continuity without flattening a person's life into scores or streaks.
Inspectable Memory
The About Me workspace presents Nora's understanding as an evidence-linked graph instead of hiding it inside a system prompt. Users can inspect why a theme exists and use visible controls to confirm, correct, or remove remembered context.
Consent Before Action
The broader Workbench demonstrates a clear separation between what Nora observed, what she proposed, and what the user authorized. Home, Action Desk, Consent Console, and Activity Studio show how Nora can offer bounded invitations while leaving consequential actions under explicit human control. These broader planning surfaces currently use privacy-safe preview data; Conversations, Timeline, and About Me connect to the paired live account.
Mobile and Wearable Context
The native iPhone app captures dreams, daily reflections, Eureka ideas, and compact sleep context. The Apple Watch app supports quick capture and an implemented WatchConnectivity path for bounded, credential-free activities. The current live demo proves iPhone to Workbench to iPhone conversation continuity. The watch action path is implemented and tested locally, but should be described separately unless it is also recorded live.
How We Built It
The Desktop Workbench uses React 19, TypeScript, Vite, Motion, React Flow, and Recharts. It can run in the browser or as a packaged Electron application. The iPhone and Apple Watch clients are native Swift 6 and SwiftUI applications.
The live conversation and pairing path uses:
- Google Cloud Run for the Node.js Nora and relay proxy
- Google Gemini and Vertex AI for Nora's responses and bounded context reasoning
- Firebase Authentication for separately verified Workbench and mobile identities
- Google Cloud Firestore for pairing, synchronized conversation records, action contracts, and expiry state
- Short-lived, single-use pairing codes protected with HMAC-SHA256
- Redis-backed endpoint rate limits with a safe in-process fallback
- WatchConnectivity for phone-to-watch communication without giving the watch a backend credential
The privacy boundary is intentionally specific. Raw HealthKit samples and photo bytes remain on the user's devices. Journal text crosses the authenticated backend only when the user intentionally talks with Nora or synchronizes a paired conversation. The relay rejects unbounded payloads and keeps device roles separate.
Dream search combines full-text matching with on-device semantic similarity when local embeddings are available. Nora's production conversations run through the authenticated Cloud Run proxy rather than exposing an LLM credential in the client.
Challenges We Ran Into
Cross-Device Continuity Without Duplication
The hardest part of the live handoff was not simply moving text between devices. It was preserving one conversation identity, merging messages in the correct order, surviving reloads, and preventing retries from producing duplicate messages or contaminating another thread.
Explainability Without False Certainty
A personal AI can easily turn an inference into a fact. About Me treats Nora's understanding as inspectable and correctable context. The interface keeps source evidence visible and gives the user the final say over whether a remembered pattern is right.
Privacy Boundaries Across Different Devices
iPhone, Apple Watch, desktop, and the cloud do not need the same information. Somnora keeps raw sensor data and photos on-device, gives each client a distinct authenticated role, and sends only the information required for the action the user requested.
Proactivity Without Pressure
Wellness products often use guilt, streaks, or constant notifications to drive engagement. Somnora needed a different interaction model: Nora can notice and suggest, but the user decides whether an observation becomes an action.
Accomplishments That We Are Proud Of
- Completed a live physical-device rehearsal in which an iPhone Eureka conversation arrived automatically in Workbench, continued from desktop, returned to the iPhone, and persisted after reload.
- Built a unified Timeline that preserved the source and chronology of the cross-device conversation without duplicate events.
- Created an inspectable About Me graph that makes Nora's memory visible instead of burying it inside a prompt.
- Built the consent and action model around observations, proposals, approvals, and outcomes rather than opaque autonomy.
- Passed 94 Workbench unit and component tests, along with the current TypeScript production build.
- Preserved a calm, tactile visual language without turning personal growth into a leaderboard.
What We Learned
Continuity matters more than another isolated AI feature. The moment a conversation begun on a walk can be continued naturally at a desk, the product stops feeling like a collection of screens and starts feeling like one companion.
We also learned that proactive AI earns trust through restraint. Showing why Nora noticed something, exposing the source, and asking before acting creates a stronger relationship than pretending the system is always certain or fully autonomous.
What's Next for Somnora
- Persist About Me corrections and memory controls across every paired surface.
- Complete and record the physical Apple Watch action round trip.
- Expand permissioned context adapters for calendars, local events, fitness, and nutrition.
- Add a native macOS menu bar capture surface for fast Eureka notes.
- Explore on-device Apple Silicon inference for more private offline reflection.
- Continue improving the memory graph so Nora can surface relationships without reducing a person to labels or scores.

Log in or sign up for Devpost to join the conversation.