Browser client · for the LUCY hub

Lucy gets a face.

LUCY-ui is the hub's web client. A face that thinks while Lucy thinks and asks when she needs you, her words streaming in as she says them, and every approval card answered in place. It speaks the hub's own event stream, nothing invented.

Vue 3 + TypeScript No hub changes needed No telemetry MIT licensed
face  (°-°)  thinking…

you › play lonely at the top by asake

step  music.find   1 track: Lonely At The Top — Asake

card  Play what music.find found on your default speaker?
      [Allow this time] [Allow for this conversation] [Deny]

lucy  Playing Lonely At The Top by Asake on Study PC.
face  (^-^)  done
The face follows the conversationA pure function of the stream. No component tells it what to feel.
Nothing said twiceStreaming text retires into the durable transcript item it becomes.
Cards answered in placeAllow once, for the conversation, for the profile, or always. Deny with a reason.
The hub stays the authorityThe client renders; every yes is re-checked by the hub's own gate.

The face

Twelve moods, one rule: show what the conversation is doing.

Asleep until you sign in. Attentive while you type. Thinking while a turn runs, working through results in a second gait, speaking while text streams. A warning look when a card needs you, success and failure when a turn ends, and a lost look when the connection drops.

Alive, not busy

Blinks, eyes that follow your cursor, and idle motion come from the face itself; the moods come from the stream. The two never fight.

Reduced motion respected

The face honours your system setting, and every mood change is also spoken to assistive technology as a sentence.

Swappable

The face sits behind a one-method driver. The art is Agent Robot Avatar by CX ArtLab, MIT licensed; another face is a second driver, not a rewrite.

What you see

The whole conversation, not just the words.

01

The transcript, live

Messages, each plan step with its note and timing, errors in their own voice, and text arriving as Lucy says it. Anything the client has no view for is shown generically, never dropped.

02

Approval cards

The hub's own question, the permission, the exact calls. A standing yes can be limited to the values the card names: always, but only for this repository.

03

The window meter

How full the context window is, with the same numbers the hub acts on, and a note when older turns are read as a summary.

Headed mode

Watch another program talk to Lucy.

A coding agent can drive a conversation from a terminal while you watch it in the browser. Sessions it starts are badged, their messages are labelled, and Follow switches your screen to whatever is live, unless you are typing or deciding a card.

node scripts/headed.mjs new "refactor the parser"
node scripts/headed.mjs say ses_0192… "run the tests and tell me what breaks"

When Lucy parks on an approval mid-task, the terminal is told the card is waiting in the UI, and the answer stays yours.

Run it

Three commands against a running hub.

  1. Have the LUCY hub running, on port 8000 or wherever LUCY_URL says.
    git clone https://github.com/tochi-mba/LUCY-ui && cd LUCY-ui && npm install
  2. Start the client. It proxies the hub's paths, so the hub needs no CORS policy.
    npm run dev
  3. Sign in without a password: the page shows a code, and a terminal already signed in approves it.
    lucy approve ABCD-EFGH

No hub nearby? npm run dev:fake serves the same client against a scripted hub with a music card to approve, a failing turn, and a self-approving sign-in.

Safety

A client that renders, and nothing more.

Tokens stay in the tab

The sign-in lives in this tab's session storage, never a URL or a log. The chip counts its fifteen minutes down and signing in again keeps the page exactly as it was.

Lucy's words are untrusted

Markdown renders with raw HTML escaped and unsafe link schemes refused; every link opens in a new tab that carries no opener.

The card shows the hub's question

What you approve is the hub's description of the call, never a sentence a model composed, and the grant is re-checked by the hub before anything runs.