Get started
Read this page top to bottom. Each step links to the page with the detail, but you can do the whole first hour from this page alone.
A mind for each character. You give a character three things: a personality, a list of what they can do, and a list of what they must never do. From there they notice what happens to them, remember it, form plans and act on them, reacting to the player and to each other. Reflexes, memory and acting run inside your build. Planning is a small hosted call, made only when something worth planning about happens.
pipx install https://canonopy.com/dl/canonopy-0.1.5-py3-none-any.whl
lw init
lw dev --mock
lw init writes lw.manifest.json and lw.env into your folder. lw dev --mock starts the brain and a small town with four named characters and no engine. In a second terminal:
lw trigger theft --char hulda --value 40
You will see the chain: the line lands in Hulda's journal, the gate classes it as a theft, the deliberator wakes, composes a plan, ranks it, and step one fires. Then:
lw watch who is doing what, live
lw why hulda the receipt: what she believed, what she chose, why
Try your own sentence: lw trigger raw "made away with the contents of my till" --char adrianne. Phrasing does not matter; meaning does. lw dev --down stops everything.
→ Every command: the lw CLI
The package carries an MCP server, so an agent working in your repo can drive the brain and read these docs itself instead of you relaying. One line registers it once lw is installed:
claude mcp add lw -- lw mcp
Any other MCP client takes the same server as a command: {"mcpServers": {"lw": {"command": "lw", "args": ["mcp"]}}} in its config.
From then on the agent has twelve tools. It can read every page of these docs (lw_docs), check your manifest and explain a load error (lw_manifest_check), start from a running town and plant an event, give an order, watch the cast and read a receipt (lw_perceive, lw_command, lw_trigger, lw_watch, lw_mind), see what the flywheel has queued and how a retrain is going, and request a verb you do not have yet. So "wire my engine's state feed to this" or "why did Hulda refuse to serve the player" are questions it answers from the same pages and the same receipts you would use.
Two things are deliberately not tools: sending captured moments up (lw sync --send) and requesting a retrain (lw train). Those are yours to do at the terminal.
Your engine does three things. It sends a state feed on one websocket several times a second: where the player and each character are, who is armed. It executes two commands that come back on the same socket: move this character like this (loadScenario), say this (say). And it tells characters what happened through one HTTP call, in plain words: "the newcomer took a purse right off me".
A first adapter needs eight movements your engine can already do: walk to, approach and face, follow, hold and watch, back off, flee, square up, speak. That covers every reflex and every shipped plan.
→ Field by field, with the exact JSON: Wiring your engine → A finished adapter to copy: Unity runtime
lw watch shows every character's rung, what they are doing, the open plan and its step, and warns loudly (LW4001) if a character wants something and never gets to do it. lw why <name> explains any single decision. The same stream is an HTTP endpoint you can wire to a debug overlay.
To ship: lw licence activate <key> fetches your local weights and points the build at the hosted deliberator; lw bundle --target windows --build-key <key> packs the brain as one folder your installer carries and your game launches (the player installs nothing). When the trial ends, lw licence subscribe ($20 a month) turns the same key into the paid licence. Reflexes, memory and acting stay on the player's machine; one small request per wake goes out. If the licence lapses, characters lose the ability to plan and to be emergent; reflexes keep running, nothing breaks.
→ Receipts, field by field: Receipts v1 Captured moments (never text) improve your own weights on request and, pooled with everyone else's as agreed at signup, the base every new studio starts from.
→ Licensing, the flywheel, retrains and new verbs: the lw CLI §07 and §08
Three different gaps look alike from outside: a character "won't do the thing".
| the brain says | it means | you do |
|---|---|---|
CANNOT execute here: sit in the load report | your adapter has no body for that verb | bind the engine action |
LW2011 plan step unreachable in lw watch | no verb in that character's can reaches the movement | add the verb to can, or request the verb |
lw escalations growing in a lane | the brain was unsure, repeatedly (the character still reacted; what was unsure is the class or the reflex) | lw train <lane> --propose; weights or receipts come back, never anything worse than what you have. New wording is never the cause: the gate reads meaning |
| a movement no verb covers | the vocabulary lacks the body | lw verbs request <name> --looks-like ... --wrong-when ...; we build and train it, and once released the planner can choose it on its own |
Nothing here is a config flag you have to guess at, and nothing is silent.