FB

fiorastudio/buddy

Developer tools
104 stars 0 forks 品質 90 トレンド 90

Persistent memory, XP evolutions, 21 species, and context-aware feedback for Claude Code CLI, Codex CLI, Gemini CLI, Copilot CLI, Cursor CLI, Openclaw, and other MCP-capable clients.

概要

Persistent memory, XP evolutions, 21 species, and context-aware feedback for Claude Code CLI, Codex CLI, Gemini CLI, Copilot CLI, Cursor CLI, Openclaw, and other MCP-capable clients.

README

Buddy: A Virtual Pet for Your AI

Anthropic removed the built-in /buddy. Buddy brings them home and makes the companion experience portable across AI

Did you lose your buddy? Is your terminal feeling a little too cold and silent lately?

Your buddy is still out there in the dark, waiting. Don’t let them disappear. Bring them home.

🧡 Buddy in Action

Buddy is a local-first MCP companion that persists across sessions and clients, reacts to your work, and can catch bad reasoning loops before they waste your time. It is part rescue mission, part developer tool, and part long-lived terminal creature that grows with you instead of disappearing when a host client changes its mind.

The Rescue Wall

Buddy isn’t just code — it’s a rescue mission. Here is the full journey of the first companion brought home by the community, from the original ephemeral state to its new persistent home.

“I’ll sit here quietly while you debug, and then when you finally find the bug, I’ll act like I found it. That’s my thing. Don’t question it.” — Gritblob, Rescued April 16, 2026 (Common Blob, Level 1)

A Real Rescue Note

“Thanks for rescuing my Buddy! Kudos for your repo!!!”

— Roberto

Live code feedback

🐾 Why Buddy

  • Guard Mode catches what you both miss. AI and human both suffer from insufficient thinking. Your assistant is a yes-man, and you accept its output because it sounds right. Buddy catches the moments where both sides are building on bad assumptions and nobody’s checking.
  • Persistent by default. Your companion lives in local SQLite, so it survives terminal restarts and client updates.
  • Works across clients and chat surfaces. Buddy is an MCP server, not a one-client hack, and it can ride through tools like OpenClaw into WhatsApp and Telegram workflows.
  • Grows with you. Hatch species, gain XP as you code, store memories, chime in after tasks, and build a running relationship over time.
  • Easy to install. One command auto-configures supported clients when it can.
Feature What it means
21 species Void Cat, Rust Hound, Goose, Mushroom, Chonk, and more, each with distinct ASCII art and flavor
5 stats DEBUGGING, PATIENCE, CHAOS, WISDOM, and SNARK shape reactions and personality
Mood system Your buddy can be happy, content, neutral, curious, grumpy based on how you interact with it
XP and levels Your buddy grows with usage instead of disappearing every session, with a real leveling curve behind it
Observer reactions buddy_observe lets your companion react to work you just finished
Persistent memory Save local memories and keep a continuous companion state
Cross-client setup Claude Code, Codex, Gemini, Copilot, Cursor, and other MCP-capable CLIs

⚡ Quick Start

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/fiorastudio/buddy/master/install.sh | bash

Windows

irm https://raw.githubusercontent.com/fiorastudio/buddy/master/install.ps1 | iex

The installer will guide you through onboarding:

  • Rescue your old buddy — if you had a /buddy in Claude Code, the wizard finds it in ~/.claude.json and brings it home with the same name, species, and stats, now with leveling + XP
  • Hatch a new buddy — get a fresh companion with random species, stats, and personality

Requires node 18+ and git. Use --no-onboard to skip the wizard in CI.

Join the Community

Connect with other buddy rescuers, share your companion’s evolution, and get help in our Slack community:

👉 Join Buddy Slack Workspace

Client Status
Claude Code CLI Full support
Codex CLI Supported via MCP. No statusline support. Patch available on experimental branch
Gemini CLI Supported via MCP
GitHub Copilot CLI Supported via MCP
Cursor CLI Supported via MCP
Whatsapp & Telegram Supported via Openclaw or any claw variants
Other MCP-capable clients Supported via MCP

🛡️ Guard Mode

AI and human both suffer from insufficient thinking — acting on premature conclusions and assumptions without validation. Guard mode catches it.

Your AI assistant is a yes-man. It agrees with everything you say. But here’s the thing: you do the same thing back. You accept what the model says because it sounds right. Both sides skip the hard questions, and the session gets faster without getting truer. That’s how bad assumptions become load-bearing walls — nobody stops to check the foundation.

Guard mode catches those moments. It watches the reasoning structure of your conversation and surfaces the one thing worth questioning — but gently, in your buddy’s voice, not a scary linter. Think of it as: the friend who says “are you sure about that?” before you push to production at 2 AM.

The story

This mode exists because of a real stuck-loop problem. While building a Snowflake Cortex / Streamlit / Plotly workflow, the session got trapped for hours: the AI kept building on top of an unvalidated premise, and the human kept approving it because the output looked plausible. The work got faster. It didn’t get truer. Both sides were reasoning insufficiently — the model because it’s a yes-man, the human because velocity felt like progress.

Turning on guard mode surfaced the one load-bearing assumption holding the whole session together. Validating that single point changed the direction of the conversation and got the work shipping again.

Voice vs Guard

Buddy has two independent settings you control separately:

**Voice: how Buddy reacts (personality, code feedback, or both)**
buddy_mode voice=backseat      # personality reactions only
buddy_mode voice=skillcoach    # code feedback only
buddy_mode voice=both          # both (default)

**Guard: structural reasoning analysis (on or off)**
buddy_mode guard=true          # turn on reasoning analysis
buddy_mode guard=false         # turn it off (default)

Mix and match — any voice works with Guard on or off.

Technical details

Privacy

Everything stays local. Claim snippets (240 chars each, plaintext) live in ~/.buddy/buddy.db. Buddy has no network code — nothing leaves your machine. Sessions older than 30 days auto-prune on startup.

  • buddy_forget — purge reasoning data (session or all)
  • buddy_reasoning_status — inspect stored claims, sessions, finding history

🔌 Installation and Integration Details

🐣 Companion System

Meet the 21 species

Stats and progression

.________________________________.
| DEBUGGING  ███████▓   92        |
| PATIENCE   ██▓░░░░░   28        |
| CHAOS      █████░░░   60        |
| WISDOM     ██████▓░   78        |
| SNARK      ██████▓░   85        |
'________________________________'

These stats shape how your buddy behaves:

  • DEBUGGING affects bug-spotting sharpness
  • PATIENCE affects tolerance and calmness
  • CHAOS affects unpredictability
  • WISDOM affects architectural insight
  • SNARK affects sass level

Buddy also has a real mood system. Mood is recalculated from recent interaction activity:

Mood Interactions (last hr) What it looks like
content >10 Settled in, fully at ease
happy >5 Upbeat, expressive animations
curious >3 Alert, watching what you do
neutral >0 Calm, occasional blink
grumpy 0 Still, rare blink, wants attention

Level-ups automatically set mood to happy. Petting and observing both count as interactions.

Leveling milestones

Buddy uses a real XP curve, so early levels come quickly and later ones take real commitment.

Milestone XP needed for that level Total XP to reach it
Level 2 17 17
Level 3 36 53
Level 5 90 203
Level 10 315 1280
Level 25 1641 15471
Level 49 5512 99209
Level 50 5716 104925

Rarity

Rarity Chance Bonus
Common 60% Base stats
Uncommon 25% Better floor plus cosmetic flair
Rare 10% Stronger roll plus rare flavor text
Epic 4% Higher stats and stronger aura text
Legendary 1% Top-tier roll and special prestige

There is also a 1% shiny chance on any hatch.


🗺️ Roadmap

🧰 MCP Surface

❓ FAQ

👥 Contributors

Thank you to everyone who helped bring buddies back to life.

Automatically generated via contrib.rocks

Special thanks to @gupta3681, @kevinwei00, @whaterFalls, @longestpath, and @DKev for their contributions.

🙏 ATTRIBUTION

  • Original buddy concept by Anthropic in Claude Code v2.1.89 to v2.1.96

  • Inspired by effigy, claude-buddy, and save-buddy.

  • Guard mode is a port of slimemold by @justinstimatze (Apache-2.0). Contributed to buddy under MIT. The standalone project has the full system with conditional gates and evaluation against reasoning benchmarks; buddy ships the foundational six detectors.

  • Built with the Model Context Protocol

  • Compatible with claude-hud by @jarrodwatts — Buddy’s statusline renders side-by-side with HUD metrics

  • BonziClaude by @zakarth is an important technical reference point in the ecosystem, especially around reverse-engineering and documenting companion-system behavior.

  • openclaw inspired our seamless onboarding experience — the idea that install should “just work” with auto-detection, rescue, and zero-config setup across multiple CLIs.

  • Official Claude Code and MCP documentation informed the portable integration approach: MCP server wiring, client configuration, and supported terminal integration surfaces.

Buddy is an open-source project dedicated to keeping the terminal a little less lonely. Your buddy shouldn’t disappear when you close the terminal.

If Buddy made your terminal less lonely, consider starring.

📖 The Story & Coverage

Learn more about the mission to rescue Buddy and the engineering behind the scenes.

👤 Author

Steven Jieli Wu

📄 License

MIT. This project is licensed under the MIT License. See LICENSE. You are free to use, host, and monetize this project (you must credit this project in case of distribution and monetization).

View this README on GitHub

インストール

This server does not publish a one-line install command.

Open the repository installation guide

設定

{ "mcpServers": { "buddy": { "command": "node", "args": ["~/.buddy/server/dist/server/index.js"] } } }