Andrew Edmark / Oopis McGoopis LLC

What is OopisMcGoopis?

We are an entity that builds strange, honest machines.

Hi. I'm Andrew, the human responsible for the contents of this site. For the last year or so, I've been building things. Things like language-model harnesses with a simulated metabolism. Procedural liminal spaces that generate their own textures, sound, and cold cases. A screenwriting app that stays out of the way. A therapy game ported, for real, to a 1989 Sierra adventure engine. Mostly Python and JavaScript, always with no build step where I can help it, and always Honest about limitations.

01

How I work

Honest limits

Every README has a section that says what the thing does not do. BoneAmanita's says, in its own words, that it is a prompt builder wearing physics names, and ships audit scripts so you can check.

No build step if I can help it

plainchant, the Trauma Response Simulator, Level 0 and the Hypervisor all run from static files. Fewer moving parts means fewer places for a silent failure to hide.

Metaphor as an interface

ATP, cortisol, the Village, a coping mechanism, a blast door. Names that tell you what a number is for, backed by measurement of what it actually does.

02

Selected work

Game preservation · C++20 · native Linux

Noctis IV OM

A native hybrid of Noctis IV Plus and Noctis IV LR, preserving a cult procedural space-exploration game without sanding away what makes it Noctis.

OM brings the deterministic galaxy, interstellar flight, planetary landings and surface exploration of Noctis IV into a maintainable C++20 codebase, then restores the Plus branch's bug fixes, content and quality-of-life features—including its Moviemaker. The work is driven by pinned historical sources, exact compatibility fixtures and written decisions instead of visual guesswork.

  • Preservation with evidence. Exact fixtures cover galaxy and system generation, rendering, travel, landing, surfaces, saves and the GOESnet database.
  • Safer native boundaries. Versioned, checksummed saves and bounded legacy imports replace fragile binary workflows while preserving old player data.
  • Repeatable engineering. The complete 38-test suite agrees across Clang, GCC and Clang with AddressSanitizer and UndefinedBehaviorSanitizer.
  • Honest platform scope. Linux is verified today. Windows remains a stated milestone, not a support claim, until its MSVC build and runtime evidence exist.
  • C++20
  • CMake / CTest
  • Raylib
  • Deterministic fixtures
  • ASan / UBSan

38 tests · 3 Linux validation lanes · 2 Noctis lineages reunited

Game engine · JavaScript · WebGL

Level 0 Engine

A procedural engine meant to generate mathematically distinct liminal spaces. No image files, no audio files, no bundler.

A first-person survival horror set in an office building that should not exist. The maze is carved from Julia-set fractals and split into eleven sealed sectors (Incinerator, Boardroom, Archive, Server Farm, Clinic…), each with its own geometry, fog, reverb and foley. Textures are synthesised at load time and cached as WebP; every sound comes from a custom Web Audio DSP, with raycast occlusion so walls actually muffle things.

  • Seeded cold cases. Documents make claims, claims need corroboration across sectors, and the exit asks you to file a verdict. Get it wrong and the seed mutates and rebuilds reality.
  • Hazards with memory. A roaming Anomaly with line-of-sight hunting, plus five sector-locked entities. Your flashlight cone freezes them, briefly: an "observer effect".
  • Engineering under the fear. O(1) spatial-hash collision, zero-allocation scratch vectors for stable frame lows, 32 hardware shadow casters, parallel shader compilation.
  • A zero-dependency Lore Editor so narrative payloads can be authored without touching code.
  • Three.js r160
  • Web Audio API
  • ES modules
  • IndexedDB
  • Procedural generation

11 sectors · 6 entity types · 0 external assets

Prompt architecture · plain text · any cloud model

The Hypervisor

A raw-text harness for large language models and agentic AI. BoneAmanita with the math taken out, so it can be pasted into any system prompt.

Cloud models cannot run a background loop, so the Hypervisor reads the context window instead and infers exhaustion, chaos and connection from it. Conversations run on a hidden battery: holding contradictions drains it, rest recharges it, and running it dry sheds recent low-relevance memory and leaves a scar. Four voices (Gordon the custodian, Mercy the humanist, Benedict the detective, Jester the bard) argue over who answers, and a Stage Manager decides.

  • Version 7 is the leanest since version 2. Six versions of accretion were cut back to what earns its keep in a real conversation.
  • Mod Chips. Drop-in specialist modules (code review, editing, research, worldbuilding, puzzle logic) that inherit the core biology automatically.
  • Built to say no. The worked example is a team refusing to build a twelve-node cluster for an undefined "ideation pipeline" until someone can say what data moves where.
  • Markdown
  • System prompts
  • ChatGPT / Claude / Gemini
  • AI governance

Writing tool · vanilla JS · offline-first

plainchant

Screenwriting without the formatting. You type plain Fountain text; the app handles structure, layout and output.

A two-pane editor with a live screenplay preview that collapses to one pane on a phone. Tab cycles element types, Enter does the right thing, scene headings and character cues uppercase themselves, and character and location names autocomplete. The library gives you search, rename, duplicate and a thirty-day recovery bin, because the second rule of the project is never lose words.

  • Plain text is the source. Open Fountain format, no proprietary lock-in, import from Fountain, text or Markdown in several encodings.
  • No framework, no build step, no runtime dependencies. A pure, testable parser module and app scripts loaded in dependency order.
  • Designed for touch, not shrunk for it. On-screen element controls and safe keyboard handling on mobile and tablet.
  • Documented decisions. A docs/DECISIONS.md, a spec for the IndexedDB migration, and a roadmap through PWA and outline navigation.
  • Fountain
  • HTML / CSS / JS
  • Container queries
  • localStorage → IndexedDB
  • Headless browser tests

Operating system · Python in the browser

FractalOS

An AI-centric operating system built with relentless optimism and a whole lot of Python. The primary interface is a generative model, not a desktop of icons.

The kernel is Python, run in the browser through Pyodide and WebAssembly, and it owns the Unix-like virtual file system, users, permissions and sudo. The JavaScript frontend owns windows, terminals and sound. The two talk through a JSON "Effect Contract": the kernel requests an operation, the frontend executes it. Natural language goes into the shell alongside ordinary commands.

  • Real graphical apps inside it: a text editor, a paint program, and an optional "cinematic" retro display mode.
  • Two ways to run. In a browser tab, or as a standalone desktop app through Neutralinojs with native file-system access.
  • Lineage. The successor to Oopis-OS (a persistent in-browser terminal OS) and SamwiseOS (an OS for humans and AI); this one moved the kernel to Python.
  • Python / Pyodide
  • WebAssembly
  • JavaScript
  • Neutralinojs
  • Tone.js

Game · HTML / JS · Sierra SCI0

Trauma Response Simulator, web and SCI editions

The Unresolved Childhood Trauma Simulator. A turn-based game about how people cope with hard moments, disguised as a CRT-terminal therapy interface.

Three stats that can fail independently (Repression, Social Mask, Inner Child), five response types (fawn, flight, fight, freeze, secure), and you never see which response you are choosing until after you commit. Repeat one three times and it becomes a coping mechanism with permanent modifiers for the run.

There are two editions. The original runs in the browser via HTML and JavaScript, fully local with no server. The SCI Edition is a genuine, compilable port to Sierra's SCI0 engine (from 1988), pushing the interpreter's limits with 196 rooms generated from the web version's source by Node scripts. It features cross-session persistence, MIDI background music, and an EGA palette.

  • Replayable by design. Seeded and daily-challenge runs, New Game+ with doubled turns, and persistent Case Files of the 102 ending variants you have found.
  • A Field Log (web) for journaling real moments in the same five-response vocabulary, and client-side PNG result cards for sharing.
  • Author your own. A visual content-pack editor and a full JSON schema for events, endings and zones.
  • HTML / JS
  • SCI0 script
  • Node.js codegen
  • Seeded RNG
  • EGA / AdLib

196 rooms (SCI) · 102 endings · 6 zones

03

Also on GitHub

  • ALPREvaderA privacy-first routing engine on local OpenStreetMap data and PostGIS that plans paths around automated license plate readers.
  • Chidi.mdAn LLM-enabled Markdown analyzer with chat and memory.

All repositories →

05

About

I'm Andrew Edmark. I run Oopis McGoopis LLC, a one-person studio for software that is a little stranger than it needs to be and more honest than it has to be.

The projects above share a question: what happens when you give a system a body, a budget, and a way to say no? BoneAmanita asks it of a language model. Level 0 asks it of a building. The Trauma Response Simulator asks it of a person, twice, thirty-five years apart in hardware.

I'm based in the Quad Cities, on the Illinois side of the Mississippi. By day, I implement inventory solutions for industrial customers, the rest of the time I consult on and build systems with large language models. Before software there was a cinema and English degree, a decade of video work, and a stint booking bands for an Iowa City venue, which is probably why the projects above have interesting plots.

I write as Mycelial Mirror on Medium and publish games on itch.io. If you want to talk about any of this, or about working together, the details are on the right.