Metadata-Version: 2.4
Name: cabin-fever-x86
Version: 0.0.1a4
Summary: A shared game night with an AI companion over a simulated radio: play old text adventures together. Runs the game inside a sandbox VM, on any platform.
Keywords: text-adventure,interactive-fiction,zmachine,llm
Author: Adam Fourney
Author-email: Adam Fourney <adam.fourney@gmail.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Games/Entertainment
Requires-Dist: quick-sandbox[qemu,agent]
Requires-Dist: pip
Requires-Dist: packaging
Requires-Dist: pyyaml
Requires-Python: >=3.11
Project-URL: Homepage, https://github.com/afourney/cabin-fever-x86
Project-URL: Repository, https://github.com/afourney/cabin-fever-x86
Project-URL: Issues, https://github.com/afourney/cabin-fever-x86/issues
Description-Content-Type: text/markdown

# Cabin Fever: x86

![Cabin Fever x86](https://raw.githubusercontent.com/afourney/cabin-fever-x86/main/imgs/cabin-fever-x86.png)

The books are finished. The rain isn’t. Somewhere deep in the Olympic Peninsula, a solitary operator is holed up in a remote cabin with no internet, no cell service, and no particular hope of going outside anytime soon. Every book on the shelves has been read—some of them several times. All that remains is a beige 1990s PC, a pile of ancient text adventures, and a VHF radio that can just reach one other voice through a repeater on a distant peak: yours. And old games are always more fun with a friend.

**Cabin Fever x86** is a shared game night with an AI companion over a simulated radio. You explore old text adventures together, trading ideas, debating questionable decisions, and occasionally doing something foolish just to see what happens. The game is only part of the fun—the rest is the banter, the arguments, the running jokes, and the personality on the other end of the channel.

Under the hood, Cabin Fever x86 uses GPT-5.4 for inference, ElevenLabs for voice synthesis and recognition, and [jericho](https://github.com/microsoft/jericho) for Z-machine game emulation.

## Demo

[![Cabin Fever: x86 -- Text Adventures, Over Radio, with AI](https://raw.githubusercontent.com/afourney/cabin-fever-x86/main/imgs/video_thumbnail.png)](https://www.youtube.com/watch?v=hskavCVqhhQ)

**Note:** This demo captures a real gameplay session. The female voice is the AI radio operator built into the experience. The male voice is the human player, re-voiced in post-production using a different ElevenLabs voice to preserve anonymity. That overdub is not generated by the game itself.

## Installation from PyPI

The fastest and most convenient way to get started is to use this launcher package, which runs the game inside a QEMU sandbox VM. It works on Linux, macOS, and Windows, is self-contained, and is a convenient alternative to Docker or other containers.

```bash
# Create a virtual environment (optional, but recommended)
python3 -m venv .venv

# Activate it on Linux or macOS
source .venv/bin/activate

# On Windows Command Prompt, use this instead:
# .venv\Scripts\activate.bat

# On Windows PowerShell, use this instead:
# .venv\Scripts\Activate.ps1

# Install the launcher package
pip install cabin-fever-x86

# Export your OpenAI and ElevenLabs API keys in the shell
export OPENAI_API_KEY=...
export ELEVENLABS_API_KEY=...

# Run the game
cabin-fever-x86
```

Then visit the URL printed in the terminal (typically [http://127.0.0.1:8000](http://127.0.0.1:8000)) to start playing.

> [!NOTE]
> The first run downloads and prepares the virtual machine, so it takes longer than later runs.
>
> If you ever want to reset the virtual machine (e.g., to force an update of the game, or to troubleshoot a problem), you can run `cabin-fever-x86 --rebuild`.

The forwarded web port is bound to `127.0.0.1`. To make the radio available on a LAN, run [`cabin-fever-x86-core`](https://pypi.org/project/cabin-fever-x86-core/) directly on a Linux host instead.

## Installation from GitHub

To install the current development version from GitHub, replace the PyPI install command with:

```bash
pip install "https://github.com/afourney/cabin-fever-x86/archive/refs/heads/main.tar.gz#subdirectory=packages/cabin-fever-x86"
```

## Z-machine games

The server fetches Z-machine games on first run. On startup it looks in `<cabin-fever-home>/data/games/`; if there is nothing playable there, it downloads the [z-machine-games](https://github.com/BYU-PCCL/z-machine-games) archive and unpacks only the 57 titles in its `jericho-game-suite` folder.

`<cabin-fever-home>` is the directory where the launcher stores its data. By default, this is `~/.config/cabin-fever-x86/` on Linux and WSL, `%APPDATA%\cabin-fever-x86\` on Windows, and `~/Library/Application Support/cabin-fever-x86/` on macOS.

To add games, copy `.z3`–`.z8` files into `<cabin-fever-home>/data/games/`. The server detects them the next time it starts.

## Development

See the [repository README](https://github.com/afourney/cabin-fever-x86#development) for development setup and source-tree usage.
