# Show Me The Story: one Go binary that plans batches and waits for you to accept a chapter

> Nigh/show-me-the-story is a self-hosted long fiction writer that ships as a single executable under 5 MB, plans up to 36 chapters per batch, and keeps every project in a directory you choose. It is a drafting machine with a review gate, not an autonomous author.

**Nigh/show-me-the-story** — Self-hosted AI novel generator: single Go binary + web UI. OpenAI-compatible API → outline → chapter-by-chapter writing with review, foreshadowing, fact-check, and full-book polish. Chinese &  English.

- Repository: https://github.com/Nigh/show-me-the-story
- Stars: 607 · Forks: 74
- Language: Go
- License: MIT
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/nigh-show-me-the-story

## One executable under 5 MB, and a data directory you choose

The whole application is a single executable under 5 MB. The browser assets and the built-in skills are embedded in that binary, so there is no separate server, no database to install, and no Node runtime on the machine that runs the writing. At launch the data directory defaults to the working directory, and you can hand the program an existing directory instead:

```bash
./show-me-the-story
./show-me-the-story /path/to/existing/novels
```

Windows users double-click the executable or pass a path:

```powershell
.\show-me-the-story.exe "D:\Novels"
```

An invalid directory argument falls back to the working directory rather than aborting, which means a typo in the path gives you a second, unexpected library rather than an error message. The project directory is printed at startup, so that printed line is the thing to read first. The port is 48090 and the `PORT` environment variable overrides it; the interface is reached at `http://localhost:48090`.

## Configuration wants the exact model identifier your provider gave you

Configuration takes three values: the API address, the model identifier, and the API key. You test the connection before saving, and the identifier has to be the exact one your provider supplies, since the app talks to an OpenAI-compatible endpoint rather than translating provider names. Keys land in `api.json` inside the data directory, so that file is a credential and belongs with the same care as any other secret. The setup part of the user guide also covers context and output limits, which is where a local binary of this size meets a hosted endpoint's constraints.

Files stay on your disk, but every AI operation sends relevant prose, settings, and prompts to the model service you configured, and that service may charge for usage. The project asks for a trusted local environment rather than a machine exposed to the public internet.

## Outlines are planned in batches of up to 36 chapters

The Outline stage takes a synopsis and a chapter count between 1 and 36 for the first batch. You generate it, read it, and confirm before any prose exists; if the page offers Confirm outline, that confirmation is the point where the plan becomes binding. Auto-confirm exists and is off, and the recommended first run is a small batch with auto-confirm disabled so you can judge voice, characters, and model behavior before spending a full plan. Later work covers adding chapters, replacing a batch that has not been written yet, and planning an ending, with planning reviews sitting beside the outline rather than inside the prose loop.

## A chapter only counts once you accept it

The Writing stage is a loop with a stop: generate one chapter, read it, revise it, then accept it before continuing. Nothing downstream sees an unaccepted draft, which is what keeps an early misfire from propagating into a hundred pages. Output streams while a task runs, so a long generation shows progress rather than freezing the tab, and cancellation is available mid-task. Paragraph editing and targeted revision operate on text you have already accepted. Proofreading is separate and runs at the end of the book, with per-chapter proofreading undo behind it, and text, outline, and report exports are available when you want the work out.

## Back up ZIP restores into a new project and leaves your globals behind

After tasks finish, Back up ZIP in the project list downloads a complete project. Restore a project backup recreates it as a new project and never overwrites the original, so a restore is a copy rather than an undo, and a bad restore costs you disk rather than chapters. Two things are deliberately excluded from the archive: global API configuration and user Skills. The credentials in `api.json` and your saved skills do not travel with the ZIP, so move them separately when you migrate. Projects live in `storys/<project>/` inside the data directory, which makes that one directory the unit you copy between machines, and you must stop tasks and close the program before copying it.

## The rollback journal is not version history

After an interrupted prose or progress save, reopening a project attempts to restore the last complete save. Damaged chapter files or a failed recovery keep the project from opening and show diagnostics instead of quietly loading partial text. That recovery depends on `progress.json.rollback` sitting next to the rest of the project directory, so preserve the whole directory rather than only the chapter files you care about. The journal is explicitly not version history and not a replacement for regular backups, and the project asks that you not run multiple writers against one project at the same time. That last rule is on you: the application does not arbitrate two copies writing the same chapter.

## Consistency checks read your story context, not the web

Consistency checks primarily use your story context, and they are not online research. The checker works from the characters, worldview entries, organizations, relationship graphs, and story knowledge you entered, plus the prose you accepted. The payoff is that the checks stay inside rules that may be realistic or entirely fictional, so an invented world is checked against itself instead of against real facts. The cost is symmetrical: a mistake already written into an accepted chapter is part of that context too, and correcting it is a knowledge and corrections step rather than something the checker will infer. Extracted facts come back with source references, setting-change proposals are offered separately from foreshadow tracking, and reviewing model output stays the author's job.

## This build opens v4 projects only, and the format number is not yours to edit

The release you download opens v4 projects. Older formats need the version the project list recommends, and the format number is not meant to be hand-edited, so a novel started under an earlier build can stop opening after an upgrade unless you keep that older executable around. The pace of change is visible in the tag list: v3.0.3 on 2026-08-30, v4.0.0 on 2026-09-10, and v4.0.1 on 2026-09-15, with the repository last pushed on 2026-09-25 and not archived. Underneath, it is a Go 1.25.1 module named `showmethestory` that requires nothing, with a Svelte 4 and Vite 5 frontend built by `task build` or by `npm install` and `go build`, and `AGENTS.md` and `DESIGN.md` holding the architecture and product notes.

## Conclusion

Use it if you write long form, work from a self-hosted machine, and want an API model held to a review gate instead of set loose on your novel. Skip it if you need a finished first draft in one pass, if you cannot supply your own OpenAI-compatible endpoint and key, or if you will not stop the app before copying its data directory. Before starting a book that matters, generate one chapter, read it closely, and confirm that the restore and backup paths behave the way your workflow expects.

## FAQ

### What port does Show Me The Story listen on?

48090 by default, and the PORT environment variable overrides it. The web interface is then reached at http://localhost:48090.

### Where does Show Me The Story keep my novel files?

In the data directory, which defaults to the working directory at launch and can be set to an existing directory you pass on the command line. Projects inside it live at storys/<project>/, and the directory in effect is printed at startup.

### Can Show Me The Story open a project I started on an older version?

Not with this build, which opens v4 projects only. Use the version recommended by the project list for older formats, and leave the format number alone rather than editing it by hand.

### Does restoring a Show Me The Story backup overwrite the original project?

No. Restore a project backup brings the project back as a new project without overwriting the original. Global API configuration and user Skills are excluded from backups, so preserve those separately when you migrate.

### Does Show Me The Story fact-check my novel against the internet?

No. Consistency checks primarily use your story context rather than online research. Your prose, settings, and prompts are still sent to whichever model service you configured, which may charge for usage.

## Sources

- [Issues](https://github.com/Nigh/show-me-the-story/issues)
- [License: MIT](https://github.com/Nigh/show-me-the-story/blob/main/LICENSE)
- [Nigh/show-me-the-story on GitHub](https://github.com/Nigh/show-me-the-story)
- [README](https://github.com/Nigh/show-me-the-story/blob/main/README.md)
- [Releases](https://github.com/Nigh/show-me-the-story/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/nigh-show-me-the-story
