WarpShell is a visual workflow recorder for Skyrim Papyrus modding.
It records command runs as timeline ticks, lets you replay saved output, branch from earlier points, overwrite future ticks when you choose to, and save repeatable compiler workflows as profiles.
This is an alpha preview. It is useful for testing the workflow and building Papyrus command pipelines, but it is not a full terminal emulator yet.
- Install Python 3.11 or newer.
- Double-click
Launch WarpShell V2 Alpha.bat. - Select
sample-papyrus-projectin Branch History. - Click ticks in the timeline to inspect saved output.
- Click
Replay Logsto watch saved output without running anything. - Double-click profile
01_fake_compile_cleanto run a safe fake compile.
The included profiles use the included fake compiler and fake mod. They do not touch Skyrim.
- WarpShell Workbench GUI.
- Live Shell input for real command execution.
- Tick timeline with rewind, replay, branch, rerun, overwrite, and delete workflows.
- Branch History tree with nested branches.
- Code / Recipe Editor for command batches and text files.
- Profiles for saved command recipes.
- Output panel with red/green activity indicator.
- Fake Papyrus compiler for safe testing.
- Fake Skyrim mod sample project.
- Seed sample sessions, branches, and profiles.
- Reset script for restoring the sample workspace.
- Optional legacy command-line scripts.
WarpShell has two different modes:
- Live execution runs commands on your machine and records results as ticks. The activity dot is red.
- Replay Logs shows saved stdout/stderr from existing ticks only. It does not run commands or write new ticks. The activity dot is green.
- Idle mode shows no activity dot.
Use Replay Logs when you only want to inspect history. Use the Live Shell, profile Run, Run Tick, Run To Tick, or Run Recipe when you want real execution.
Top toolbar:
Refresh: reload saved sessions and profiles from disk.New Session: create a blank timeline.Stop: stop an active live run or replay.Halt on error: when enabled, command batches stop on the first non-zero exit code.
Branch History:
- Select a session or branch to load its timeline.
- Nested rows show branches created from earlier ticks.
Deletemoves the selected session JSON intosample_warp_home/deleted.- Branch History does not execute commands by itself.
Tick Timeline:
Rewind: show saved output up to the selected tick.Replay Logs: play saved output without executing commands.Back/Forward: move the selected tick.Branch From Tick: create a child branch from the selected tick.Run Tick: rerun the selected command and replace that tick's saved result.Run To Tick: rerun from the first tick through the selected tick and replace those saved results.Delete Tick: remove a tick and renumber later ticks.
Code / Recipe Editor:
Open File: open a script or command text file.Save File: save editor contents.Load Branch: load the current timeline commands into the editor.Run Recipe: run the editor commands as a fresh recipe session starting at tick 1.Save Profile: save editor commands as a named profile.Save Branch Profile: save the loaded branch commands as a profile.
Profiles:
- Single-click a profile to load its commands into the editor.
- Double-click a profile or click
Runto run it as a fresh profile session. Deleteremoves the selected profile.
Output / Live Shell:
Clear: clear the output pane.Replay: replay saved logs for the selected timeline.- Type a command and press
Enterto run it live. UpandDownmove through command history.clearandclsclear the output pane.
If you select an earlier tick while later ticks already exist, then run a new Live Shell command, WarpShell asks what to do:
Branch: create a child branch from the selected tick and run the new command there.Overwrite: delete the future ticks from the current timeline and run the new command as the next tick.Cancel: leave the timeline unchanged and keep the command in the input box.
This prevents accidental tick 7 / tick 8 style appends when you meant to work from tick 4.
sample-papyrus-project
Base workflow with four ticks:
- Change into the fake mod folder.
- List source files.
- Run a clean fake compile for two scripts.
- List fake build outputs.
warning_review @ tick 2
A branch from the base session at tick 2. It compiles WSA_Utility.psc, which contains an intentional warning marker.
broken_script_test @ tick 3
A nested branch from warning_review at tick 3. It compiles WSA_BrokenExample.psc, which contains an intentional error marker so you can test failure handling.
01_fake_compile_clean
Runs the fake compiler against two sample scripts. One script emits a warning, but the build succeeds.
02_fake_compile_with_error
Runs the fake compiler against the intentionally broken script. This is useful for testing halt-on-error behavior.
03_clean_then_compile_all
Deletes fake build output, then compiles every .psc under the sample source folder.
04_show_fake_build_outputs
Lists the generated fake .pex files.
The fake compiler is here:
tools/fake_papyrus_compiler.py
Example:
python "%WARPSHELL_PACKAGE%tools\fake_papyrus_compiler.py" scripts\Source --recursive -i scripts\Source -o build\Scripts --strictIt scans .psc files and:
- prints warnings for lines containing
; WARN: - fails for lines containing
; ERROR: - writes fake
.pextext files into the output folder
Useful options:
--recursive: compile.pscfiles in subfolders.--clean: delete the output folder before compiling.--strict: print stricter demo output.--fail-on-warning: treat warnings as failures.
Warpshell V2 alpha/
Launch WarpShell V2 Alpha.bat
Reset Sample Data.bat
README.md
INSTRUCTION_MANUAL.md
VERSION.txt
LICENSE.txt
warpshell/
warp_gui.py
warpshell.py
replay.py
session_store.py
tools/
fake_papyrus_compiler.py
examples/
FakeSkyrimMod/
sample_warp_home_seed/
profiles.json
sessions/
deleted/
The launcher sets:
WARPSHELL_HOME=sample_warp_home
WARPSHELL_PACKAGE=this package folder
On first launch, the launcher recreates sample_warp_home from sample_warp_home_seed if the live sample workspace is missing.
That means the shipped build uses package-local sample data by default without needing a prebuilt live workspace in the zip.
If you run warpshell/warp_gui.py directly without the launcher, WarpShell stores data in:
%USERPROFILE%\.warp
For Nexus users, using the launcher is recommended.
If the sample data gets messy, run:
Reset Sample Data.bat
This restores sample_warp_home from sample_warp_home_seed.
If sample_warp_home does not exist yet, the launcher creates it automatically from the seed folder before opening the GUI.
The GUI is the intended V2 Alpha experience, but the package still includes the older Python scripts:
warpshell.py: typed command recorder.replay.py list: list saved sessions.replay.py replay <session>: show saved logs.replay.py replay <session> --execute: re-execute saved commands live.replay.py rewind <session> <tick>: inspect or branch from an earlier tick.
Most users should start with Launch WarpShell V2 Alpha.bat.
- WarpShell is not a full terminal emulator.
- Some deeply interactive console programs may behave differently than they do in native CMD or PowerShell.
cdpersists inside WarpShell, but arbitrary shell state changes may not.- Profiles are plain command lists, not a full build-system language.
- There is no built-in Papyrus compiler path discovery yet.
- There is no packaged
.exeyet. - The fake compiler is only for testing the UI and workflow.
WarpShell V2 Alpha is a visual Papyrus workflow recorder for Skyrim mod authors. It records command timelines, replays saved compiler output, branches from earlier ticks, saves build profiles, and includes a fake Papyrus project so users can test the workflow before wiring it into a real mod setup.
When reporting issues, include:
- Windows version
- Python version
- what button or command was used
- the selected session or branch name
- the session file from
sample_warp_home/sessions - any output shown in the Live Shell panel