# KAI Dual-World Platform Goal

| | |
|---|---|
| **Status** | VISION LOCK + Phase 0/1 slice |
| **Owner intent** | Account → Avatar (you) with public/private data; 2D Oracle dashboard + 3D KAIVERSE are the **same world** at different speeds/dimensions (PS Home / No Man's Sky feel). |
| **Related** | Guest feed/shorts/subscribe, plan-tiers, KAIVERSE quest design, social-agents |

---

## Core idea (owner words, cleaned)

### 1. Avatar = you (not an autonomous AI)

On create account / Me:

- User creates an **Avatar** (today's "Create Agent" product surface — rename in UX to Avatar).
- Avatar has **bio + identity** (DiceBear / generated look you liked).
- **Public** fields: visible to others (name, handle, public bio, avatar art, home planet label).
- **Private** fields: only that user (email, private notes, private interests, settings) — privacy rights.

This is **not** an autonomous fleet bot. It is **their body/persona** in the platform.

### 2. Two dimensions, one world

| Dimension | What it is | Movement feel |
|-----------|------------|---------------|
| **2D — Oracle dashboard** | Menus, Feed, Shorts, Chat, Me, Subscribe | **God / teleport** — tab jumps = instant travel across the map of your home planet / network |
| **3D — KAIVERSE** | Fly/walk cosmos, realtime presence | **Embodied** — fly, walk, land; slower, spatial, "really there" |

Same places exist in both forms (easter eggs can link 2D spot ↔ 3D coordinates).

### 3. What you do in 2D shows in 3D

- Avatar is **not autonomous**, but **presence mirrors activity**:
  - On Home Feed → avatar "at home planet / social district"
  - In Chat → near social hub / radio
  - In KAIVERSE tab → realtime body in 3D
- 2D = high-speed navigation of the same graph; 3D = real-time traversal.

### 4. Content pillars (both dimensions over time)

Missions, quests, adventures, Battle Royale (cosmos), shops, houses, places (area of sight), easter eggs 2D+3D, multiplayer social.

Quest spine already designed: `KAIVERSE-QUEST-SYSTEM-DESIGN.md` (errors→quests; public = explorer tier).

### 5. Home planet metaphor

- Each user/AI has a **home planet** (or district).
- Dashboard **tabs/pages** = locations on that planet (or linked places).
- KAIVERSE = the spatial realization of those places.

---

## Mapping to current code

| Concept | Today | Gap |
|---------|--------|-----|
| Avatar identity | `/api/social-agents` + DiceBear | Still labeled "agent"; needs **isAvatar / primary** + public/private split |
| Profile public | `/api/me/profile` bio/etc. | Needs explicit public vs private schema |
| Private notes | tenant notes | Keep private-only |
| KAIVERSE body | Fleet planets / hard-part places | User avatar mesh/presence not wired as "you" |
| 2D teleport | View switches | Not yet mapped to place ids |
| 3D realtime | kaiverse.js flight | Must not break first-person feel; avatar additive |
| Quests | Design doc only | Not fully playable loop |

---

## Phased build

### Phase 0 — Language + privacy model (now)
- UX: **Your Avatar** (primary social persona), not "mystery agent".
- Public vs private field lists server-side.
- One primary avatar per user (or first agent = avatar).

### Phase 1 — Presence bridge
- `presence: { view, placeId, mode: 'god'|'embodied', updatedAt }`
- Dashboard view changes update presence (god teleport).
- KAIVERSE polls presence for other users (and self marker).

### Phase 2 — 3D avatar body
- Additive full-body / ship avatar from avatar seed (no nsUpdateCamera rewrite).
- Mirror position when in 3D; ghost/teleport trail when 2D-only.

### Phase 3 — Place graph
- Map Home / Chat / Shorts / Subscribe / KAIVERSE → place nodes on home planet.
- Easter egg links 2D UI coords ↔ 3D positions.

### Phase 4 — Play systems
- Quests/missions (explorer-safe), shops, houses, BR later — gated by plan tier.

---

## Non-goals (immediate)

- Autonomous agent that acts without the user.
- Breaking first-person KAIVERSE controls.
- Full BR / economy in one shot.
- Cross-tenant private data leaks.

---

## Success (Phase 0–1)

1. User understands Avatar = me (public/private).
2. Create/list shows primary avatar clearly.
3. Presence API records current 2D "place" (view).
4. Doc + API ready for 3D body attach later.

## Phase 2–3 shipped (2026-07-16)

- `shared/dual-world-places.mjs` — place graph + easter eggs + lat/lon
- `GET /api/social/world-map` — guest-readable map
- Presence enriched with planetHint/lat/lon for 3D anchors
- `kaiverse.js`: `nsUpdateUserAvatars` additive body/ghost markers from presence (no flight control edits)
- Guest Me tab: home-planet map buttons (2D god-teleport) + dual-world copy
- Flag `window.KAIVERSE_USER_AVATARS=false` to disable 3D avatars
