{"slug": "show-hn-altiverse-what-if-sim-see-different-decisions-affect-an-environment", "title": "Show HN: AltiVerse: What If SIM, see different decisions affect an environment", "summary": "Developer LeoTheAIDev released AltiVerse, an open-source simulation tool that forks a single decision into 2-4 alternate realities with up to 1,000 AI-driven agents to explore second-order effects. The tool runs fully offline and locally, with an optional LLM layer for narrative generation, aiming to help users reason about policy decisions beyond spreadsheet analysis.", "body_md": "**Take one choice. Play it forward as several alternate realities — each a small living world of people who move, stress out, break rules, burn out, form friendships and rivalries, and tell you how it felt.**\n\nAltiVerse forks a single decision — *a school phone ban, a 4-day week, 8- vs 12-hour hospital shifts* — into **2–4 alternate realities** and runs each one forward as a small, living simulation. Up to ~1,000 people with personalities, moods, and relationships move through rooms, react to the policy, and slowly pull the worlds apart. You watch *when* and *why* the realities diverge, click any person to compare how they fare across timelines, and export a full report with a recommendation.\n\nIt is a **thinking tool, not a predictor.** Every number and quote comes from a **deterministic** engine (same seed → same world, every time), with an **optional** local or online LLM layer to write the prose: in-character thoughts, Q&A, headlines, and reports. Use it to reason about the **second-order effects** of a decision — the stuff that doesn't show up in a spreadsheet.\n\n🔒\n\nLocal-first & private.No backend. No telemetry. Nothing is uploaded. Runs, presets, and any API key live only in your browser's`localStorage`\n\n. It works100% offlineout of the box.\n\n[Quick start](#quick-start)[Using a model (optional)](#using-a-model-optional)[How to use it](#how-to-use-it)[Features](#features)[Screenshots](#screenshots)[The simulation, explained](#the-simulation-explained)[Keyboard shortcuts](#keyboard-shortcuts)[Tech & architecture](#tech--architecture)[Privacy](#privacy)[FAQ](#faq)[License](#license)\n\nYou need [Node.js](https://nodejs.org) **18 or newer**. Then run **one line** — it downloads AltiVerse, installs it, boots the app, and pops open your browser:\n\n```\nnpx github:LeoTheAIDev/Altiverse\n```\n\nThat's the whole install. No clone, no `cd`\n\n, no account, no key, no server — it just opens at ** http://localhost:5173** (or the next free port). Nothing to run is built ahead of time.\n\n**Prefer to clone it?** (keeps the repo so you can hack on it)\n\n```\ngit clone https://github.com/LeoTheAIDev/Altiverse.git altiverse\ncd altiverse\nnpm install\nnpm start          # boots the app and opens your browser at http://localhost:5173\nnpm run dev        # dev server (without auto-opening the browser)\nnpm run build      # type-check + production build into dist/\nnpm run preview    # serve the production build locally\nnode bin/altiverse.mjs   # the same one-shot launcher the `altiverse` bin uses\n```\n\n💡 If you\n\n`npm link`\n\n(or install globally), thecommand launches the app from anywhere.`altiverse`\n\nAltiVerse runs **fully offline** with deterministic content. Turn on a model to get AI-written scenarios, in-character thoughts, character Q&A, daily headlines, and the final report. It speaks to **any OpenAI-compatible /chat/completions endpoint** — open\n\n**Settings** and point it wherever you like:\n\n| Mode | Examples | Key needed? |\n|---|---|---|\nLocal (nothing leaves your machine) |\n`http://localhost:11434/v1` ), LM Studio, llama.cpp |\n\n**Online***(bring your own key)*\n\n```\n# Local, private, free — using Ollama\nollama pull llama3.2          # or qwen2.5, mistral, gemma3 …\nOLLAMA_ORIGINS=* ollama serve  # OLLAMA_ORIGINS=* lets the browser reach it\n```\n\nOne-click provider presets, a **Model** picker, and a **Test connection** button are built into Settings. Your API key is stored **only** in `localStorage`\n\nand sent **straight to the provider you chose** — never to us (there is no us; there's no backend).\n\nA run goes **Setup → Studio → Report**, and every run is saved to **History** so you can replay it.\n\nPick whichever entry point fits how much you want to specify:\n\n**One-click presets**—*Phones at school · School start time · Office remote work · Hospital shifts · Prison food · Grading*. Loads a complete scenario; just press play.**Describe it in a sentence***(needs a model)*— e.g.*\"A hospital deciding between 8- and 12-hour nursing shifts — who burns out, who stays sharp, and how patient care changes.\"*The model fills in the environment, cast, metrics, and realities.**Build it field by field**— full control over environment, the question, each reality's policy, the groups of people, named/pinned characters, metrics, number of days, and the random seed.\n\nPress play and watch the worlds run forward day by day on their own **living maps**. People move between rooms, get stressed, break rules, burn out, bond, and clash. Scrub the timeline, change speed, and **click anyone** to open their cross-reality card. Live metrics, trends, the divergence tree, the wellbeing histogram, causal chains, and a per-day newspaper headline all update as you go.\n\nOpen the **Report** for an executive summary, in-character interviews, per-metric explanations, and a **recommendation** for which reality to pick — then export it to **Markdown or PDF**.\n\n- Fork\n**2–4 realities** from one shared baseline and run them on a**single synchronized timeline**. - Each reality gets its own\n**living map**— a pannable 2-D world of rooms (classrooms, hallway, cafeteria, playground, offices…) with agents drifting around via smooth, physics-based motion. - A per-day\n**Daily Fork** newspaper headline for each reality (deterministic, or AI-rewritten on demand).\n\n- Up to\n**~1,000 people** with archetypes (the*anxious overachiever*,*jokester*,*rule-bender*,*weary veteran*…), emoji, roles, and personality**traits**(stress-prone, rule-prone, burnout-prone). - The\n**same person exists in every reality**— so you can see how*this exact individual*fares under each policy. - Emergent\n**relationships, rivalries, popularity, and rumours** that spread day to day — none of it scripted. **Click anyone** for a card: their mood strip across all days, a wellbeing score, friends & rivals, AI-written thoughts, and a Q&A box to*ask them questions in character*.\n\n**Live metrics**(0–100) compared across realities — use the** 8 defaults**(Focus, Grades, Trust, Stress, Burnout, Rule-breaking, Conflict, Corner-cutting) or define** your own**(up to 10); direction (“higher is better” vs “lower is better”) is auto-detected.** Metric trends**— sparklines per metric, every reality on one chart.** Divergence tree**— an SVG fan from the shared baseline showing exactly which day the worlds split.** Wellbeing histogram**— the*distribution*of how people are doing, not just the average.**Causal chains**— a*rule → consequence → second-order effect*breakdown for each reality.\n\n- Works with\n**any OpenAI-compatible endpoint**— local (Ollama, LM Studio, llama.cpp) or online (OpenAI, OpenRouter, Groq, Together). - Powers AI scenario generation, in-character thoughts & Q&A, daily headlines, per-metric explanations, interviews, and the recommendation.\n- Robust to small-model quirks: malformed JSON is auto-repaired with\n.`jsonrepair`\n\n**Deterministic engine**— a seeded Mulberry32 PRNG means the same seed always produces the same world.** Reseed**to explore variations without re-calling the model.- Full\n**timeline controls**— play/pause, step day-by-day, scrub, and** 0.5× / 1× / 2× / 4×**speeds. **History**— every run is saved (up to 24), replayable, and resumable.- Export the report to\n**Markdown / PDF**.\n\n**No backend, no telemetry, nothing uploaded.** Runs, presets, and keys live only in your browser. Fully usable offline.\n\n| Concept | What it means |\n|---|---|\nReality / branch |\nOne alternate world forked from the baseline, defined by a policy (e.g. “Confiscate phones at the door”). 2–4 per run. |\nPersona |\nA person who exists across all realities — fixed identity, name, archetype, emoji, and traits. |\nAgent |\nThat persona on a given day in a given reality — with state (stressed / rule-breaking / burned-out) and a position in a room. |\nMetric |\nA 0–100 measure (Focus, Stress, Trust, …). Default set of 8, or define up to 10 of your own. |\nEvent |\nSomething that happened that day — policy, organic (state-driven), or social (a bond, a clash, a rumour). |\nDivergence |\nThe metric-distance between realities over time, the day they first split, and the top metrics driving the gap. |\nCausal chain |\nA rule → consequence → second-order effect narrative explaining a reality's movement. |\nSeed |\nThe integer that makes a run reproducible. Same seed → identical world. Reseed bumps it to explore variations. |\n\n**Environments** ship as presets — **School, Office, Startup, Hospital, Prison, Summer Camp** — each with its own roles (student/teacher, employee/manager, nurse/patient…) and rooms. Type anything else and it builds a custom environment around your text.\n\n**Defaults at a glance:** seed `20260607`\n\n· 30 days · 18 members + 4 staff · 2 realities · 8 metrics · speed 1× · model `llama3.2`\n\n@ `http://localhost:11434/v1`\n\n.\n\n*(in the Studio)*\n\n| Key | Action |\n|---|---|\n`Space` |\nPlay / pause |\n`←` / `→` |\nStep one day back / forward |\n`Home` / `End` |\nJump to the first / last day |\n`Esc` |\nClose the open character card |\nclick a person |\nOpen their cross-reality card |\n\n**Vite + React + TypeScript.** No backend, no build step required to run (`npm start`\n\n).**Deterministic core**— a Mulberry32 PRNG drives every world; each branch runs on a derived seed so realities stay independent yet reproducible.**LLM layer**— a thin, dependency-light client (plain`fetch`\n\n) against any OpenAI-compatible`/chat/completions`\n\nendpoint, with JSON repair for small models. Disable it and everything still works deterministically.**Smooth motion**— agents move with spring physics + damping, written straight to the DOM so hundreds render without per-frame React re-renders.**Persistence**— runs, presets, and config live in`localStorage`\n\n(history capped at 24 entries).\n\n```\nsrc/\n├── sim/         # deterministic engine: types, scenario builder, engine, RNG\n├── llm/         # OpenAI-compatible client + scenario / thoughts / explain / report\n├── components/  # the studio, maps, panels, cards, report, setup, pages\n├── hooks/       # simulation clock + agent motion\n└── app/         # run history & persistence\n```\n\nAltiVerse has **no backend** and collects **nothing**.\n\n- Runs, saved presets, and any API key live only in your browser's\n`localStorage`\n\n. - With a\n**local** model (Ollama / LM Studio / llama.cpp),**nothing leaves your machine**. - With an\n**online** model, requests go**directly** from your browser to the provider you chose — your key is never sent anywhere else. - Works\n**fully offline** with deterministic content and no model at all.\n\n**Does it predict the future?**\nNo. It's a structured *thinking tool* for second-order effects — a way to feel out the trade-offs of a decision, not a forecast.\n\n**Do I need an API key or internet?**\nNo. It runs fully offline and deterministically. A model is optional and only adds the written prose (thoughts, headlines, reports).\n\n**Will my API key leak?**\nIt's stored only in your browser and sent only to the provider you pick. There's no backend to leak it to.\n\n**Why do two runs look identical?**\nBecause they're deterministic — same seed, same world. Hit **Reseed** to explore a variation.\n\n**Can I add my own metrics / people / environment?**\nYes — define custom metrics (up to 10), pin named characters with their own personalities, and type any environment you like.\n\n[MIT](/LeoTheAIDev/Altiverse/blob/main/LICENSE) — open source. **Fork it, change it, ship it.**\n\nBuilt with Vite · React · TypeScript — and a deterministic little universe.", "url": "https://wpnews.pro/news/show-hn-altiverse-what-if-sim-see-different-decisions-affect-an-environment", "canonical_source": "https://github.com/LeoTheAIDev/Altiverse", "published_at": "2026-06-15 22:06:41+00:00", "updated_at": "2026-06-15 22:18:21.096839+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "generative-ai", "large-language-models", "developer-tools"], "entities": ["LeoTheAIDev", "AltiVerse", "Node.js", "Ollama", "LM Studio", "llama.cpp", "OpenAI", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/show-hn-altiverse-what-if-sim-see-different-decisions-affect-an-environment", "markdown": "https://wpnews.pro/news/show-hn-altiverse-what-if-sim-see-different-decisions-affect-an-environment.md", "text": "https://wpnews.pro/news/show-hn-altiverse-what-if-sim-see-different-decisions-affect-an-environment.txt", "jsonld": "https://wpnews.pro/news/show-hn-altiverse-what-if-sim-see-different-decisions-affect-an-environment.jsonld"}}