pgx
AI 에이전트를 위한 경량 Postgres, Rust로 구현, 하나의 런타임에서 수천 개의 격리된 데이터베이스 제공
질문·수정 가능한 홀로그램 지구, 실데이터 기반 AI 에이전트와 웹GPU·WebAssembly 기반 홍수·허리케인·화산·화재 시뮬레이션 제공
A holographic Earth you can question and change: an AI agent grounded in real data, plus flood, hurricane, volcano and fire simulations in WebGPU and WebAssembly.
데이터JavaScript · HTMLGitHub @adikarkm온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A holographic Earth you can question and change. Point at any place on the planet with your mouse, your hands or your voice, ask what's there, then ask "what if?" and watch floods, hurricanes, eruptions and fires play out with real physics on real data.
▶ Live demo: runs in the browser with streamed satellite imagery, 3D buildings and offline analysis (AI answers and live feeds need the local server below).
It has two modes that share one globe:
The two modes hand off to each other: ask "what if the sea rose 2 metres here?" and the console jumps into the simulation with your region loaded.
Tech: JavaScript (ES modules), three.js, 3d-tiles-renderer, WebGPU (WGSL), WebAssembly (AssemblyScript), Web Workers, MediaPipe, Web Speech and Web Audio APIs, WebXR, Node.js with WebSockets, esbuild, Playwright.
How it was built: I designed and directed this project and built it with Claude (Anthropic's AI) as a coding partner.
| Area | Feature |
|---|---|
| Globe | Streams satellite imagery and 3D terrain as tiles, from the whole planet down to street level (~0.5 m imagery in cities, ~30 m terrain), on the true WGS84 Earth shape; tilt toward the horizon; place names from countries down to neighbourhoods (49,000 places); five basemaps (satellite, Sentinel-2, streets, topographic, night lights); hologram from afar fading to real imagery up close; floods computed against the detailed terrain; 3D OpenStreetMap buildings at street level |
| Input | Mouse, touch, webcam hand tracking (MediaPipe), custom gestures you train yourself, voice commands with an optional "Terra" wake word, point-and-say ("put a volcano here" resolves to where you pointed as you spoke), WebXR hands and controllers |
| Displays | Browser, VR/AR headsets, Looking Glass holographic displays, physical spheres (fisheye and equirectangular output) |
| Ask | Agentic tool loop over real data (17 tools), GeoJSON + style layers, data-derived layers, step narration, spoken answers, a fact-checker that traces every number to the tool call that produced it (tap a number to see its source) |
| What-If | WebAssembly Priority-Flood (AssemblyScript) in a Web Worker; WebGPU shallow-water surge model on high-resolution terrain tiles (CPU fallback); wind field (live GFS or climatology) with 1 million GPU particles; hurricanes calibrated on 50 years of real tracks with land decay and surge risk; 50-member ensembles with strike probabilities; Lagrangian ash and smoke plumes; wind-driven fire perimeters; meteor impacts |
| Exposure | A global population surface (GeoNames towns + World Bank national totals, dasymetric) so floods report people affected, by country |
| History | Replay any hurricane, typhoon or cyclone since 1980 from any ocean against the model (track and wind); held-out forecast skill per basin vs persistence |
| Live | Active hurricanes with NHC forecast cones, NASA FIRMS fires, USGS earthquakes |
| Time | Sea level scrubbing 1900–2150 under IPCC AR6 scenarios; NASA GIBS satellite imagery compare with a swipe divider |
| Ground view | Street-level view of a spot with the simulated water depth, fire and storm conditions, on a real Gaussian Splat capture you load or Google Photorealistic 3D Tiles |
Open the live demo, or open dist/terra-console-offline.html directly from disk in Chrome or Edge (one self-contained file). The globe, both modes, the flood model, storms, the timeline, layers and sound all work with the built-in data. AI answers and live feeds need the local server below; streamed imagery and 3D buildings need an internet connection.
Requirements: Node 18+. Python 3 with numpy, scipy and Pillow only if you want to rebuild the data.
npm install
cp .env.example .env # add a free OPENROUTER_API_KEY (or ANTHROPIC_API_KEY) for AI answers
npm run build # builds dist/ (web build + single-file offline copy; data is prebuilt)
npm start # http://localhost:3000
Open http://localhost:3000 in Chrome or Edge, allow the camera (hand button) and microphone (mic button).
.env in the project folder (Notepad is fine) and paste it: OPENROUTER_API_KEY=sk-or-v1-...npm start. The console prints AI: OpenRouter (openrouter/free) and the status chip shows AI · OpenRouter (local).The free tier allows about 20 requests a minute and 50 a day (1000 a day after a one-time $10 credit purchase). A question takes roughly 3–8 requests, so expect around 8–15 questions a day. When the limit is hit, the console says so and answers with offline analysis. Details: docs/AI.md.
Optional:
npm test runs the physics, unit and end-to-end suites (end-to-end needs Python Playwright).npm run calibrate refits the hurricane model to the historical tracks and reports skill.npm run fetch-raw && npm run prepare-data rebuilds every dataset from source.FIRMS_MAP_KEY to .env for live fires.| Hands (webcam) | Action |
|---|---|
| Open palm, move | Spin the globe |
| Pinch and drag | Draw a region (Ask) · draw a storm push or grab the globe (What-If) |
| Pinch on a button or slider | Press it / slide it |
| Two hands apart / together | Zoom |
| Fist, up / down | Raise / lower the sea (What-If) |
| Peace sign, hold | Switch mode |
| Your trained gestures | Whatever you bound them to |
| Voice or text | Action |
|---|---|
| "Go to Lagos" | Fly there |
| "What if the sea rose 3 metres" | Jump into the flood simulation |
| "Hurricane category 4 near Houston" | Spin up a steered storm |
| "Show me this region in 2000 vs 2026" | Satellite swipe compare |
| "Show the winds" / "true colour" / "ask mode" | Layers and modes |
| Anything else | Ask the agent |
Mouse: drag to spin or draw with the active tool, Shift-drag to draw a region from any tool, scroll to zoom, right-drag or Ctrl-drag to tilt (close to the ground), PageUp/PageDown to tilt, +/- to zoom, / focuses the command bar. Full reference: docs/INTERACTION.md.
src/
main.js bootstrap and wiring
state.js shared state + event bus
globe/ three.js scene, shaders, overlays, raster layers
data/ DEM loader, cities and countries (+ generated data)
sim/ flood engine (Wasm worker), wind field, storms, hazards
modes/ Ask the Earth, What-If Earth
ai/ agent orchestrator, tools, layer composition
input/ pointer, hands, gesture classifier, voice, commands
time/ IPCC scenarios, timeline and GIBS compare
collab/ multi-user rooms (artifact rooms or WebSockets)
xr/ WebXR session, hand grab/scale, floating panel
ground/ ground view: Gaussian Splats, Google 3D Tiles, effects
audio/ procedural spatial soundscape
ui/ gesture trainer
regional/ high-resolution terrain, WebGPU/CPU shallow-water model, surge patch
live/ live hazards layer
display/ spherical display output
index.src.html page markup and styles
wasm/flood.ts Priority-Flood + region statistics (AssemblyScript)
server/server.js local server: Claude proxy, live data, imagery, rooms
tools/ data preparation, storm calibration
tests/ physics, unit and end-to-end tests
assets/ earth.jpg, dem.png
docs/ architecture, simulation, AI, interaction, XR, data, roadmap
This is an exploration and communication tool, not a hazard map. The global elevation grid is ~20 km; the regional surge model uses terrain tiles down to ~30 m but no levees or drainage. People counts at 20 km are an upper bound (everyone in a cell the sea reaches). Coastal city elevations come from a surveyed table for well-known cities and a ~6 m estimate elsewhere (marked ~). Storm, fire and plume models are simplified physics meant to show how winds shape outcomes. Details in docs/SIMULATION.md.
MIT for the code (see LICENSE). Data and imagery carry their own licences, listed in docs/DATA.md.
| Together | Multi-user rooms: live cursors and hands drawn as beams on the globe, shared regions, answers and simulations |
| Sound | Procedural spatial audio: hurricane wind, fire crackle, volcanic rumble, surf over flooded coasts, panned by where they are relative to your cursor or hand |