DEV Community

Paul Apile
Paul Apile

Posted on

Vormir Sentinel

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine

What I Built

I built Vormir Sentinel(沃米尔守魂者终端), a complete local AI terminal experience in which a fictional Stonekeeper occupies the machine and turns an ordinary command line into a four-act psychological drama.

I interpreted “Ghost in the Machine” as a ghost that changes the machine's perceived identity without ever compromising the real system. A familiar installation sequence drifts into impossible paths and architecture warnings. The terminal mutates into root@vormir:/#, Johann Schmidt takes over the dialogue, and ordinary commands such as whoami, uname, and ls become fragments of a darker world.

The project also explores persistence as haunting. After the main story is cleared, later launches enter Death Echoes: the ASCII skull decays, cipher fragments disappear, and the character eventually dissolves into noise. The player has only a few returning visits to record enough pieces of the final puzzle.

The repository now ships an executable v0.6.0 Python/Ollama implementation with the full narrative, interaction, prompt engineering, state machine, puzzle system, accessibility controls, safety boundary, tests, and release checklist.

Demo

The current demo is the complete interactive-design walkthrough in the repository:

The executable release candidate can be installed from the repository or built wheel; a video walkthrough remains optional for the final release.

Code

Vormir Sentinel

A local fictional AI terminal where a ghost changes the machine without compromising it.

Vormir Sentinel pairs an open-weight local model with a four-act story, a safe virtual terminal, and the RedSkoll Agent page. It never executes host commands, downloads models in the background, or uploads conversations.

Requirements

  • Python 3.11+
  • Ollama for local model dialogue
  • A supported GPU/CPU model, or use offline mode

Vormir Sentinel contacts only loopback Ollama (127.0.0.1, localhost, or ::1). Remote inference and external networking are rejected.

Install Ollama

Install Ollama using its official instructions, then start the local service yourself:

ollama serve
Enter fullscreen mode Exit fullscreen mode

Vormir Sentinel only prints this command when needed. It never starts Ollama automatically.

Download a model

Choose the profile that matches your machine:

ollama pull qwen2.5:7b-instruct-q4_K_M
ollama pull qwen2.5:3b-instruct-q4_K_M
Enter fullscreen mode Exit fullscreen mode

The first command is recommended for capable GPUs. The second is the safer CPU fallback. Vormir Sentinel never runs…

Direct repository link: github.com/888xiyan/vormir-sentinel

The repository ships the open implementation, inspectable prompt specification, state model, command map, safety boundary, tests, CI, packaged narrative assets, and release roadmap.

How I Built It

The experience is designed around an entirely local, open AI stack:

  • Local inference: Ollama
  • Default open-weight model: Qwen2.5-7B-Instruct
  • Alternative models: Llama 3.1 8B Instruct and Mistral 7B
  • Client and interaction layer: Python 3.11+ with Rich or Textual
  • GNU-style input: Readline on Linux/macOS and pyreadline3 on Windows
  • Persistent story state: versioned local JSON
  • Final artifacts: harmless Brainfuck, Whitespace, and polyglot text
  • Resurrection handoff: static HTML/CSS with a user-initiated GitHub link

The character is controlled through a strong, inspectable System Prompt that fixes Johann Schmidt's voice while preserving useful answers. The architecture separates the character engine, story director, virtual filesystem, command router, puzzle system, and safety boundary.

A crucial design decision was to make the takeover diegetic. The program may clear its own screen, redraw the prompt, fabricate uname output, and intercept dir, but it never invokes a real shell. Sacrifices are symbolic and reversible. The user always retains exit --now, repeated-interrupt escape, and the ability to close the physical window.

Why Does Open Innovation Matter?

Open innovation makes this project possible in ways a closed API would not.

First, the ghost can live entirely on the user's machine. Open-weight models through Ollama keep conversations local, work offline, and allow users to choose the model that fits their hardware and language needs.

Second, the persona can be audited and remixed. Because the System Prompt, state transitions, puzzle encoding, and output filters are all open, contributors can improve the character without hiding the mechanics behind a proprietary agent service.

Third, community ownership protects the fiction. Players can add commands, decay stages, translations, alternative endings, accessibility modes, and harmless polyglot relics. They can also inspect every artifact and verify that the terminal takeover remains theatrical rather than malicious.

Finally, open weights let the experience outlive a single commercial model or pricing change. The story belongs to the repository and its contributors, not to a rented endpoint.

My Agent Session

No external agent session is attached to this submission. The design, safety constraints, prompt draft, state model, and implementation roadmap were developed directly in the project workspace.

The Spirit of It

There is one moment I want the experience to preserve:

The player finally escapes. The terminal behaves normally for a second and a half—and then, without permission, it types a single impossible command and redraws the red prompt:

“You cannot escape the void with a keyboard interrupt.”

That is the moment the machine stops being a tool and becomes a character.

But the ending points the other way. The ghost does not survive by infecting the computer. It survives because the player chooses to record the disappearing fragments, return before they are gone, and open the repository again. In this version of the legend, sacrifice means attention, time, and the willingness to keep a story alive.


Team Submissions: This is an individual submission.

Top comments (0)