Infinite Quest

A single-page OpenRouter-powered choose-your-own-adventure story engine.

No adventure yet

Turn 0 Viewing latest Ready
🗝️

Create a world, then begin.

The engine will write a scene, produce an illustration prompt and image, offer four choices, keep a hidden scratchpad, and update your custom trackers.

Waiting for response.

Notice

Getting Started

Choose how you want Infinite Quest to connect to OpenRouter.

You can paste your own OpenRouter API key, or use the Community API Key, which is limited to free models.

Model Settings

Set your OpenRouter key, model preferences, and image generation options.

This is a purely client-side app. Calls go directly from your browser to OpenRouter; no key is sent anywhere else by this file.

When enabled, the story model list shows Curated Free Mix, openrouter/free, and models ending in :free; the image model list shows Pollinations.ai, AI Horde+SVG Placeholder, AI Horde, and SVG mode. Pollinations.ai is the default free image generator.

When enabled, OpenRouter receives the selected Story LLM first, followed by Fallback 1 and Fallback 2 as backup text models.

Pollinations.ai generates a free square image directly from the scene prompt. SVG mode asks the selected Story LLM to return a standalone vector illustration; the SVG is validated, stripped of scripts and external resources, and displayed directly in the story. AI Horde+SVG Placeholder launches the SVG request and AI Horde request together, shows a notice that you can keep playing while both generate, and lets you swap between the latest available versions. SVG generation uses one additional Story LLM request per image.

Anonymous access is available. A personal AI Horde key can improve queue priority and retrieval reliability depending on kudos, but it does not make the same model inherently more attractive. Higher quality, upscaling, and multiple candidates can use more kudos and take longer.

Choose an AI Horde Image

Select the image to use for this story turn. The story remains saved while you decide.

World Set Up

Create, import, save, or start the world for your story.

Load a sample world

Choose one to fill the setup fields, then click Start New Adventure when you are ready.

Give the LLM a sparse seed or a detailed brief. It will fill in the genre, tone, player character, premise, style guide, and any optional generated RPG stats or trackers.

Save, copy, or share only the world setup: title, genre, tone, background story, player character, premise, first action, style guide, RPG stats, default trackers, event triggers, and trigger suppression setting. Load accepts saved .world JSON, .story JSON, or Infinite Worlds JSON exports; multi-character Infinite Worlds JSON opens a no-LLM character picker first. Storyteller mode, response editing, text-truncation preference, Turn Saver Mode, memory settings, RPG options, triggers, and trackers are included. Story turns, current run state, generated pictures, and API keys are not included in .world saves.

Edit State

Edit the scratchpad, current trackers, and history view.

The LLM updates this private continuity scratchpad after every turn. This editor shows the scratchpad for the turn currently being viewed, so past turns can be inspected or edited without changing later turns.

Generate world setup

Describe the adventure you want. A few words is enough; more detail gives the LLM more to preserve.

Leave unchecked to leave trackers blank for the generated setup. When checked, the generator creates tailored default trackers for the new setup.

Leave unchecked for a purely narrative game. When checked, the generator fills RPG percentile stats and enables stat rolls.

Choose RPG roll

Choose the stat and difficulty for this action. The d100 result will still be rolled automatically.

Action being taken

Stat

Select the percentile stat that best applies.

Difficulty

Select the modifier applied to the chosen stat.

Name Correction

Replace recurring LLM-favored names after text generation and before the result is shown.

Correction mode

Replacement method

Additional names to replace

Add personal given names or family names that are not in the bundled common-LLM lists. Separate entries with commas, semicolons, or new lines. These names are saved with the story and are included automatically in the 1-for-1 table.

Rotating mapping history

Existing destination names in the current story are skipped. Each category uses the maximum unique Faker pool available, capped at 200, and loops after that category is exhausted.

Current status

Name correction is off.

Choose a player character

Pick one of the generated or imported characters. The selected description will fill the Player character textbox in World Set Up.

Edit image prompt

Adjust the illustration prompt for this turn, then regenerate only the image. The story text and choices will stay the same.

Edit Response

Edit the narration for the turn you are currently viewing. Saving replaces the text for that turn.

Load world from text

Paste JSON from a saved .world file, a .story file, or an Infinite Worlds JSON export, then load it into the world fields, RPG stats, and default trackers.

Load shared world?

This page URL includes a shared world. Review it below before replacing your current world setup.

Are you sure you would like to load this world and replace the current world setup?

This will replace the title, genre, tone, background story, player character, premise, first action, story rules, RPG stats, default trackers, event triggers, and trigger suppression setting. If you start a new adventure, existing story turns will be deleted; otherwise they will remain, but they may no longer match the loaded world.

Title

Genre

Tone

Background Story

Player character

Premise and starting situation

First Action

Start a new adventure?

Loading this shared world and starting a new adventure will delete your current adventure.

Starting a new adventure will delete the current adventure/story turns and replace them with a new adventure based on this shared world.

Are you sure you want to proceed?

Import from Infinite Worlds

Load Infinite Worlds worlds from raw JSON, import an in-progress story from its text export, or use the legacy LLM-based world converter for copied page text.

Recommended for worlds: use the direct raw-JSON loaders below. For stories, Quick Story Import avoids per-turn LLM calls; the detailed Load Story importer and legacy world converter can take several minutes.

Load an Infinite Worlds World (Recommended)

Use Infinite Worlds' raw JSON export to load a world directly without asking an LLM to convert it:

  1. In Infinite Worlds, find the world you want, click Edit World, and select Show optional features.
  2. Open Misc advanced features (optional), then click Show raw JSON.
  3. Copy the JSON that appears. Choose Load world from text below to paste it, or save it as a JSON/text file and choose Load world from file.
  4. Confirm the prompts to load the world. If the world offers multiple player characters, the character-selection screen will appear. Source-defined opening choices or setup questions are resolved locally during import when possible.

Load an In-Progress Story

First load the Infinite Worlds world associated with the story, then export the story as a text file:

  1. Inside Infinite Worlds, open a story you have already played and click Menu.
  2. In the thin pop-up containing the story options, choose Export Story near the bottom.
  3. On the Export Story screen, check Text under Output and uncheck every other output option.
  4. Click Ok to create the text file.
  5. Click Quick Story Import for the fast direct import, or Load Story for the detailed per-turn LLM import, then select the resulting text file.

Quick Story Import copies every exported action and outcome directly, automatically loads the Character section into the World Setup player-character field, and makes only one Story LLM request: four continuation options plus an image prompt for the final imported turn. Earlier turns keep their image and four options blank.

Load Story is the detailed importer. It asks the current Story LLM for metadata on every turn and may generate an image for every turn, so long stories can take several minutes. See the Infinite Quest release notes for additional details.

Legacy World Conversion

In Infinite Worlds, open the world editor, uncollapse every part of the entire page, select all, and copy all the text. Save that copied text into a .txt file.

This legacy method asks the current Story LLM to convert the copied page text into Infinite Quest fields. Direct raw-JSON loading above is faster and more reliable.