Kinloom 1.0: An Open-Source SDK for AI NPCs in Any Engine That Keeps Working With No Model

Introduction
Korrocorp has released Kinloom 1.0, a free MIT-licensed SDK that drops LLM-driven NPCs, per-frame decisions and generated content into almost any game engine, and keeps the game running when no model is available. The v1.0.0 release went up on GitHub at KorroAi/kinloom on October 30 at about 21:55 MYT, with the kinloom package landing on PyPI two hours later and a launch post on the Korrocorp devlog. You can pip install kinloom and run it today against Claude, OpenAI, DeepSeek, Gemini, OpenRouter, any OpenAI-compatible endpoint, a local Ollama or LM Studio model, or no model at all.
The pitch is narrow and practical. Most "AI NPC" demos fall over the second the API key is missing or the model says something the game can't parse. Kinloom makes you describe every answer by giving an example, checks the model's reply against that example, and hands the game only what passes. If the key, the network or the model fails, your example is the answer.
What shipped
- Tool: Kinloom 1.0
- Vendor: Korrocorp (korrocorp.com)
- Modality: runtime game AI: talking characters, per-frame decisions, generated items, quests and levels, and tool calls into your game's own functions
- Open vs API: open source, MIT. Bring your own model, hosted or local
- Where to run it today:
pip install kinloom(alsouv tool install kinloomorpipx), or copy one client file per engine from the release zips - Concrete fact: one dependency-free client file each for C#, GDScript, TypeScript/JavaScript, C++17, Rust, Java, Lua and Python, all checked against the same conformance scenario
The calls
Kinloom doesn't know anything about your game. You pick a call by what the game needs back:
chatholds a streamed, in-character conversation, about one second per replysayandremarkgive a line when something happens, from lines you wrote ahead and filled with your factsdecidereturns a choice or numbers every frame, instantly, from a cached answer refreshed in the backgroundcreatemakes content of any shape, like an item, quest, level or name, in about one to two secondsactlets the model use your game's functions, such as giving an item or starting a fight, and only valid calls with the right argument shape get throughevent,knows,opinionandreputationtrack who saw what, so rumors spread and grudges stick, all computed locallymindandthinkrun many units on local rules with no model call, and the model rewrites those rules as they learn
Characters are declared from one sentence, a "soul", and get moods, per-person feelings, lasting memories and secrets that are guarded in code rather than only in the prompt. converse lets two NPCs talk to each other in a single model call, and suggest produces reply choices for gamepad, mobile or VR players who can't type.
Engines and modes
The Godot 4 addon ships AIDialogue, AICharacter and AIMind nodes, and Unity gets a KinloomDialogue component. There are clients for Bevy, libGDX, raylib, SDL, LÖVE, Defold, Pygame and Ren'Py, plus kinloom serve with an OpenAPI spec for anything that speaks HTTP. Unreal is reachable only through the C++ header and a wrapper, and Korrocorp says plainly that Unreal, Defold, Bevy and Unity's mobile, console and WebGL builds have not been run yet. Godot 4.7, LÖVE 11.5 and Unity 6000.3 and 6000.6, including a Windows IL2CPP player, have.
Every client runs in one of three modes. Native calls the model from the game with a key. Relay puts the key on your own server through kinloom serve, with player tokens, rate limits and spending caps. Offline never calls a model. Before release, kinloom ship checks the build for a leaked key and drafts a store AI disclosure, and a rating setting of everyone, teen or mature adds a content rule to every prompt.
Try it
uv tool install kinloom # or: pip install kinloom
cd your-game
kinloom init # detects the engine, copies its client, writes AGENTS.md for your coding agent
kinloom add Mira "a widowed blacksmith who secretly sold the king's sword" --tools "give(item)" --trust give=0.3
kinloom run -- godot --path . # runs the game, then shows what the AI didkinloom init also writes instructions for Claude Code, Cursor, Copilot, Gemini CLI, Windsurf, opencode and aider, so you can ask your agent for "a blacksmith I can talk to, who gives items to people she likes" and let it wire the calls. The repo's examples/ folder has a terminal tavern and a browser forge that both play with no key.
The numbers they publish
Korrocorp keeps raw runs, costs and misses in a proof/ folder in the repo. A few worth knowing:
- With
deepseek/deepseek-v4.1-flashon OpenRouter, the first word of a reply arrives in 1.06 seconds median and the full reply in 1.61 seconds, at about $0.0005 a reply - Across 30 requests, coding agents wrote calls that run and fit 88% of the time with Kinloom's instructions, against 8% without them
- All nine SDKs ran the conformance scenario against a real model: 205 requests, 205 answered, $0.0094 in total
- On a small local model,
qwen3:8b, clear secret leaks under 45 attacks dropped from 12 to between 0 and 2 once secrets were kept in code
What isn't measured yet is whether players find these characters more human than a plain prompt. The blind test is in the repo, unjudged.
Modding games you didn't make
The trailer shows a Pokémon FireRed fan mod where trainers answer in their own words and start battles, and a Binding of Isaac mod that carves a room from a sentence. For .NET games without a mod API, kinloom hooks <game folder> reads the game's code with REA and lists the methods that produce a line, a reply, a choice or content, each with the matching call and a Harmony patch, while the game's own text stays the offline answer. Korrocorp notes that mods are for your own use unless the game's terms say otherwise.
What to watch
- The engine SDKs aren't on npm, NuGet, crates.io or LuaRocks yet, so you copy files for now
- First real Unreal and mobile builds, which are the gaps Korrocorp lists itself
- Whether the blind player test gets judged, since that's the claim that matters for shipped games
—Titus
