Deterministic Zork-style text adventure authoring and runtime CLI
Project description
A Zork-style text adventure generator. Describe a world to any LLM, get back a complete game, and play it on a fully deterministic engine — no AI needed at runtime.
Quickstart · Features · How It Works · Docs · Contributing
Install
Requires Python 3.11+
The recommended way to install AnyZork is with pipx, which gives you an isolated environment and puts the anyzork command on your PATH:
pipx install anyzork
To enable Narrator Mode (optional LLM-powered prose), install with the narrator extra:
pipx install 'anyzork[narrator]'
Upgrade to the latest release:
pipx upgrade anyzork
Alternative: install with pip
If you prefer a regular pip install into a virtual environment:
pip install anyzork # core only
pip install 'anyzork[narrator]' # with narrator providers
Homebrew: A Homebrew formula is not available yet. We want to prove out the Python packaging path first and will revisit Homebrew support once the release cadence is stable.
Quickstart
Browse and play a community game:
anyzork browse # see what's available
anyzork install haunted-lighthouse # add it to your library
anyzork play haunted-lighthouse # start playing
Make your own:
anyzork generate "haunted lighthouse on a cliff"
# prompt is copied to your clipboard — paste it into any LLM
# paste the LLM's full response back into the terminal
# AnyZork auto-compiles and adds it to your library
anyzork play haunted-lighthouse-on-a-cliff
Features
Make Your Own Game — Generate a prompt, paste it into any LLM to get ZorkScript, then compile and play. A guided wizard or a one-liner gets you started.
Playing Games — Play local files or library games, manage named save slots, and list your collection.
Narrator Mode — An optional live-LLM layer that rewrites room descriptions and event text without touching game state. Supports Claude, OpenAI, and Gemini.
Sharing Games — Publish games to the official catalog, browse community submissions, and install with a single command.
Docs
| Doc | What it covers |
|---|---|
| Game Design Document | Mechanics, design constraints, and motivation |
| System Architecture | Components, commands, and runtime model |
| World Schema | .zork database reference |
| ZorkScript Spec | Authoring language reference |
| Command DSL Spec | Runtime rule vocabulary |
| Author Tooling | Lint and import diagnostics design |
| CLI Reference | All commands, flags, and options |
| Configuration | Config file, env vars, and provider setup |
| Narrator Mode | Optional LLM prose layer |
| Sharing Games | Publishing, browsing, and installing |
| ADR-001: SQLite Storage | Original SQLite rationale (superseded — .zork files are now zip archives) |
| Roadmap | Ordered plan and milestone tracking |
How It Works
- Generate —
anyzork generatebuilds a structured prompt from your idea and copies it to your clipboard. - Author — Paste the prompt into any LLM. It returns ZorkScript — a human-readable DSL for rooms, items, NPCs, puzzles, dialogue trees, and commands.
- Compile — Paste the LLM's response back into the terminal. AnyZork compiles ZorkScript into a
.zorkarchive automatically. Lint and validation catch errors before you play. - Play — The deterministic engine evaluates commands, preconditions, and effects with no LLM involved. Game state is always consistent and reproducible.
The optional Narrator Mode adds an LLM prose layer on top — it rewrites descriptions for atmosphere but never touches game state.
Contributing
MIT-licensed, solo-maintained. Issues and PRs welcome — small focused changes and clear bug reports are easiest to review.
Development
For contributors working on AnyZork itself:
git clone https://github.com/oobagi/anyzork.git
cd anyzork
python3.11 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,narrator,catalog]"
ruff check .
pytest -q
License
MIT
Project details
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 anyzork-0.2.2.tar.gz.
File metadata
- Download URL: anyzork-0.2.2.tar.gz
- Upload date:
- Size: 887.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bb71fce04dcccbd21e4a6ec647e4e3c96479607ed4615957c37ed59b848669e
|
|
| MD5 |
ea585dba12992a4382859a135d5a8f67
|
|
| BLAKE2b-256 |
6424818dbad7d6846a3ece11414409458317ee85e45b6fa67168c2b75c1e80b5
|
Provenance
The following attestation bundles were made for anyzork-0.2.2.tar.gz:
Publisher:
publish.yml on oobagi/anyzork
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
anyzork-0.2.2.tar.gz -
Subject digest:
7bb71fce04dcccbd21e4a6ec647e4e3c96479607ed4615957c37ed59b848669e - Sigstore transparency entry: 1188989497
- Sigstore integration time:
-
Permalink:
oobagi/anyzork@75e69c8b1efd43f4b5f9c7e18ef0a83e7b01786c -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/oobagi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@75e69c8b1efd43f4b5f9c7e18ef0a83e7b01786c -
Trigger Event:
release
-
Statement type:
File details
Details for the file anyzork-0.2.2-py3-none-any.whl.
File metadata
- Download URL: anyzork-0.2.2-py3-none-any.whl
- Upload date:
- Size: 914.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6bc63b59b85fc4904b287c0779424d5a83adaadf0a1ded8d68d9dcbc178772d
|
|
| MD5 |
e7c85570f620175d2a5c2ef1c8c24922
|
|
| BLAKE2b-256 |
f652c303c2f8fe3c50f08e4d41e1cd5f76a8f91c13151599721152510b2deda9
|
Provenance
The following attestation bundles were made for anyzork-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on oobagi/anyzork
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
anyzork-0.2.2-py3-none-any.whl -
Subject digest:
c6bc63b59b85fc4904b287c0779424d5a83adaadf0a1ded8d68d9dcbc178772d - Sigstore transparency entry: 1188989500
- Sigstore integration time:
-
Permalink:
oobagi/anyzork@75e69c8b1efd43f4b5f9c7e18ef0a83e7b01786c -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/oobagi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@75e69c8b1efd43f4b5f9c7e18ef0a83e7b01786c -
Trigger Event:
release
-
Statement type: