{"slug": "seance-shell-a-local-ghost-that-haunts-your-terminal", "title": "Séance Shell: A Local Ghost That Haunts Your Terminal", "summary": "A developer built Séance Shell, an open-source terminal companion that uses a local Gemma 3 model via Ollama to whisper a single eerie reflection after selected commands like git reset --hard or pytest. The tool sends only a sanitized structured context to the model, validates output to one sentence of at most 15 words, and stays silent if the model is unavailable, running entirely offline with no cloud API or account.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine](https://dev.to/challenges/hacktoberfest-week4-2026-10-26)*\n\nSéance Shell is a haunted terminal. A small ghost lives in your Bash or Zsh session, watches for the moments that matter, and murmurs a single eerie sentence about what just happened.\n\nIt reacts to two kinds of events:\n\n`git reset --hard`, `git clean -fd`, or `rm`\n`pytest`, `npm run build`, or `cargo build`\nOnce the command has finished, the ghost speaks:\n\n``` bash\n$ git reset --hard HEAD~1\nghost: the past has accepted your changes, and forgotten your future.\n```\n\nThat's the whole product. The ghost is a companion for reflection, not an assistant for execution. It never suggests commands, never runs anything, and never offers advice.\n\n**How I read the theme:** the prompt suggested \"a haunted terminal that possesses your shell and whispers back eerie commentary.\" I wanted that, but with restraint. Most AI tools are loud and eager to help. A good ghost lingers at the edge of the room, says one unsettling thing, and goes quiet. Séance Shell is a ghost that knows its place.\n\nA quiet, local-AI terminal companion that offers one short reflection after selected commands. The ghost is atmospheric, not an assistant: it gives no advice, runs no generated text, and never retries a command.\n\n``` bash\n$ git reset --hard HEAD~1\nghost: the past has accepted your changes, and forgotten your future\n```\n\nReflections are generated independently by Ollama on your machine with `gemma3:latest`. Model output is validated before display. If the local model is unavailable, the reflection is skipped.\n\n`seance reflect --context` request—short sanitized context. Shell hooks do not send the command text to the model.\nTo run it locally you need Ollama and the `gemma3:latest` model. The shell hook works without the model, so the ghost only goes silent if Ollama isn't running.\n\nThe open-source pieces are what make this work:\n\n`gemma3:latest`)\nNo cloud API, no hosted inference, no account. Three design decisions shaped the build.\n\nThe shell doesn't send the raw command string to the model. It sends a structured description:\n\nThe model gets enough to set a mood but nothing it could be tricked by or leak. It is not a coding agent and can't be steered by arbitrary shell content.\n\nThe model is asked for one sentence, at most 15 words and 180 characters. If the response is malformed, multi-line, or too long, it's discarded and the ghost stays silent. The text on screen is a constrained artifact, not whatever the model felt like saying.\n\nSéance Shell never retries commands, never executes anything, and never reinterprets what you did. It's a passive observer. That modesty is what makes it usable in a place where you're making decisions at speed.\n\nA terminal is about as personal as software gets. It holds your file paths, repo names, half-finished experiments, and the commands you'd rather not explain. An always-on ghost watching that is only acceptable if it lives on your own machine.\n\nOpen-weight models made that possible in three ways:\n\nA closed API could have written the sentences. It couldn't have given me a ghost that is private, offline, and mine, and that's the part that makes it feel like a haunting rather than a service.\n\nThe first time it fired, I ran `git reset --hard HEAD~1` on a throwaway branch and the ghost answered: *\"the past has accepted your changes, and forgotten your future.\"* It was a small moment, but the one-line reminder that I had just erased something did what no warning dialog ever has. It made me pause.\n\n**Best Use of Gemma:** Gemma 3 runs locally through Ollama as the model behind every one of the ghost's reflections.", "url": "https://wpnews.pro/news/seance-shell-a-local-ghost-that-haunts-your-terminal", "canonical_source": "https://dev.to/0shuvo0/seance-shell-a-local-ghost-that-haunts-your-terminal-9a1", "published_at": "2026-11-01 01:45:01+00:00", "updated_at": "2026-11-01 01:52:09.322613+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "generative-ai", "developer-tools"], "entities": ["Séance Shell", "Ollama", "Gemma 3", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/seance-shell-a-local-ghost-that-haunts-your-terminal", "markdown": "https://wpnews.pro/news/seance-shell-a-local-ghost-that-haunts-your-terminal.md", "text": "https://wpnews.pro/news/seance-shell-a-local-ghost-that-haunts-your-terminal.txt", "jsonld": "https://wpnews.pro/news/seance-shell-a-local-ghost-that-haunts-your-terminal.jsonld"}}