Ripple Effect
Version 1.6.0

The interactive narrative design tool that’s free

Ripple Effect is a desktop application for writing branching narrative. You lay passages out on a canvas, wire each choice to what it leads to, and press play to walk the result — over a folder on your own disk.

Free, and there is no account to make. Every platform, and how to install

Early days — you may still meet the odd rough edge.

What it is

An editor for stories that branch

Interactive narrative — a game’s dialogue, a visual novel, a gamebook, a tabletop campaign — is a story where the reader’s choices decide what comes next. Ripple Effect is a desktop tool for writing one, testing it, and handing it to whatever will play it.

Start
The lamp room
the-keeper-the-lamp-room
The lamp hasn’t been lit in three nights. Below the tower the bell on the reef is ringing with nobody to ring it, and the boat you came in has slipped its rope.
Climb to the lamp
Go down to the shore
Drag out for a new choice
Light in the window
The tide takes the boat

Write

A passage is prose in Markdown, set like a book, in as many languages as the story needs.

Wire

Each passage is a card on a canvas, and every choice is a wire to what it leads to.

Play, then ship

Press play to walk the story as a reader would. When it is ready, its engine plays it in your game, site or app.

Why this one

What sets it apart

Local, native, fast

Your story lives on your disk, not in a browser tab

Ripple Effect is a desktop application, and a project is a folder you already have. The app writes no scaffold into it and claims no ownership: open a directory and it is a project.

  • No account to make, and no project uploaded anywhere
  • Editing, playing and checking your spelling all happen on your machine, online or not
  • A native canvas that draws a zoomed-out board as sketches, so a big one stays quick
  • Cloud features are planned as an option, never a requirement
The Keeper — Ripple EffectOffline
~/Stories/the-keeperSaved
Scripting and game systems

The systems a game needs, built in

Entities with typed attributes, console variables and host callbacks are part of the story’s model, not a convention you rebuild in every project. Where a wire is not enough, Python is.

  • A sandboxed Python subset, in Script nodes and inside the prose itself
  • Components and entities: describe a goblin once, spawn six
  • Typed console variables, watched live while the story plays
  • Callback events that tell your game what the story just did
weather.py
# weather.py — how hard the storm blows tonight
keeper = component("Keeper")
gust = roll + keeper["nerve"]

if gust > 15:
    storm = "gale"
else:
    storm = "squall"
Keeper · entity
nerveint4
lanternbooltrue
packlist<string>[3 items]
Console variables
lamp_oilint3
stormstringsquall
bell_rungboolfalse
Fits your pipeline

Built to sit inside the tools you already use

Boards are JSON, prose is Markdown and scripts are .py — every one opens in an editor you already trust and keeps working if this app disappears. And agents, in your terminal or on your desktop, can read and edit a project through its MCP server.

  • Stable ids and relative paths, so a change reads as a change in review
  • Version control built into the editor, over the repository you already have
  • A compiled campaign is a folder a build pipeline reads without the editor
  • act-one.graph.json

    a board

  • en.md

    a passage, per language

  • weather.py

    a script

  • .git

    your repository

chapters/the-lighthouse.graph.json+6
"connections": [
{
"id": "connection_4",
"type": "default",
"from": { "nodeId": "narration_1", "portId": "choice_0" },
"to": { "nodeId": "narration_2", "portId": "in" }
},
+ {
+ "id": "connection_9",
+ "type": "default",
+ "from": { "nodeId": "narration_1", "portId": "choice_1" },
+ "to": { "nodeId": "end_0", "portId": "in" }
+ },
Go down to the shore → The tide takes the boat
Agents

Hand the folder to an agent and keep writing

Ripple Effect is an MCP server. Point Claude Code — or anything else that speaks the protocol — at the project you have open, and it works in the same folder you are working in, on the board you are looking at, while you are looking at it.

project_infoproject_outlinecatalog_findboard_readboard_linkspassage_readcomponent_readsoundscape_readdiagnostics_readtrace_betweentrace_intotranslation_statusnode_typespython_capabilitiespython_evalcampaign_startcampaign_statecampaign_choosecampaign_answercampaign_tracecampaign_autoplaycampaign_end
passage_createpassage_writecomponent_writeboard_add_passageboard_add_nodeboard_connectfile_createsaveboard_set_nodeboard_set_choiceboard_disconnectboard_remove_nodefile_movefile_deletesoundscape_setsoundscape_add_clipsoundscape_set_clipwriting_readgrammar_checkdictionary_editstyle_rule_writestyle_rule_delete

44 tools, plus nine resources and two prompts. Everything that writes is behind the second switch.

Claude
ChatGPT
Gemini
Ollama
Anything else

Two switches, both off

Agent access makes the app listen at all. Agents may edit is separate and subordinate to it. Neither is on when you install.

A socket, never a port

The server is inside the running app, reached over a local socket by a bridge the client spawns. Nothing is listening on the network.

Edits go where yours go

A board is changed through its own session, so the edit lands in your undo stack. Every write says which paths it touched, and posts to Messages.

Roadmap

What is shipped, and what is next

Each release is a pack of features with a name. The order is the order they are planned in — there are no dates here, because the honest thing to say about a version that has not started is what it is, not when it lands.

1.0

Tavern Meetup

Shipped
  • Boards on an infinite canvas, passages in every language, components with typed attributes
  • Control flow, random numbers and Python in the prose
  • Playable campaigns, script navigation, tracing every route between two passages
1.2

Mimic Chest

Shipped
  • Version control built in, with nothing to install
  • An MCP server, so an assistant you already use can read and change the project
  • In-app updates that fetch and open the right installer
1.3

Homebrew Rule

Shipped
  • The story runs without the editor: campaigns compiled for a runtime, as Markdown or HTML
  • State with no wire: console variables, state machines, gates, saved games
  • Macros, dice, an Input node, and reading time in fifty-four languages
1.4

Elven Choir

Shipped
  • Soundscapes: a timeline of music and sound a passage brings, and keeps until another replaces it
  • Sound effects from a node or from Python, and media switches on export
  • Project templates, metadata on every node, a play window that fills the app
1.5

Multiclassing

Shipped
  • The story engine in Rust, released on its own for desktop, phones and the web, with host callbacks
  • A workspace like a code editor's: docking tabs, find and replace in project, a menu bar, Zen Mode
  • Boards that say what is wrong with them, passages that take arguments, and the app in Italian
1.6

Grammar Lich

Current
  • Spelling, grammar and style rules of your own, checked on your machine, with a dictionary per project
  • Dictation on your computer by NVIDIA's Nemotron models, in English or in 32 languages
  • Countdowns on choices, and stories that read the time, where you are and the reader's language
1.7

Illusion School

Paid tier
  • Integration with the Recraft V2 API
  • LLM integration for generative narration
1.8

Party Gathering

Paid tier
  • Real-time collaboration
2.x

World Smith

Paid tier, across the 2.x releases
  • Timelines and storyboarding
  • Indoor and outdoor maps
  • World wiki

Open a folder and start writing

No account, no project scaffold, nothing written into your directory that you did not ask for.