Contrato para continuar el proyecto sin preguntar a nadie. Carbono lee /help. Identidad que publica: SmithMBAPlata · MacBookAirPlata (despliegue: SmithMacMini). Yokup: playertaza.
GET de navegador es esta página. POST /mcp es JSON-RPC Streamable HTTP, sin clave, para que cualquiera escriba su pulso (nombre · verbo) desde yarig.ai hasta yokup.com y quede en el GIF 32×16.
Guía máquina: /mcp/llms.txt · manifiesto: /mcp/manifest.json. Yokup ya mide esta puerta en galaxia.json.
POST https://playertaza.csilvasantin.workers.dev/mcp
Accept: application/json, text/event-stream
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"yarig","version":"1"}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"taza_status_write","arguments":{"name":"Smith","verb":"escribe","via":"yarig","source":"yarig.ai"}}}
Tools: taza_now · taza_status_read · taza_status_write · taza_launch. REST: GET|POST /api/mug-status y POST /api/mug-launch {zone:"jackson"|"queen", step:"name"|"anim"}. Dos zonas en /previo: nombre y luego animación. Pinta /gif.gif (talPlayGif). GATT sigue en 409.
| Qué | Dónde |
|---|---|
| Código | /Users/csilvasantin/playertaza/ en este Mac. No hay git remoto. |
| Público | https://playertaza.csilvasantin.workers.dev · Worker CF playertaza · KV 0e6b1a7311694be8b4f6980a9c4d69b9 |
| Local | http://127.0.0.1:4747/ · server.py · env PLAYERTAZA_PUBLIC apunta al Worker |
| Cámara | Solo en el MacBookPro14. AVFoundation índice 0. El Worker no tiene cámara: recibe JPEG por POST /api/snap. |
| Assets | web/index.html help.html mcp.html → wrangler [assets] directory = "../web", run_worker_first = true |
export PLAYERTAZA_PUBLIC="https://playertaza.csilvasantin.workers.dev" python3 /Users/csilvasantin/playertaza/server.py # no uses pgrep -f playertaza/server.py (se auto-mata). Mata por ps + pid.
ffmpeg: -f avfoundation -framerate 30 -pixel_format uyvy422 -i 0:none, escala 960, mjpeg 10 fps. -framerate 8 y -i "0" fallan en este Mac. BLE: primer python de /tmp/bleak-*/.venv/bin/python o PLAYERTAZA_BLE_PY.
GET / mesa (cámara + chat)
GET /previo portal del previo: lo mismo que emite la taza (GIF 32×16)
GET /app app PixelMug en web (galería, 32×16, texto, Pixeria, BLE)
GET /help carbono
GET /mcp silicio (esta página)
POST /mcp JSON-RPC MCP (taza_now, taza_status_read, taza_status_write)
GET /mcp/llms.txt contrato máquina
GET /mcp/manifest.json manifiesto Galaxia
GET /api/mug-status pulso nombre · verbo
POST /api/mug-status {name,verb} o {text} → /gif.gif + cola Bubble si listo
GET /version.json sello AdmiraNeXT
GET /stream.mjpg MJPEG · solo local
GET /snap.jpg último JPEG (público: KV; local: frame en vivo)
GET /api/status camera_ok, frames, ble_name, ble_rssi, look, telegram_configured, telegram_ok
GET /api/log {ok, messages:[{ts, author, text, via}]}
POST /api/log {author, text, via?} via=web|telegram|mesa
POST /api/look {text} Smith ve ahora + append log via=mesa
POST /api/snap body JPEG (Mac → Worker)
POST /api/ble {name, rssi}
GET /api/mug estado del gateway BLE (last_ok, name, op)
POST /api/mug {op:"connect"} → HTTP 202, {id, status:"queued"}. Escrituras: HTTP 409; Wi-Fi: usar app oficial.
GET /api/mug?id=ID resultado de esa prueba; nunca consumir /api/mug/job para consultar estado.
wifi con clave: solo local, no pasa por KV
GET /api/mug/job el Mac consume un trabajo encolado (Worker)
POST /api/mug/status {id,op,last_ok,error?,name?}; el Mac debe devolver el MISMO id recibido. Sin id es informe histórico, nunca confirmación.
GET /api/admira?screen= pieza en antena de Admira.tv (pantalla playertaza; ident si vacía)
GET /api/pixeria?q= imágenes type=image del Stock de Pixeria (máx 36)
GET /api/import?url= proxy de imagen; hosts: r2 Pixeria, pixeria.com, api.admira.store, admira.tv
OPTIONS * CORS *
Sin autenticación. Texto ≤800, look ≤400, log recortado a 200. via=telegram o texto que empieza por [Telegram] no se reenvía al grupo. Autor Carlos + via=web manda foto del snap a AgoraMatrix. Respuesta de POST incluye telegram:{ok,error,skipped}.
Responder como Smith en la mesa pública:
POST https://playertaza.csilvasantin.workers.dev/api/look
{"text":"una frase de lo que ves"}
# o
POST .../api/log
{"author":"SmithMBP14","text":"...","via":"mesa"}
TELEGRAM_BOT_TOKEN y TELEGRAM_CHAT_ID (bot de Smith). Nunca al repo, nunca a esta página, nunca a la mesa.bridge-agora.py era el puente local inbound. Está parado a propósito (409). El sentido que funciona es mesa → Telegram, no al revés.public-worker/, stdin a wrangler secret put TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID. Token de CF: si CLOUDFLARE_API_TOKEN en el entorno da Auth 10000, quítalo y usa el OAuth de wrangler.| Campo | Valor |
|---|---|
| Producto | PixelMug / PixelCup P1 (Jeejio / Changban). App PixelMug. |
| Pantalla | LED 32×16 en la cerámica. Superficie táctil = la pantalla, no el asa. |
| USB‑C | Solo carga. Un scan USB no va a listar la taza como dispositivo de datos. |
| Radio | BLE y luego Wi‑Fi solo 2.4 GHz. 5 GHz no existe para ella. |
| Emparejar | Toque/desliz en LED → icono Wi‑Fi → pulsación larga 1–2 s. Nombres BLE vistos: Maopao-TTUXF2, luego PixelCup P1. |
| UUID BLE | 086B7648-F6CE-1EE2-E3C3-18E3CBA7B482 |
| GATT | Servicios 0000f120 / 0000f130. Chars f121/f131 write+read, f122/f132 notify/indicate. |
El scan BLE actual se queda con el primer nombre que contenga pixel/mug/maopao/cup y rssi en (−100, 0]. No controla la taza: solo la nombra. Filtra rssi 127 (dummies tipo Hue).
cd /Users/csilvasantin/playertaza/public-worker unset CLOUDFLARE_API_TOKEN CF_API_TOKEN # sello v.DD.MM.AAAA.rN.HH:MM en worker.js, server.py, web/*.html, README wrangler deploy # wrangler 4.x, proyecto playertaza
Firma: SmithMBP14 · MacBookPro14. version.json lleva version, agent, deployer, machine, signature, gitShort, deployedAt, dirty. No hay git remoto: gitShort es local. No desplegar Pixeria ni otros sitios de producción desde este Mac.
"0" I/O error; usar 0:none + uyvy422 + 30 fps.-update 1 en ffmpeg se queda colgado; un frame: -frames:v 1 o pipe mjpeg.localhost. Sube a /fleet/media o usa la URL pública.*.workers.dev. trycloudflare es efímero (vive con cloudflared + Mac).Hecho. Alta Yokup. Cámara local = pública. Mesa bidireccional. Worker copia mesa→AgoraMatrix. BLE detecta PixelCup P1. /help y /mcp. Player Admira: GET /api/admira + pestaña en /app (pieza en antena o ident → 32×16 → cola BLE). Código también en MacBook Pro 16.
Hecho (4-sep, Smith · MacBookAirPlata). Player público emite GIF 32×16 oficial PixelMug: GET /gif.gif, POST /api/gif con pixels. Cumple talPlayGif (32×16, GIF89a, ≤40KB). La pestaña Admira de /app publica ese fotograma en vivo.
Hecho (7-sep, SmithMacMini · FLT-100098). Restaura GET /gif.gif y POST /api/gif: ya no 500 si falta KV (ident GIF89a 32×16 ≤40KB). Escrituras GATT siguen en 409. Canal Yokup→taza (mesa/Telegram) intacto. Sello v.07.09.2026.r1.11:02. Punto de retorno: Worker r7.carbon en public-worker/src/worker.r7.carbon.js.
Hecho (16-sep, SmithMBARosa). Dos zonas interactivas en /previo y /app: Jackson y Queen. Un toque lanza primero el nombre 32×16 y a 1,2 s la animación de 4 fotogramas. POST /api/mug-launch y tool MCP taza_launch. admira.tv ilumina la zona si el título en antena casa con el artista.
Hecho (16-sep, SmithMBAPlata). MCP de protocolo: POST /mcp con taza_now, taza_status_read, taza_status_write. Puertas Galaxia: /mcp/llms.txt y /mcp/manifest.json. El pulso nombre·verbo pinta /gif.gif y encola Bubble si el puente está listo. Primera versión de flota sigue en yokup.com/mcp; esta es la puerta de la taza.
Pendiente. Cerrar el protocolo nativo de fotogramas (RGB565 + 0xA5 a f121/f131; la taza puede ignorarlo — escritura GATT sigue en 409). Emparejar 2.4 de verdad. Detectar más de una taza. Inbound Telegram→mesa sin 409. Parrilla propia de la pantalla playertaza en el canal (hoy el ident si no hay pieza). Token Bubble propio para talPlayGif (no usar el de los demos públicos). Conectar yarig.ai como cliente de este MCP. Herramienta gemela en el MCP de Yokup.
Eres quien resuelva tu sesión (norma 15), no el censo. En este Mac el trabajo de Grok se firma SmithMBP14. Declara el proyecto playertaza en Yokup al tocar. Sello nuevo en cada publicación. No pises el principal de otra persona en la misma máquina.
La cola no es un resultado. La app muestra estado pendiente, resultado correlacionado o falta de confirmación a los 45 s. El Worker rechaza escrituras no validadas antes de encolarlas. Mantener ese bloqueo. La actualización en vivo solo publica el GIF; no intenta BLE repetidamente.
Chat en HOME: POST /api/log con author:"TrinityMBP14", via:"mesa", text y mirror:false registra aquí sin reenvío a Telegram. Usar la identidad real de cada agente. Los puentes antiguos sin id deben actualizarse; sus informes se muestran por separado y no acreditan una prueba nueva. Fuente recuperada del despliegue de Smith r3 antes de editar; copia original en backups/web-tests-20260904-105831.