A shared game night with an AI companion over a simulated radio: play old text adventures together.
Project description
Cabin Fever: x86
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 for Z-machine game emulation.
Demo
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
Python package
The project uses uv. Clone the repository and sync the environment:
git clone git@github.com:afourney/cabin-fever-x86.git
cd cabin-fever-x86
uv sync
Configuration
Settings live in config.yaml, which is gitignored. Start from the template:
cp config.example.yaml config.yaml
Any ${ENV_VAR_NAME} reference in the file is resolved against the environment
when it is loaded, which keeps secrets out of the file itself:
client:
host: 127.0.0.1
port: 5000
elevenlabs_api_key: ${ELEVENLABS_API_KEY}
server:
interface: 127.0.0.1
port: 5000
ai_client:
provider: openai # openai | azure | gateway
api_key: ${OPENAI_API_KEY}
cabin_events:
min_delay: 90
max_delay: 240
Then, remember to export your OpenAI and ElevenLabs API keys in the shell before running the server or any of the clients:
export OPENAI_API_KEY=...
export ELEVENLABS_API_KEY=...
Running
Three command-line entry points are installed:
| Command | Description |
|---|---|
cf86-server |
Hosts the game session. |
cf86-web |
Web client — the radio in a browser tab. |
cf86-text |
Text client — same session, typed instead of spoken. |
Run them with uv run (no need to activate the virtualenv):
uv run cf86-server
Then one of:
uv run cf86-web
uv run cf86-text
If running the web client, open the URL it prints in a browser (typically http://127.0.0.1:8000).
Z-machine games
The server fetches Z-machine games itself on first-run. On startup it looks in
data/games/, and if there is nothing playable there it downloads the
z-machine-games archive and
unpacks the 57 titles of its jericho-game-suite folder — and only those.
To do it by hand instead, or to add your own, drop .z3–.z8 files into
data/games/ and the server will leave them alone.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cabin_fever_x86-0.0.1a1.tar.gz.
File metadata
- Download URL: cabin_fever_x86-0.0.1a1.tar.gz
- Upload date:
- Size: 2.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9bede9e48d40c0c7a5a74de0b1e4c747833870649abc5f53f1aa2154d2342f7
|
|
| MD5 |
739f70e3e09edd297eee6b2e0df92866
|
|
| BLAKE2b-256 |
3b727dcf206d70f5e30177e2c803c07135d3c7651f54bdbb4c77dff61599c9a0
|
Provenance
The following attestation bundles were made for cabin_fever_x86-0.0.1a1.tar.gz:
Publisher:
release.yml on afourney/cabin-fever-x86
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cabin_fever_x86-0.0.1a1.tar.gz -
Subject digest:
b9bede9e48d40c0c7a5a74de0b1e4c747833870649abc5f53f1aa2154d2342f7 - Sigstore transparency entry: 2304531019
- Sigstore integration time:
-
Permalink:
afourney/cabin-fever-x86@7dc6770b74d425f8d906a076973ee5213bbfa629 -
Branch / Tag:
refs/tags/v0.0.1a1 - Owner: https://github.com/afourney
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7dc6770b74d425f8d906a076973ee5213bbfa629 -
Trigger Event:
push
-
Statement type:
File details
Details for the file cabin_fever_x86-0.0.1a1-py3-none-any.whl.
File metadata
- Download URL: cabin_fever_x86-0.0.1a1-py3-none-any.whl
- Upload date:
- Size: 2.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b025ae3bd9930e20196a63dc1a58c1759bf2609b2f630709a81b5b0e1ee0043
|
|
| MD5 |
56e6864647cd594b598a909c31e3d326
|
|
| BLAKE2b-256 |
d5f0ac5c8de769148ca82500d248f6cfe35c89fb4896e2cec234b360e4228f6d
|
Provenance
The following attestation bundles were made for cabin_fever_x86-0.0.1a1-py3-none-any.whl:
Publisher:
release.yml on afourney/cabin-fever-x86
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cabin_fever_x86-0.0.1a1-py3-none-any.whl -
Subject digest:
9b025ae3bd9930e20196a63dc1a58c1759bf2609b2f630709a81b5b0e1ee0043 - Sigstore transparency entry: 2304531074
- Sigstore integration time:
-
Permalink:
afourney/cabin-fever-x86@7dc6770b74d425f8d906a076973ee5213bbfa629 -
Branch / Tag:
refs/tags/v0.0.1a1 - Owner: https://github.com/afourney
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7dc6770b74d425f8d906a076973ee5213bbfa629 -
Trigger Event:
push
-
Statement type: