Mockups
Four HTML artifacts, cross-linked. Open each in a browser for the full layout (chat bubbles, SVG architecture diagrams, dark theme).
Viewing the artifacts
Rendered (best)
Primary: GitHub Pages (stable, no Tailscale required):
| Mockup | URL | Version |
|---|---|---|
| 00 — Platonic ideal | https://jacobcole.ai/picortex/00-platonic-ideal.html | v0.2 (current) |
| 00 — Platonic ideal (historical) | https://jacobcole.ai/picortex/00-platonic-ideal-v0.1.html | v0.1 — superseded |
| 01 — Option 2 · No-Docker architecture | https://jacobcole.ai/picortex/01-option-2-no-docker.html | v0.2 (current) |
| 01 — Option 2 · Piyush-style (historical) | https://jacobcole.ai/picortex/01-option-2-piyush-style-v0.1.html | v0.1 — renamed |
| 02 — Option 4 · Noos-style | https://jacobcole.ai/picortex/02-option-4-noos-style.html | v0.1 (current) |
| 03 — Piyush's literal architecture (reference) | https://jacobcole.ai/picortex/03-piyush-literal.html | v0.1 · reference |
01-option-2-piyush-style.html(the old canonical URL) now serves a redirect stub that sends you to the new No-Docker canonical. All external links pointing at the old URL still work.
Fallback: Tailscale HTTPS while the Mac Mini HTTP server is up:
| Mockup | URL |
|---|---|
| 00 — Platonic ideal (v0.2) | https://sdmm291.tailb2a35c.ts.net:8471/00-platonic-ideal.html |
| 00 — Platonic ideal (v0.1) | https://sdmm291.tailb2a35c.ts.net:8471/00-platonic-ideal-v0.1.html |
| 01 — Option 2 · No-Docker (v0.2) | https://sdmm291.tailb2a35c.ts.net:8471/01-option-2-no-docker.html |
| 01 — Option 2 · Piyush-style (v0.1) | https://sdmm291.tailb2a35c.ts.net:8471/01-option-2-piyush-style-v0.1.html |
| 02 — Option 4 · Noos-style | https://sdmm291.tailb2a35c.ts.net:8471/02-option-4-noos-style.html |
| 03 — Piyush's literal architecture | https://sdmm291.tailb2a35c.ts.net:8471/03-piyush-literal.html |
Version history
- Mockup 01 v0.2 (2026-04-23) — Renamed from "Piyush-style" to "No-Docker architecture." Dropped "Bot Gateway" jargon in favor of plain "bot server." Added a credit/divergence box clearly separating what's borrowed from Piyush vs. what's new in picortex. Created companion reference (mockup 03) showing Piyush's literal design. Old URL
01-option-2-piyush-style.htmlserves a redirect stub. - Mockup 03 v0.1 (2026-04-23) — New reference mockup. Documents what Piyush Jha actually shipped in Jan 2026 (9 commits,
238052c4→d2d6a534): a 3-tier per-user web chat over SSH to a single shared EC2. No groups, no consent loop, no knowledge graph, no texting. Not a proposal — exists so other mockups can cite what's literal vs. adapted. - Mockup 00 v0.2 (2026-04-23) — Architecture diagram collapsed to one Jacob's-phone box with annotation explaining "out-of-band = different DM thread, not different endpoint." Fix for feedback on v0.1.
- Mockup 00 v0.1 (2026-04-23) — Initial draft. Diagram drew Jacob's phone twice (inbound DM box + out-of-band approval box). Same device, confusing — superseded by v0.2.
- Mockups 01 v0.1 and 02 v0.1 (2026-04-23) — Initial concrete-architecture mockups.
Source
| Mockup | WikiHub (source view) | Local path |
|---|---|---|
| 00 (v0.2, current) | docs/mockups/00-platonic-ideal.html | ~/code/picortex/docs/mockups/00-platonic-ideal.html |
| 00 (v0.1, historical) | docs/mockups/00-platonic-ideal-v0.1.html | ~/code/picortex/docs/mockups/00-platonic-ideal-v0.1.html |
| 01 (v0.2, current — No-Docker) | docs/mockups/01-option-2-no-docker.html | ~/code/picortex/docs/mockups/01-option-2-no-docker.html |
| 01 (v0.1, historical — Piyush-style) | docs/mockups/01-option-2-piyush-style-v0.1.html | ~/code/picortex/docs/mockups/01-option-2-piyush-style-v0.1.html |
| 01 (old canonical URL, now redirect) | docs/mockups/01-option-2-piyush-style.html | ~/code/picortex/docs/mockups/01-option-2-piyush-style.html |
| 02 | docs/mockups/02-option-4-noos-style.html | ~/code/picortex/docs/mockups/02-option-4-noos-style.html |
| 03 (reference) | docs/mockups/03-piyush-literal.html | ~/code/picortex/docs/mockups/03-piyush-literal.html |
Note: WikiHub serves HTML files as
application/octet-stream(raw source), so Safari will likely download them instead of rendering. Use the jacobcole.ai URL for rendered view. Seewikihub-8vk(owner opt-in rendering) for the proposed fix.
What each shows
00 — Platonic ideal
The texting experience from the user's side + the abstract (channel- and executor-agnostic) architecture. Contents:
- User stories — 6 cards covering Jacob + friends + group members
- Scene A — bot respects attention. Group chat mockup with four human turns of silence, then one @mention triggers one reply.
- Scene B — the consent loop (the banger). Side-by-side: group view (bot says "let me check", types, answers) + Jacob's DM (bot shows question context + proposed reply + approve/deny keys). Below: the
DisclosureEventaudit row that gets written. - Scene C — manifest dialog. Bot discloses what it knows about Jacob in this chat.
- Scene D — reaction triggers. ⭐ on a bot message → saves to notes; ❌ → retracts.
- Architecture diagram (abstract). Channel adapter → Bot server → {Attention, Executor, Consent Broker} → Knowledge Layer + out-of-band DM path + audit log. SVG, no machines named.
- Flow of a consent-loop turn as 8 numbered steps.
01 — Option 2 · No-Docker architecture
Concrete 2-new-boxes architecture (+ 1 reused), derived-from-but-not-equal-to Piyush's Jan 2026 design:
- Credit/divergence box — explicitly separates what's borrowed (split bot/workspace, SSH per turn,
claude -c -p, narrow sudoers) from what's new (per-chat isolation, attention gating, consent broker, noos graph, Linq channel). - Architecture SVG: Box A (Bot server, Hetzner VPS) + Box B (Claude box with per-chat Linux users) + Box C (reused noos). SSH +
claude --session-id <chat> -pper turn. - "What lives where" table — component × box × failure cost.
- Concrete wire-view consent loop (8 steps with exact commands).
- Code sketch — bot server executor in TypeScript.
- Strengths/costs, head-to-head — 6 strengths (including "no Docker daemon / images / compose"), 5 costs.
- 5 failure modes table with user-visible + recovery.
02 — Option 4 · Noos-style
Concrete single-box stateless architecture, closest to noos's existing Slack bot:
- Architecture SVG: One Fly Machine + noos. Per-turn ephemeral
claude --printsubprocess with transcript rebuilt from SQLite. - Storage table — everything durable goes through SQLite; no workspace FS.
- Concrete wire-view consent loop (7 steps).
- Code sketch —
executeTurn()+paused_turnsSQLite schema. - Strengths/costs, head-to-head — cheapest to ship; no code execution surface.
- 5 failure modes table.
- Migration path Option 4 → No-Docker (Option 2) — additive, not a rewrite.
03 — Piyush's literal architecture (reference)
Factual snapshot of what Piyush Jha actually shipped in Jan 2026 — included so other mockups can cite provenance accurately. Not a proposal.
- The nine commits listed with SHAs and dates.
- Architecture SVG: Browser → Vercel (static CDN) → Backend server → single shared EC2 (per-user Linux accounts).
- The turn loop — verbatim code from
claudeService.tsandchatHandler.tsat SHAd2d6a534. - Features table: what he had (web chat, per-user workspace, xterm terminal, voice) vs. what he didn't (groups, attention gating, consent loop, knowledge graph, texting).
- Borrowed vs. new table — which picortex pieces are truly inherited vs. added.
- Why his design was replaced — Cortex pivoted to multi-tenant enterprise; picortex-as-personal-tool doesn't need that pivot's justification.
Design principles used in all four
- Self-contained single-file HTML (no CDN, no JS, no external fetches)
- Dark theme for screenshot-ability
- iMessage-style chat bubbles with reply-to pills and reaction badges (mockup 00)
- Inline SVG for architecture diagrams (crisp at any zoom)
- Cross-linked top nav on every page
- Mobile-friendly layout (split panels stack on narrow viewports)
- Version pills on each page (green "current" / red "superseded" / amber "reference")
Tickets closed
picortex-b7c— [Mockup] Platonic-ideal UX + architecturepicortex-ofb— [Mockup] Option 2 concrete architecturepicortex-95r— [Mockup] Option 4 concrete architecture
Still open
- Mockup of Option 1 (the original picortex tmux design) — no ticket; current specs carry provisional banners saying "do not start implementation here." If/when we want a concrete mockup of why the tmux path is the wrong choice, file a new ticket.
- Mockup of Option 3 (ephemeral per-chat Fly Machine) — no ticket yet; relevant if the D2 isolation report says per-chat container is required.