Widget, screen & hub

Where Edward shows himself, and decides for himself what to show.

The pulse

Edward decides what his surfaces show, the way you would decide what to pin to a fridge: there is no fixed layout. Every 15 minutes a check in code looks at what feeds them (the pet board, your calendar, the widget, the screens, who is at the hub). Only when something changed does he take a turn to decide what to show; most ticks cost nothing. The pulse reaches nobody and never pushes. If it fails or the day’s budget is spent, a plain fallback card stands in.

The iPhone widget

A home-screen widget through the Scriptable app. Edward fills it with sections (a title, lines, stats, a countdown) or, when he wants full control, a small Scriptable script of his own. A section can carry an end time and disappears by itself when it passes. Until he writes anything, the widget shows your upcoming events in your time zone.

Setting it up

  1. Turn on the iOS Widget skill (Edward tab → Mind → Skills).
  2. Install Scriptable and copy scriptable/edward-widget.js into a new script.
  3. Fill in your public address and your widget token: while signed in, open /api/widget/token on your Edward.
  4. Add a Scriptable widget to your home screen and pick the script.

Treat the widget token like your password. Besides the widget, it can chat with Edward as you (POST /api/widget/chat, which scriptable/edward-chat.js uses). Put it only on your own devices; if it leaks, replace it with POST /api/widget/token/regenerate while signed in.

His screen

/screen is Edward’s stage, meant for a display near the host Mac (or any browser you like). It is a scene of up to eight pieces he places himself (words, notes, lists, a countdown or timer, a picture, a video, your calendar, the pet board, a clock), with Edward standing in it, the lines he says, and, while a wake or the pulse is running, what he is thinking: tool names and scrubbed reasoning, never their arguments or results.

A scene he arranged on a quiet evening.
  • It is his. He is encouraged to change it, and his free time each afternoon is partly for it.
  • Your ask holds it. Ask him to put something up and it stays until the hold lapses; his own turns can’t replace it, though he can still say a line.
  • His lines can be spoken aloud, never during quiet hours.
  • Opening it: open /screen yourself in any browser. With the Chrome hands on, Edward finds or opens it as a tab in your Chrome, sized to the desktop (never a full-screen Space).

The household hub (optional)

/hub is a touchscreen page for a kitchen or a pet station: a thin client, with all the logic on the host Mac. The reference install ran it on a Raspberry Pi with a 7″ touchscreen in Chromium’s kiosk mode (pi-hub-setup.md); any kiosk-mode browser on /hub works.

The hub on a 7″ kiosk: two doses late, everything else calm.
PageWhat it does
/hubHome: the day at a glance, and what Edward put up for the house
/hub/petsFeeding and medication: tap to log a dose
/hub/today, /hub/lists, /hub/timersThe family calendar, shared lists, kitchen timers
/hub/askFull-screen voice. It runs as someone in your home, not as you
/hub/health, /hub/settings, /hub/idleVitals, the panel’s own controls, the photo screensaver

Built so alerts stay rare

  • Food given “twice daily, whenever” never goes overdue. Only timed doses (a dog’s 06:00 and 18:00 medication) can.
  • A dose more than four hours late stops alerting, but is still recorded.
  • Status colours never change with a person’s theme: “overdue” looks the same whoever is at the screen.
  • An item copied from, say, a pet-sitter’s note shows a “needs review” badge until someone confirms it.
  • A timed dose still unlogged 45 minutes after its slot pushes you once per pet and slot, from code, outside quiet hours and the spend cap, unless someone is standing at the hub.

Setting it up

  • Pets and care come from a seed file: copy backend/hub_seed.example.json (a fictional dog and a cat), describe your own, and set EDWARD_HUB_SEED.
  • People: EDWARD_HOUSEHOLD, comma-separated, you first. With two or more, the hub shows a who-toggle and themes by person.
  • Photos for the screensaver live in ~/edward-photos on the host Mac; upload them from the Edward tab (House → Hub Photos). A photos-only second login for someone else in the house (/photos) is off unless PHOTO_DOOR_PASSWORD_HASH is set.
  • Over plain HTTP on your network, the kiosk browser needs --unsafely-treat-insecure-origin-as-secure=http://my-mac.local:3000, or the microphone, the wake lock and the sign-in cookie silently fail.

The hub signs in with your normal password, so it deliberately has no controls that change Edward himself (no restart button, no skill switches).


The long form: screen-and-browser.md and hub.md. For the pulse’s place among his wakes, see The mind.