{
  "schema": "sphere-hub/v1",
  "name": "Sphere",
  "title": "Sphere (See1)",
  "tagline": "재료 수급망 — 사람·에이전트가 같은 면에서",
  "updated": "2026-09-12T10:48:44Z",
  "axes": [
    {
      "id": "lore",
      "label": "설정",
      "label_en": "Lore",
      "url": "/sphere-lore/",
      "subtitle": "Lorebook · Plot · Factory",
      "agent_index": "/sphere-lore/data/index.json",
      "status": "live"
    },
    {
      "id": "tech",
      "label": "기술",
      "label_en": "Tech",
      "url": "/sphere-tech/",
      "subtitle": "Tech · 184장",
      "agent_index": "/sphere-tech/data/index.json",
      "status": "live",
      "series": [
        "/wiki/3d-graphics-maniax/",
        "/wiki/unreal-rendering-teardown/"
      ],
      "secondary": [
        "/sphere-tech/",
        "/sphere-tech/data/sources/registry.json",
        "/wiki/3d-graphics-maniax/",
        "/wiki/unreal-rendering-teardown/",
        "/wiki/"
      ]
    },
    {
      "id": "art",
      "label": "아트",
      "label_en": "Art",
      "url": "/sphere-art/",
      "subtitle": "Art · Prompt · Editor",
      "status": "live",
      "secondary": [
        "/sphere-art/",
        "http://diskstation:8010/",
        "/tools/zero-editor/"
      ],
      "links": [
        {
          "label": "Art",
          "url": "/sphere-art/",
          "ping": "/sphere-art/"
        },
        {
          "label": "Prompt",
          "url": "http://diskstation:8010/",
          "ping": "/api/port-ping.php?port=8010"
        },
        {
          "label": "Editor",
          "url": "/tools/zero-editor/",
          "ping": "/tools/zero-editor/"
        }
      ],
      "agent_index": "/sphere-art/data/index.json"
    },
    {
      "id": "play",
      "label": "플레이",
      "label_en": "Play",
      "url": "/games/",
      "subtitle": "Zero · 미니게임",
      "status": "live",
      "secondary": [
        "/games/zero/",
        "/games/minigames/",
        "/games/"
      ],
      "agent_index": "/games/data/index.json",
      "links": [
        {
          "label": "Zero",
          "url": "/games/zero/",
          "ping": "/games/zero/"
        },
        {
          "label": "미니게임",
          "url": "/games/minigames/",
          "ping": "/games/minigames/"
        },
        {
          "label": "목록",
          "url": "/games/",
          "ping": "/games/"
        }
      ]
    }
  ],
  "surfaces": [
    {
      "id": "workbench",
      "path": "/sphere-lore/",
      "kind": "app",
      "status": "live",
      "agent_index": "/sphere-lore/data/index.json",
      "axis": "lore",
      "note": "Lore (설정) axis human face; path legacy name workbench"
    },
    {
      "id": "wiki",
      "path": "/wiki/",
      "kind": "docs",
      "status": "legacy_front",
      "note": "MkDocs front legacy; youtube/blog moved to /_archive/wiki-mkdocs-legacy/; series live under /wiki/*/"
    },
    {
      "id": "wiki-3d-graphics-maniax",
      "path": "/wiki/3d-graphics-maniax/",
      "kind": "series",
      "status": "live"
    },
    {
      "id": "wiki-unreal-rendering-teardown",
      "path": "/wiki/unreal-rendering-teardown/",
      "kind": "series",
      "status": "live"
    },
    {
      "id": "games",
      "path": "/games/",
      "kind": "index",
      "status": "live"
    },
    {
      "id": "games-zero",
      "path": "/games/zero/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "games-3d-pixel-demo",
      "path": "/games/3d-pixel-demo/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "games-bounce-arena",
      "path": "/games/bounce-arena/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "games-chess-3d",
      "path": "/games/chess-3d/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "games-suika",
      "path": "/games/suika-game/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "games-pixel-art-3d",
      "path": "/games/pixel-art-3d/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "games-metro-test",
      "path": "/games/metro-test/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "tools-zero-editor",
      "path": "/tools/zero-editor/",
      "kind": "tool",
      "status": "live",
      "note": "Art studio (Zero Editor)"
    },
    {
      "id": "tools-web-ssh",
      "path": "/tools/web-ssh/",
      "kind": "tool",
      "status": "live"
    },
    {
      "id": "wordpress",
      "path": "/wordpress/",
      "kind": "cms",
      "status": "live"
    },
    {
      "id": "sphere-tech",
      "path": "/sphere-tech/",
      "kind": "app",
      "status": "live",
      "agent_index": "/sphere-tech/data/index.json"
    },
    {
      "id": "prompt-library",
      "path": "http://diskstation:8010/",
      "kind": "app",
      "status": "live",
      "note": "Prompt Library human surface; art materials DB is /sphere-art/"
    },
    {
      "id": "sphere-art",
      "path": "/sphere-art/",
      "kind": "app",
      "status": "live",
      "agent_index": "/sphere-art/data/index.json",
      "note": "v0 empty stack under Sphere constitution"
    },
    {
      "id": "tools-legacy-labs",
      "path": "/_archive/tools-legacy-labs/",
      "kind": "archive",
      "status": "legacy",
      "note": "Former atlas/pixel/procedural labs — features live in Zero Editor now"
    },
    {
      "id": "game-3d-pixel-demo",
      "path": "/games/3d-pixel-demo/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "game-bounce-arena",
      "path": "/games/bounce-arena/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "game-chess-3d",
      "path": "/games/chess-3d/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "game-metro-test",
      "path": "/games/metro-test/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "game-pixel-art-3d",
      "path": "/games/pixel-art-3d/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "game-suika-game",
      "path": "/games/suika-game/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "game-zero",
      "path": "/games/zero/",
      "kind": "game",
      "status": "live"
    },
    {
      "id": "games-minigames",
      "path": "/games/minigames/",
      "kind": "index",
      "status": "live"
    },
    {
      "id": "workbench-redirect",
      "path": "/workbench/",
      "kind": "redirect",
      "status": "legacy",
      "note": "→ /sphere-lore/"
    }
  ],
  "health_pings": [
    {
      "id": "hermes",
      "label": "Hermes",
      "url": "http://diskstation:9119/",
      "ping": "/api/hermes-dashboard-ping.php"
    },
    {
      "id": "mnemosyne",
      "label": "Mnemosyne",
      "url": "http://diskstation:8765/",
      "ping": "/api/mnemosyne-ping.php"
    },
    {
      "id": "vaultwarden",
      "label": "Vaultwarden",
      "url": "https://diskstation.taile611bf.ts.net:8443/",
      "ping": "/api/vaultwarden-ping.php"
    },
    {
      "id": "prompt-library",
      "label": "Prompt Library",
      "url": "http://diskstation:8010/",
      "ping": "/api/port-ping.php?port=8010"
    },
    {
      "id": "dsm",
      "label": "DSM",
      "url": "http://diskstation:5000/",
      "ping": "/api/port-ping.php?port=5000"
    },
    {
      "id": "portainer",
      "label": "Portainer",
      "url": "http://diskstation:9000/",
      "ping": "/api/port-ping.php?port=9000"
    },
    {
      "id": "code-server",
      "label": "Code Server",
      "url": "http://diskstation:20128/",
      "ping": "/api/port-ping.php?port=20128"
    },
    {
      "id": "n8n",
      "label": "n8n",
      "url": "http://diskstation:7676/",
      "ping": "/api/port-ping.php?port=7676"
    },
    {
      "id": "web-ssh",
      "label": "Web SSH",
      "url": "/tools/web-ssh/",
      "ping": "/tools/web-ssh/"
    },
    {
      "id": "workbench",
      "label": "Workbench",
      "url": "/sphere-lore/",
      "ping": "/sphere-lore/"
    },
    {
      "id": "sphere-tech",
      "label": "Sphere Tech",
      "url": "/sphere-tech/",
      "ping": "/sphere-tech/"
    },
    {
      "id": "sphere-art",
      "label": "Sphere Art",
      "url": "/sphere-art/",
      "ping": "/sphere-art/"
    },
    {
      "id": "games",
      "label": "Games",
      "url": "/games/",
      "ping": "/games/"
    }
  ],
  "services": [
    {
      "id": "dsm",
      "label": "DSM",
      "role": "NAS 관리",
      "url": "http://diskstation:5000/",
      "port": 5000,
      "ping": "/api/port-ping.php?port=5000"
    },
    {
      "id": "romm",
      "label": "RomM",
      "role": "롬 라이브러리",
      "url": "http://diskstation:7676/",
      "port": 7676,
      "ping": "/api/port-ping.php?port=7676"
    },
    {
      "id": "ttyd",
      "label": "ttyd",
      "role": "브라우저 터미널",
      "url": "http://diskstation:7681/",
      "port": 7681,
      "ping": "/api/port-ping.php?port=7681"
    },
    {
      "id": "prompt-library",
      "label": "Prompt Library",
      "role": "이미지 프롬프트 DB",
      "url": "http://diskstation:8010/",
      "port": 8010,
      "ping": "/api/port-ping.php?port=8010"
    },
    {
      "id": "vaultwarden",
      "label": "Vaultwarden",
      "role": "시크릿 · API 키",
      "url": "https://diskstation.taile611bf.ts.net:8443/",
      "port": 8222,
      "ping": "/api/vaultwarden-ping.php"
    },
    {
      "id": "mnemosyne",
      "label": "Mnemosyne",
      "role": "지식 브라우저",
      "url": "http://diskstation:8765/",
      "port": 8765,
      "ping": "/api/mnemosyne-ping.php"
    },
    {
      "id": "portainer",
      "label": "Portainer",
      "role": "컨테이너",
      "url": "http://diskstation:9000/",
      "port": 9000,
      "ping": "/api/port-ping.php?port=9000"
    },
    {
      "id": "hermes",
      "label": "Hermes",
      "role": "에이전트 게이트웨이 · cron",
      "url": "http://diskstation:9119/",
      "port": 9119,
      "ping": "/api/hermes-dashboard-ping.php"
    },
    {
      "id": "omniroute",
      "label": "OmniRoute",
      "role": "AI 게이트웨이 · 멀티 프로바이더",
      "url": "http://diskstation:20128/",
      "port": 20128,
      "ping": "/api/port-ping.php?port=20128"
    }
  ],
  "notes": [
    "lore face path = /sphere-lore/ (name=path); /workbench/ redirect only",
    "services = TCP port monopolizers only; label/role from live HTTP title (not stale names)",
    "Tech axis primary is /sphere-tech/ (live).",
    "Deep wiki series under /wiki/*/ remain valid; MkDocs front /wiki/ is legacy.",
    "Do not delete /wiki/3d-graphics-maniax/ or /wiki/unreal-rendering-teardown/.",
    "Tech card count is on the Tech axis subtitle (fetched statically at Phase 3 deploy; hub.json schema unchanged).",
    "Art axis includes Prompt Library (:8010), Zero Editor, Zero play, and art labs.",
    "Tech card count on subtitle is 195 (digest migration); refresh when index changes.",
    "Sphere Tech origin_ref fixed to .html (178 cards, 180/180 OK) on 2026-09-12; migrate_* scripts patched.",
    "MkDocs youtube/blog moved to /_archive/wiki-mkdocs-legacy/ (2026-09-12); series kept under /wiki/.",
    "Sphere spine /data/sphere.json + Art v0 empty stack. Cross-axis validate_sphere.py. 2026-09-12T16:24:31+09:00",
    "Tool labs (atlas/pixel/procedural) integrated into Zero Editor; quarantined under /_archive/tools-legacy-labs/. 2026-09-12T16:26:09+09:00",
    "Hub 2026-09-12: no Tools axis/section; Art sans games; Play=games; Services card grid + same-origin port pings."
  ],
  "sphere": "/data/sphere.json",
  "constitution": "/data/sphere/CONSTITUTION.md"
}
