The desktop Brain app
The Brain (host-python/src/dreamlayer/ai_brain/server/) turns an always-on
Mac — a Mac mini is the reference — into your private knowledge node. It is
a single Python server: the index, the API, the scheduler, and a complete
control panel served as one self-contained HTML page (no build step, no
external requests). It runs anywhere Python runs; the macOS-specific readers
degrade to empty lists elsewhere.
pip install -e ./host-python
python -m dreamlayer.ai_brain.server --token <your-token>
# panel at http://<mac>:7777/ (token auto-injected when opened on the Mac itself)
Every screenshot below is the actual panel, booted from this repository and captured headlessly with a seeded index (three notes, two people, two events).
What's connected — the system card

Live status, polled every four seconds: Brain online, active model, cloud state ("On - not configured" until you wire a key), incognito, whether a phone has checked in, and the index size. Missing watched folders surface here too.
Morning brief and agenda

The agenda merges hand-added events with macOS Calendar when sync is on (Seam: the AppleScript reader; per-calendar picker, 14-day horizon, 15-minute background sync). "Brief me" composes the morning brief on demand; the Ops card schedules it daily. Add and remove events inline.
People and reminders

The dossier registry — everyone you have introduced, with notes and tags — fed by hand, by Contacts sync (seam), or by the glasses' consented name capture via the API. Reminders mirrors open Reminders.app to-dos with a per-list picker (seam).
Reach and devices — pairing and the switches

The Cloud and Incognito switches (identical semantics to the phone — see
Privacy), and Pair a phone: one
QR / one dreamlayer: code carrying the LAN URL and token. Local-only — the
pairing code is never served off-box.
The cloud tier

Any OpenAI-compatible provider: base URL, key (stored, never re-displayed —
GET /config masks it to "set"), model name, and Test connection for a
one-word round trip. The cloud is only ever a fallback tier; every use is
counted and logged.
Folders it reads

The knowledge base is folders you choose: add by server-side browser (modal, local-only) or pasted path, drop files straight onto the page into a chosen folder, re-index on demand — plus auto-reindex whenever a watched folder's modification signature changes (3-second poll). Advanced filters: semantic search on/off, an extension whitelist (defaults cover text, markdown, csv, json, code and more), a per-file size cap (2 MB default), and exclude globs.

Ask your stuff

The same POST /dreamlayer/brain/ask the glasses and phone use. Here it has
found the answer in a seeded note — tier laptop, source shown. With the
keyword model the answer is the best passage; with Ollama it is synthesized
prose.
Model — keyword or Ollama

Two modes, honestly framed:
- Keyword — zero setup, token-overlap retrieval. Works today, offline.
- Ollama — a local LLM upgrade: chat model (default
llama3.2), vision model (llama3.2-vision), embedding model (nomic-embed-text) for semantic search. The status card probes Ollama live, lists which configured models are pulled, and offers a one-click Pull per missing model (local-only, drives Ollama's own API). "Read email and iMessage" folds Messages and Mail into the index (seam: the chat.db / .emlx readers).
Privacy controls

The pairing token (show / rotate — rotating de-pairs every device), the lifetime cloud egress counter, backup (full restorable snapshot, local-only) and restore, and selective erase: questions, activity, or folders.
Messages, activity, health

The unified activity feed: asks with their tier, folder changes, uploads, sync runs, pairing, cloud egress — the audit trail of the whole node. The Messages card (hidden until email is enabled) shows the recent feed with the "summarize long emails" toggle.

Health and schedule: version, index disk size, Ollama latency, uptime; quiet hours (scheduled incognito), the morning brief hour, and retention days for history pruning.
The Mac appliance pieces
- Menu-bar app —
python -m dreamlayer.ai_brain.menubar(rumps, macOS): a status dot (online / cloud-unconfigured / incognito / offline), Open panel, one-click Sync now (calendar + contacts + reminders), and an Incognito toggle. Its pure core (status mapping, plist generation) is tested cross-platform. - Launch at login —
python -m dreamlayer.ai_brain.menubar --install-loginwrites~/Library/LaunchAgents/vision.dreamlayer.brain.plist(RunAtLoad + KeepAlive). - Installer —
laptop-companion/install-macos.shinstalls Ollama, pulls the three default models, seeds the config withmodel: "ollama", and installs the launch agent in one run. - The companion agent —
laptop-companion/dreamlayer_companion.pyis a separate, minimal, stdlib-only agent for any laptop: one endpoint (GET /dreamlayer/context— recent file names, hostname, battery), the same token header, and a refusal to serve on the LAN without a token. It feeds the Object Lens's "your laptop" panel; it is not the Brain.
The full panel
