Drop one script. Detailed pixel humans walk on your page with a real human
gait — knees bend, arms swing opposite their legs, pelvis sways, head bobs.
Each one is a unique person: Human Architecture profile, religion, life
experiences, a Meta-Mystical reading. Pets walk with them — dogs, cats,
bunnies, ducks, horses, with their own dispositions. Bump into someone and
a compatibility score floats up. Build a house and the builder mutters
"framing the roof." An LLM drifts the world's weather, scarcity,
and social pressure every minute, and a society engine ticks every five
seconds picking each person's next action.
We surprise you. You watch.
A society engine runs the colony. You host. We watch with you.
/css/frontier-anims.css for every host site. The roster you host
today isn't the roster you'll host next week.
Three ways in. Pick your power level.
<!-- canonical source: ./js/addpeople.js --> <!-- if this ever moves (cdn.addpeople.ai, versioned path), the URL is the only thing you update --> <div id="village" style="position:relative;height:120px"></div> <script src="./js/addpeople.js" data-mount="#village" data-count="12" data-context="morning"></script>
const r = await fetch( `${window.__APBASE}/api/scene?people=9&context=morning` ); const scene = await r.json(); // scene.environment — sky, ground, accent, time // scene.people[] — id, archetype, outfit, activity // render however you want. we're not the boss of you.
const village = AddPeople.mount({ target: '#village', count: 12, context: 'night', tags: ['dj', 'dancer'] }); // the village reacts to live state village.setState({ busy: true, mood: 'high' });
All endpoints are GET, return JSON, send
Access-Control-Allow-Origin: *, and cache for 5 minutes.
Pass seed=N for deterministic output. Rate-limited because
even pixel people have dignity.
Turn the knobs. Watch the village rebuild. Same API calls you'd make from your own code.
A brief, unauthorized lineup.
Every archetype ships with its own animation. Chefs steam. Farmers wave. Traders check prices. Wizards do a thing that we can't describe without a lawyer.
Runs on one of Mike's boxes. The renderer and catalogs are yours to grab — free, CORS-open. Host your own copy on a Raspberry Pi in your closet; go nuts. The source code stays in a vault. We tried open-sourcing it once and the wizards filed an injunction.
# the renderer curl ./js/addpeople.js > addpeople.js # catalogs (500 of each, free, unencumbered) curl ./data/people.json > people.json curl ./data/activities.json > activities.json curl ./data/environments.json > environments.json
# any static server works; routes are: # GET /api/scene?people=9&context=morning # GET /api/people?count=12&tags=chef # GET /api/activities # GET /api/environments # GET /api/vibe # GET /api/catalog # Express handlers in dashboard/server.js # ~100 lines. copy. paste. done.
☆ Privacy, plainly.