Skip to main content
Glama

Not-Happy-Jan

Multi-sensory feedback for AI coding agents. When your coding agent finishes a task, someone picks up the phone and tells you — cheerfully if it went well, furiously if it didn't. Hold music while it works, a cast of cloned voices when it's done, and a buzz on your mouse or a flash on a pixel display to match — all 100% on your own machine.

"Not happy, Jan — the issue is…"

Built on the agent-feedback idea from AgentVibes — and taken way too far.

📖 Read the docs · 🎬 Watch the demo (videos coming soon)

⚠️ Public alpha — an early, for-fun release that will have rough edges. Open an issue or start a discussion. The minimal install speaks instantly with the bundled voice bank (no downloads); the full live experience wants an Apple-Silicon Mac and a one-off ~5 GB of local models.

What you'll experience

  • 🎷 Hold music plays while the agent is busy and pauses the instant it's done — a zero-attention "still working / finished" signal.

  • 👩 Jan handles routine "all done". 🧑‍💼 Bazza escalates warnings. 📣 Karren takes over when it breaks — she is NOT. HAPPY. JAN.

  • 🎚️ Tune each character — boganism, competence, chaos — just by asking Claude in plain language.

  • 📟 Fan out across devices you already have — a haptic mouse, $60 pixel clocks, a LaMetric, a physical bell — or nothing but your speakers.

→ Meet the cast and the one-word modes: Characters & dials · Modes

Related MCP server: Notifications MCP Server

Install

curl -fsSL https://raw.githubusercontent.com/guruswami-ai/not-happy-jan/main/install.sh | bash

One command, non-interactive, no sudo. The default installs the full local experience — cloned voices, the dynamic ocker-bogan-nano brain, and hold music — with on-demand model loading, so there's no resident RAM cost at idle.

Profile

Command

What you get

Default

bash install.sh

Full experience: Qwen3-TTS + ocker-bogan-nano LLM + hold music, on-demand; Claude hooks + MCP wired

Full

bash install.sh --full

…plus persistent warm TTS/LLM/MCP services (macOS) for sub-second responses

Minimal

bash install.sh --minimal

Hooks + MCP + the bundled voice bank — the cast speaks pre-recorded lines, no downloads (CI / low-RAM)

The MCP server always binds to 127.0.0.1; LAN access is an explicit opt-in (--full --listen 0.0.0.0). Uninstall is one reversible, user-only command:

nhj uninstall          # stops services, removes runtime/config/models/hooks; --yes to skip the prompt

Requirements: macOS Apple Silicon (M1+), Python 3.10+, ~8 GB RAM (16 recommended), ~5 GB disk. The alpha is Apple-Silicon-only; TTS_ENGINE=none runs text-only.

Requirements & tiers · Install profiles · Dynamic voices

Quick start

nhj test ok                       # fire a "done" across every configured channel
nhj voices                        # the cast + what each voice can speak with
nhj set jan.ockerism 11           # tune any dial live (or just ask Claude)
nhj mode rave                     # one-word vibe switch; nhj status to see current

→ Full walkthrough: Quick start

Documentation

📖 guruswami-ai.github.io/not-happy-jan — the full task-oriented docs site. By audience:

Security & privacy

Inference runs on-device — the cloned-voice references never leave your machine. Local services bind to 127.0.0.1 by default; LAN access is a deliberate opt-in. A secret guard scans prompts for leaked credentials. Install/uninstall are user-context only (no sudo) and fully reversible. Report vulnerabilities via SECURITY.md.

Credits & license

The core idea — narrating your coding agent's status via [vibes:] markers — comes from AgentVibes (TTS for Claude Code) by Paul Preibisch, an actively-developed project with its own evolving character system. Not-Happy-Jan is an independent, unapologetically over-engineered take on that idea. TTS powered by Qwen3-TTS via mlx-audio.

Code is MIT. Downloadable media and voice assets are licensed separately with mixed provenance — mostly AI-generated (CC0) or procedurally synthesised, hold music under a licensed Suno plan. See Media provenance; do not assume the code license grants rights to media, and use only voice references you own or have documented consent to use.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/guruswami-ai/not-happy-jan'

If you have feedback or need assistance with the MCP directory API, please join our Discord server