SkyrimNet makes every NPC in Skyrim into a real conversationalist. They hold their own opinions, remember what happened to them, react to what's going on around them, and decide what to do next — all voiced through the text-to-speech engine of your choice, all powered by your choice of large language model.
It is the only project of its kind that runs as a single SKSE plugin. No WSL. No Python launcher. No background server window to keep alive. Install the mod, launch the game, open localhost:8080 in your browser, and you're talking to NPCs in a few minutes.
Most AI mods for Skyrim work by running a separate program — typically an external exe, or an entire web serving stack inside the Linux virtual machine — that the mod talks to over a network connection. This incurs a significant setup cost (Users don't want to install Linux to play a Skyrim mod). This introduces latency, a considerable amount of system load, and many sources of bugs/issues.
SkyrimNet is different. It is a native Windows DLL that loads inside Skyrim itself. The benefits are practical, not theoretical:
NPCs hold context-aware conversations powered by your chosen language model. SkyrimNet talks to OpenRouter (or any OpenAI-compatible endpoint), and you can assign different models to different jobs — a fast, cheap model for action selection, a smarter model for dialogue.
^ prefix in chat) shrinks the radius further so you can pull someone aside.@Lydia (with Tab autocompletion) to address a specific NPC without going through the model's target-selection step.Each NPC has their own private memory store. Memories are written from that character's first-person point of view and retrieved by meaning, not just keyword matching.
is_in_location("Whiterun") or get_quest_stage("MQ104") >= 13, so a fact can enter the world the moment a quest milestone fires and stay scoped to the characters it should reach. Each entry can be either always injected into every prompt whose condition passes, or pulled in semantically when the current conversation is relevant to it — quest-critical facts stay in scope while incidental lore only surfaces when it matters..sknpack files, share them, import them, and toggle them on or off as a unit. Useful for shipping curated lore alongside a quest mod.Eight selectable text-to-speech engines, mixing local and cloud options:
| Engine | Where it runs | Voice cloning |
|---|---|---|
| Piper | Locally, in the game's process | No — uses pre-trained voices |
| PocketTTS | Locally, in the game's process (GPU optional) | Live cloning |
| XTTS | On a server you choose (your PC, a rented cloud GPU, or LAN) | Live cloning |
| ElevenLabs | Cloud API | Live cloning |
| Inworld | Cloud API | Live cloning |
| Zonos | On a server you choose (your PC, a rented cloud GPU, or LAN) | Live cloning, emotion-aware |
| Chatterbox | On a server you choose (your PC, a rented cloud GPU, or LAN) | Live cloning |
| Kokoro | Locally (narrator only) | No |
Piper is the default. It runs entirely on the CPU and needs no setup. All models are SHA-pinned and verified at download, so a half-downloaded model never sneaks into your install.
Voice Effects apply per-NPC audio transformations: pitch shift, formant shift, reverb, distortion, echo, ring modulation, EQ, and more (thirteen stage types in total). Built-in recipes cover Werewolf, Vampire Lord, Draugr, Dragon Priest, Dremora, Ghost, and overlay effects for thoughts and narration. Recipes are YAML, hot-reloadable, and editable in the web UI with audio preview that doesn't require triggering a full conversation.
Speech-to-text uses local Whisper by default — CUDA, Vulkan, OpenCL, or CPU, whichever your machine supports — with models from tiny to large-v3-turbo available and auto-downloaded. OpenAI's cloud Whisper API is available as an alternative.
A PrismaUI-based chat panel replaces Skyrim's primitive text-input dialog. It feels like a modern chat client running inside the game world.
@Lydia hello) with Tab autocomplete^) and Group (&) modifiers, combinable in either order/think, /transform, /silent, /monologue, /compose, /playsong, /summon, /npcthink, /telepathy (and ~ as a shorthand)SkyrimNet can take screenshots of actors, items, locations, furniture, and the current scene, then ask a vision model to describe them. The descriptions feed back into the prompts NPCs see, so an NPC can comment on the strange amulet you're wearing or the fact that the room is on fire. Items render on transparent backgrounds at high resolution. Identical items are deduplicated by content hash so they only get described once. Descriptions can be locked from the web UI to protect curated wording from being overwritten.
A trigger is a small YAML file that says "when X happens, do Y". Triggers can:
Conditions support nested field access, numeric and string comparison, regex, template expressions, cooldowns, probability, priority, and dialogue-interrupt flags. The web UI ships a YAML editor with schema validation.
Real bards in real inns sing real songs. Lyrics are written by your language model from the bard's perspective using their memories and recent events. Music is generated by Suno. Songs are cached per save, evicted in FIFO order when the cache fills, and can be re-downloaded later from Suno using the original task ID. The player can compose songs of their own with /compose <topic> and perform them later with /playsong <title>. Audio is spatial — songs get quieter as you walk away — and the vanilla bard voice and instrument idles are suppressed during AI playback so the two never overlap.
NPCs can have unvoiced internal thoughts that influence their later dialogue without being heard by anyone. Thoughts can be triggered by world events through the trigger system, by Papyrus scripts, or on-demand from the chat overlay with /npcthink Lydia what are you thinking about right now?.
An optional telepathy perk system layers an in-fiction mechanic on top of it. With the canonical perk, the player can send dialogue privately to a single NPC with /telepathy Lydia we need to leave, now — nobody else perceives the exchange, and NPCs reply over the same channel. A separate "eavesdrop" lesser power lets the player overhear nearby NPC thoughts.
NPCs choose actions — give gold, follow, attack, surrender, sing — from a library you can extend. Action definitions can be:
Action eligibility is cached and pre-warmed during voice recording, so by the time your sentence finishes transcribing, the model already knows which actions are valid for each nearby NPC.
localhost:8080A React-based control panel with roughly thirty pages:
Both dark and light themes are first-class.
If you don't have the GPU power to run XTTS or other heavy models locally, the VastAI page can rent one for you. The "Smart Create" button:
Configurable filters cover GPU model whitelist, max price per hour, minimum host reliability, and preferred regions. Background monitoring will auto-clean and (optionally) auto-create instances as needed.
SkyrimNet exposes a Papyrus API (SkyrimNetApi) and a public C++ DLL API for other mods to build on. Mods can:
SkyrimNet_SpeechStarted, SkyrimNet_MemoryCreated, SkyrimNet_DiaryCreated, and others)The Inja template system is the main extension point for prompt authors. Over a hundred built-in decorators expose player and NPC state, equipment, combat, factions, magic, location, time, memory retrieval, and more. Templates hot-reload automatically without restarting the game.
SkyrimNet runs a Model Context Protocol server on port 8889 that exposes 44+ tools to external AI assistants. Point Claude Desktop, a VS Code MCP extension, or your own client at it to:
SkyrimNet's modder API has a growing ecosystem of plugins built on top of it. A couple of major ones to know about:
Download from GitHub Releases
Piper TTS Models (Optional): If you plan to use Piper TTS, download the required voice models from Google Drive and install them as a separate mod in your mod manager (MO2, Vortex, etc.).
Install using your preferred mod manager
Enable SkyrimNet.esp in your load order
Launch via SKSE and visit localhost:8080
Complete the guided setup wizard with your API keys
Experience the future of gaming AI!
First launch automatically generates default configurations for your system.
Skyrim SE (without ESL support):
Skyrim VR:
A major focus right now is making SkyrimNet feel approachable for non-technical users. The end goal is for installing the mod to be all you have to do — download it, launch the game, and start talking to NPCs, with no API keys to configure, no models to pick, and no understanding of AI required.
This repository contains the game plugin assets for SkyrimNet:
plugins/SkyrimNet/) - Text format for version controlSource/Scripts/) - Script source filesheaders/) - Vanilla Skyrim script headers for compilationinterface/) - MCM and UI configurationSKSE/Plugins/SkyrimNet/) - Prompt templates and configurationCompiled files (.esp and .pex) are NOT stored in this repository. They are generated during the SkyrimNet build process.
ESP Plugin:
Spriggit.CLI.exe convert-to-plugin -i plugins/SkyrimNet -o SkyrimNet.espPapyrus Scripts:
papyrus.exe -nocache -h headers -i Source/Scripts -output Scripts├── plugins/SkyrimNet/ # Spriggit serialized ESP (version controlled)
├── Source/Scripts/ # Papyrus source files (.psc)
├── Scripts/ # Compiled scripts output (not tracked)
├── headers/ # Vanilla Skyrim Papyrus headers
├── interface/ # MCM and UI templates
├── SKSE/Plugins/SkyrimNet/# Prompts, assets, documentation
└── docs/ # In-game documentation
Papyrus
70.0%
HTML
25.6%
JavaScript
2.8%
CSS
1.3%
SkyrimNet makes every NPC in Skyrim into a real conversationalist. They hold their own opinions, remember what happened to them, react to what's going on around them, and decide what to do next — all voiced through the text-to-speech engine of your choice, all powered by your choice of large language model.
It is the only project of its kind that runs as a single SKSE plugin. No WSL. No Python launcher. No background server window to keep alive. Install the mod, launch the game, open localhost:8080 in your browser, and you're talking to NPCs in a few minutes.
Most AI mods for Skyrim work by running a separate program — typically an external exe, or an entire web serving stack inside the Linux virtual machine — that the mod talks to over a network connection. This incurs a significant setup cost (Users don't want to install Linux to play a Skyrim mod). This introduces latency, a considerable amount of system load, and many sources of bugs/issues.
SkyrimNet is different. It is a native Windows DLL that loads inside Skyrim itself. The benefits are practical, not theoretical:
NPCs hold context-aware conversations powered by your chosen language model. SkyrimNet talks to OpenRouter (or any OpenAI-compatible endpoint), and you can assign different models to different jobs — a fast, cheap model for action selection, a smarter model for dialogue.
^ prefix in chat) shrinks the radius further so you can pull someone aside.@Lydia (with Tab autocompletion) to address a specific NPC without going through the model's target-selection step.Each NPC has their own private memory store. Memories are written from that character's first-person point of view and retrieved by meaning, not just keyword matching.
is_in_location("Whiterun") or get_quest_stage("MQ104") >= 13, so a fact can enter the world the moment a quest milestone fires and stay scoped to the characters it should reach. Each entry can be either always injected into every prompt whose condition passes, or pulled in semantically when the current conversation is relevant to it — quest-critical facts stay in scope while incidental lore only surfaces when it matters..sknpack files, share them, import them, and toggle them on or off as a unit. Useful for shipping curated lore alongside a quest mod.Eight selectable text-to-speech engines, mixing local and cloud options:
| Engine | Where it runs | Voice cloning |
|---|---|---|
| Piper | Locally, in the game's process | No — uses pre-trained voices |
| PocketTTS | Locally, in the game's process (GPU optional) | Live cloning |
| XTTS | On a server you choose (your PC, a rented cloud GPU, or LAN) | Live cloning |
| ElevenLabs | Cloud API | Live cloning |
| Inworld | Cloud API | Live cloning |
| Zonos | On a server you choose (your PC, a rented cloud GPU, or LAN) | Live cloning, emotion-aware |
| Chatterbox | On a server you choose (your PC, a rented cloud GPU, or LAN) | Live cloning |
| Kokoro | Locally (narrator only) | No |
Piper is the default. It runs entirely on the CPU and needs no setup. All models are SHA-pinned and verified at download, so a half-downloaded model never sneaks into your install.
Voice Effects apply per-NPC audio transformations: pitch shift, formant shift, reverb, distortion, echo, ring modulation, EQ, and more (thirteen stage types in total). Built-in recipes cover Werewolf, Vampire Lord, Draugr, Dragon Priest, Dremora, Ghost, and overlay effects for thoughts and narration. Recipes are YAML, hot-reloadable, and editable in the web UI with audio preview that doesn't require triggering a full conversation.
Speech-to-text uses local Whisper by default — CUDA, Vulkan, OpenCL, or CPU, whichever your machine supports — with models from tiny to large-v3-turbo available and auto-downloaded. OpenAI's cloud Whisper API is available as an alternative.
A PrismaUI-based chat panel replaces Skyrim's primitive text-input dialog. It feels like a modern chat client running inside the game world.
@Lydia hello) with Tab autocomplete^) and Group (&) modifiers, combinable in either order/think, /transform, /silent, /monologue, /compose, /playsong, /summon, /npcthink, /telepathy (and ~ as a shorthand)SkyrimNet can take screenshots of actors, items, locations, furniture, and the current scene, then ask a vision model to describe them. The descriptions feed back into the prompts NPCs see, so an NPC can comment on the strange amulet you're wearing or the fact that the room is on fire. Items render on transparent backgrounds at high resolution. Identical items are deduplicated by content hash so they only get described once. Descriptions can be locked from the web UI to protect curated wording from being overwritten.
A trigger is a small YAML file that says "when X happens, do Y". Triggers can:
Conditions support nested field access, numeric and string comparison, regex, template expressions, cooldowns, probability, priority, and dialogue-interrupt flags. The web UI ships a YAML editor with schema validation.
Real bards in real inns sing real songs. Lyrics are written by your language model from the bard's perspective using their memories and recent events. Music is generated by Suno. Songs are cached per save, evicted in FIFO order when the cache fills, and can be re-downloaded later from Suno using the original task ID. The player can compose songs of their own with /compose <topic> and perform them later with /playsong <title>. Audio is spatial — songs get quieter as you walk away — and the vanilla bard voice and instrument idles are suppressed during AI playback so the two never overlap.
NPCs can have unvoiced internal thoughts that influence their later dialogue without being heard by anyone. Thoughts can be triggered by world events through the trigger system, by Papyrus scripts, or on-demand from the chat overlay with /npcthink Lydia what are you thinking about right now?.
An optional telepathy perk system layers an in-fiction mechanic on top of it. With the canonical perk, the player can send dialogue privately to a single NPC with /telepathy Lydia we need to leave, now — nobody else perceives the exchange, and NPCs reply over the same channel. A separate "eavesdrop" lesser power lets the player overhear nearby NPC thoughts.
NPCs choose actions — give gold, follow, attack, surrender, sing — from a library you can extend. Action definitions can be:
Action eligibility is cached and pre-warmed during voice recording, so by the time your sentence finishes transcribing, the model already knows which actions are valid for each nearby NPC.
localhost:8080A React-based control panel with roughly thirty pages:
Both dark and light themes are first-class.
If you don't have the GPU power to run XTTS or other heavy models locally, the VastAI page can rent one for you. The "Smart Create" button:
Configurable filters cover GPU model whitelist, max price per hour, minimum host reliability, and preferred regions. Background monitoring will auto-clean and (optionally) auto-create instances as needed.
SkyrimNet exposes a Papyrus API (SkyrimNetApi) and a public C++ DLL API for other mods to build on. Mods can:
SkyrimNet_SpeechStarted, SkyrimNet_MemoryCreated, SkyrimNet_DiaryCreated, and others)The Inja template system is the main extension point for prompt authors. Over a hundred built-in decorators expose player and NPC state, equipment, combat, factions, magic, location, time, memory retrieval, and more. Templates hot-reload automatically without restarting the game.
SkyrimNet runs a Model Context Protocol server on port 8889 that exposes 44+ tools to external AI assistants. Point Claude Desktop, a VS Code MCP extension, or your own client at it to:
SkyrimNet's modder API has a growing ecosystem of plugins built on top of it. A couple of major ones to know about:
Download from GitHub Releases
Piper TTS Models (Optional): If you plan to use Piper TTS, download the required voice models from Google Drive and install them as a separate mod in your mod manager (MO2, Vortex, etc.).
Install using your preferred mod manager
Enable SkyrimNet.esp in your load order
Launch via SKSE and visit localhost:8080
Complete the guided setup wizard with your API keys
Experience the future of gaming AI!
First launch automatically generates default configurations for your system.
Skyrim SE (without ESL support):
Skyrim VR:
A major focus right now is making SkyrimNet feel approachable for non-technical users. The end goal is for installing the mod to be all you have to do — download it, launch the game, and start talking to NPCs, with no API keys to configure, no models to pick, and no understanding of AI required.
This repository contains the game plugin assets for SkyrimNet:
plugins/SkyrimNet/) - Text format for version controlSource/Scripts/) - Script source filesheaders/) - Vanilla Skyrim script headers for compilationinterface/) - MCM and UI configurationSKSE/Plugins/SkyrimNet/) - Prompt templates and configurationCompiled files (.esp and .pex) are NOT stored in this repository. They are generated during the SkyrimNet build process.
ESP Plugin:
Spriggit.CLI.exe convert-to-plugin -i plugins/SkyrimNet -o SkyrimNet.espPapyrus Scripts:
papyrus.exe -nocache -h headers -i Source/Scripts -output Scripts├── plugins/SkyrimNet/ # Spriggit serialized ESP (version controlled)
├── Source/Scripts/ # Papyrus source files (.psc)
├── Scripts/ # Compiled scripts output (not tracked)
├── headers/ # Vanilla Skyrim Papyrus headers
├── interface/ # MCM and UI templates
├── SKSE/Plugins/SkyrimNet/# Prompts, assets, documentation
└── docs/ # In-game documentation
Papyrus
70.0%
HTML
25.6%
JavaScript
2.8%
CSS
1.3%