Skip to content

Demo

Demo: https://kitchen-planner-aiysxix6sq-ew.a.run.app/ Drag-and-drop planners accept coordinates.

Core trick

An agent writes a scene JSON file in its sandbox, which the backend downloads via the Files API and streams to a three.js renderer over SSE.

Tags

Description

Demo: https://kitchen-planner-aiysxix6sq-ew.a.run.app/ Drag-and-drop planners accept coordinates. AI Kitchen Planner accepts goals. "Wheelchair-accessible galley with induction hob and a double-bowl sink" → a buildable 3D kitchen, modeled from real IKEA components at millimetre precision. How it works Opus 4.7 is the CAD operator, running inside an Anthropic Managed Agent. Authored skills teach it each IKEA product family on demand. The agent writes kitchen.json to its sandbox; we pull it via the Files API as a structured-output channel. A custom notify_model_updated tool drives live SSE updates, so the 3D view re-renders mid-conversation as Opus reasons through the layout. Cabinets and worktops are procedural; appliances are real GLB meshes. Sessions are resumable from the URL hash.
pavelkraleu/anthropic-opus-hackathon★ 00 forksTypeScriptCreated Apr 24, 2026 · last push Apr 26, 2026

README excerpt

# AI Kitchen Planner — POC

Chat with an Anthropic Managed Agent to design a kitchen. The agent writes a
scene JSON file in its sandbox, the backend downloads it via the Files API,
the frontend renders the result with three.js.

## Architecture

```
 browser (React + three.js)
   │  POST /api/sessions                  ← create Anthropic session
   │  POST /api/sessions/:id/messages     ← send a user message
   │  GET  /api/sessions/:id/stream  (SSE) ← agent_message / kitchen_update
   ▼
 backend (Node + Express + Anthropic SDK)
   │  beta.sessions.stream()              ← SSE from Anthropic
   │  beta.sessions.events.send()         ← user.message / user.custom_tool_result
   │  beta.files.list({scope_id})         ← find kitchen.json
   │  beta.files.download()               ← fetch scene JSON
   ▼
 Anthropic Managed Agent
   │  skills: ikea-cabinet / worktop / stove / light (one per product family)
   │  tools:  agent_toolset_20260401 (write, read, bash), notify_model_updated
   └── writes /mnt/session/outputs/kitchen.json, then calls notify_model_updated
```

The agent contract is **the scene JSON schema**. Every instance has a `kind`:
- `ikea-cabinet` / `ikea-worktop` — procedural: FE builds geometry from params.
- `ikea-stove` / `ikea-light` — GLB-backed with a placeholder fallback.

See `skills/<name>/SKILL.md` for the exact fields per kind.

## Repo

```
skills/            Skill sources (SKILL.md per product family)
backend/           Express server + orchestrator + setup

Team