Monorepo for Aesthetic.Computer aesthetic.computer

native: Aesel as a piece — Claude and hosted engines, tab runs the piece; new flashes boot into it master

pieces/aesel.mjs draws the desktop Aesel session on the framebuffer: the transcript, a pink prompt, approvals answered with y/a/n, and the piece the agent writes at /pieces/<slug>.mjs, which tab runs on this machine. Escape leaves the conversation running; `aesel` reattaches. Two engines, one interface. lib/aesel-bridge.mjs is Easel's claude-server.mjs with the process removed: it translates Claude Code's headless stream-json over system.pty2. lib/aesel-ac.mjs is ac-server.mjs without Node: the hosted engine at /api/easel-inference, the write_piece loop on the device, the server-sent-event stream read once a frame. Both are pure and covered by node --test. Runtime: a raw line mode for the PTY (pty_spawn_ex — cfmakeraw on the slave, whole lines out via system.pty2.lines, pty_write loops so a long JSON line lands intact) and an { out, timeout } option on fetchPost that streams curl unbuffered into a caller-owned file kept on completion, since the 8 KB result slot would truncate a stream. flash-mac.sh's default boot piece moves from notepat to aesel; devices already flashed keep the piece their /mnt/config.json names.