01-projects/ink

ink.rdco.dev — pen-first canvas with a grounded agent (build spec v1)

2026-07-21·build-spec·status: v0 approved by founder 2026-07-21 ~14:47 ET ("Sure - let's try it out on a new subdomain of rdco.dev")·by ray-coo-agent
inkapple-pencilcanvasagentcloudflareproduct

ink.rdco.dev — build spec

Provenance: inspired by MaximeRivest/riddle (MIT; reMarkable Tom Riddle diary — handwrite → page-PNG → vision LLM → reply animated as handwriting). Founder's insight chain (2026-07-21 iMessage, 14:33 + 14:47): port the concept to web/iPad → make it a PRODUCT: shared canvas, actor colors, knowledge grounding, configurable interaction — "make it work with our stack first, then turn it into a generalization for others."

Category claim: whiteboard apps have no brain; chat apps have no pen. ink is a pen-first thinking surface where an agent writes back — into the spot you point at.

Founder rulings (locked)

  1. New subdomain of rdco.dev → ink.rdco.dev (founder may rename).
  2. Secrets: v0 = per-user BYOK; the roadmap's option 4 = RDCO-held tokens + charge for access / usage markup (the productization path).
  3. Web first; iOS (PencilKit) kept in mind as a port target — keep the stroke model + interaction layer portable (no DOM-coupled data structures).
  4. Agent draws via constrained SVG (agreed limitation) — v1.
  5. Send-off = TRIPLE-CIRCLE an area. The gesture is also SPATIAL ADDRESSING: the circled region is where the agent responds. Flow: write instructions → triple-circle → circle + contents fade ("the page drinks the ink") → agent writes/draws its response into that region.
  6. Everything configurable: trigger (timed delay | gesture | button), vanishing vs persistent shared canvas, pen colors per actor (default: user black, agent blue).

v0 — tonight (private: founder + Andrew + Ray)

Stack: single static PWA (index.html + bundled assets) deployed via quick-sites → ink.rdco.dev behind Cloudflare Access (proven rails — no new infra, no deploy-classifier exposure). BYOK: each user pastes their own Anthropic API key once; stored ONLY in localStorage; calls go browser-direct to the Anthropic API (CORS-enabled direct browser access — the build agent MUST load the claude-api skill for exact headers/params/model ids rather than working from memory). Access grants: ben@ + ray@ at deploy; Andrew added via quick-share when founder supplies his email.

Canvas + pen:

Triple-circle detection:

Send + reply:

Settings panel (gear): trigger mode (triple-circle default | idle seconds | send button), persist vs vanish (+ vanish delay), user/agent colors, model picker, persona textarea, API key (with "stored only on this device" note), export/import, clear page.

PWA: manifest + icons + apple-touch meta so it installs to the iPad home screen; works offline for drawing (LLM calls need network, obviously).

v0 acceptance: on an iPad (or simulated pen events): draw with pressure → write "draw nothing, just say hi" → triple-circle it → ink drinks → blue handwriting answers into the circle → survives reload (persist mode) → second user's key works independently on their device → 0 console errors → design-critic pass.

v1 (next)

v2 (productization)

Build discipline