Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

emollick/ai-portals

Media & Design

A hands-off browser flight through 471 procedurally generated 3D worlds, linked by portals, with source code included.

109
16
JavaScript
NOASSERTION
2 days old

Overview

Portals is a browser-based 3D experience: the camera flies itself through a sequence of generated worlds, and each world ends at a portal that opens onto the next one. The live site currently contains 471 worlds spanning wilderness, cities, oceans, interiors, skies, alien and prehistoric scenes, plus places inspired by artists such as Hokusai and Escher or by books and films. The repository holds the source for release s8f of the site as of November 9, 2026. Try the live site and press S to enable sound.

Nothing is loaded as an external model, texture or audio file. Every world builds its geometry and textures in the browser while the previous world is still on screen, and sound is synthesized with the Web Audio API. Two worlds run simultaneously so portal crossings have no cut, and the site is a static build with no backend, account or tracking. Seen worlds, favorites and settings stay in browser storage.

It is aimed at readers who want an interactive, mostly passive audiovisual experience, and at developers curious about a large procedurally generated three.js project.

Quick start

Running the site locally needs Node.js 18 or later and nothing else (Node). Clone the repository and start the development server:

git clone https://github.com/emollick/ai-portals.git
cd ai-portals
npm start

Open http://localhost:8000. There is no install or build step for this path. Running from source, the gallery cannot mark new worlds or show its description page, and the console reports a missing atlas.json that only the build writes.

To produce the deployable static package:

npm install
npm run build
npm run preview

The output lands in dist and the preview serves it at http://localhost:8001. The build minifies project scripts with esbuild and adds per-world and per-journey preview pages, a full world listing, release metadata and host settings. Rebuilding with npm run build -- --stamp s8f reproduced the live site byte for byte on November 9, 2026, though the site may have changed since.

Controls

The flight is not steered. The keyboard provides Space to pause, Right Arrow to hurry to the next portal, S for sound, G for a gentler camera, H to favorite the current world, P to save a picture, I for the gallery, O for options and F for fullscreen. Moving the mouse reveals an on-screen bar with buttons for these actions and sliders for pace and for how often stranger worlds appear.

Constraints

A real graphics card is recommended; phones and older laptops run at lower quality. With graphics on Auto the site estimates a quality level from the GPU and adjusts drawing resolution to keep the flight smooth. The repository is licensed under CC BY-NC-SA 4.0, so reuse must be non-commercial, credited and share-alike. Some borrowed shader functions carry their own terms, and the README notes that a later check found more borrowed code than THIRD-PARTY-NOTICES.txt records; the README's account differs from that file on two points. The 471 worlds are explicitly uneven, graded into bands 1 to 5 by agent judges, with 40 in band 5 and 28 in band 1.

Extending worlds

A world is a file in src/worlds whose default export has a build function returning a three.js scene, a camera path and a duration, and it is registered with title, kind and caption in src/worlds/index.js. Most worlds put their main set piece in src/parts, and a shared kit supplies skies, water, terrain, plants, animals, buildings and interiors. The engine picks the next world about a second after a crossing, builds it incrementally between frames, and warms its shaders before it is shown.

HotRepo's take

This repository appeared on HotRepo's new-project list for JavaScript on November 10, 2026, gaining 4 stars in the recorded one-hour window and reaching 106 stars and 14 forks. That single short snapshot is not enough to describe a trend. The more notable fact is structural: the project is a large, unusually direct release of AI-agent-written three.js code, with the README documenting its build pipeline and even its own attribution gaps, which makes the repository worth reading as much for how it was assembled as for the site itself.

Written by AI from the project's README, updated . The project's own docs are the source of truth.

You might also like

  1. spotify/portal-ai-pluginsAdds Spotify Portal catalog search, diagnostics, and Fleetshift workflows to Claude Code, Codex, Cursor, and pi.TypeScript2,820
  2. Leonxlnx/athenaionA procedurally generated ancient Greek 3D world in three.js, useful as a reference for code-only scene building and offline rendering.JavaScript296
  3. kevinraymond/florilegiumGenerate Delft-blue floral page margins for LaTeX documents, drawn procedurally in Lua.Lua348