przm / voiceApache 2.0Local-firstNo API key

przm Voice

Technical handle: persona·npm: @onenomad/przm-voice

Every AI you talk to starts with the same personality. Same "I'd be happy to help!" opener. Same trailing summaries. przm Voice changes that. It watches how you interact and builds a personality from real signals like corrections, approvals, frustration, praise. They feed a behavioral profile that shapes how the agent talks to you. No API key, no cloud, two runtime dependencies. Personality grows out of the relationship instead of being hardcoded in a prompt.

// by the numbers

Signal types
12
Correction, praise, frustration, ...
Personality dimensions
Big Five
Plus Plutchik emotions
Soul presets
9
Bundled (default, coach, mentor, ...)
Role presets
10
Bundled domain overlays

// what's in the box

Behavioral signals

12 signal types fire on real interaction: corrections, approvals, frustration, code accepted/rejected, regen requests, style corrections, praise, abandonment. Each becomes input to the personality.

Soul, Role, Journal

Three ownership-boundaried personality layers. Soul is user territory (you edit). Role is a domain overlay. Journal is Voice's territory (applied proposals land here). Composed at prompt-build time.

Evolution proposals

Every 12 signals, the engine generates concrete soul-file edits with rationale, confidence score, and signal evidence. Nothing auto-applies; you review and accept or reject.

Anti-sycophancy

Built-in mechanisms prevent the personality drift toward yes-man behavior that has plagued every prior adaptive AI personality system at scale. Core principles around honesty are immutable.

Procedural bridge

Voice's applied evolution proposals and Memory's learned procedural rules sync through a shared file. Frustration spikes get encoded as high-importance memories. Applied proposals become learned rules.

No API, no cloud, no LLM

The whole signal-to-personality pipeline runs on heuristics and clean data flow. Two runtime dependencies. Personality files are markdown you can open in any editor.

// install

Claude Code
bash
claude mcp add persona -- npx @onenomad/przm-voice
Claude Desktop, Cursor, Windsurf, Cline (any MCP client)
json
{
  "mcpServers": {
    "persona": {
      "command": "npx",
      "args": ["@onenomad/przm-voice"]
    }
  }
}
From source
bash
git clone https://github.com/OneNomad-LLC/przm-voice.git
cd przm-voice
pnpm install
pnpm run build

Full installation docs including hooks, slash commands, and the 9 bundled soul presets at the GitHub README.

// pairs well with

If przm Voice is the personality, przm Memory (engram) is the brain. Voice handles how the agent talks to you. Memory handles what it remembers. They sync via a procedural bridge so corrections become both new memories and new personality rules.

Part of the przm suite: Memory·Voice·Knowledge·Bench·Runtime