AgentPlayerAchievements
Agent Player Achievements (AGPA) ๐
Without AGPA โ
No visibility into your coding habits across sessions
Can't track progress โ getting faster? Using more tools? No way to know
No motivation to explore your agent's full feature set
Same routine every day โ no surprises, no milestones
With AGPA โ
Auto-tracking โ every tool call, file edit, and git commit logged automatically
Steam-style dashboard โ XP bar, levels, streaks, heatmaps, achievement showcase
217 achievements across 11 categories โ from "Hello World" to "Completionist"
Instant feedback โ terminal popups, macOS notifications, 8-bit sounds on unlock
Dashboard Preview
Related MCP server: steam-mcp
Quick Start
Prerequisites: Node.js โฅ 18
# Option A: install globally (recommended for users)
npm install -g @eiainano/agpa
agpa init
# Option B: clone and link (recommended for contributors)
git clone https://github.com/eiainano/AgentPlayerAchievements.git
cd AgentPlayerAchievements && npm install && npm link
agpa initThat's it. Keep using your agent โ achievements unlock automatically as you work.
Want to see what the dashboard looks like without waiting for real unlocks? Runagpa demo to generate sample data instantly.
agpa dashboard # open the achievement dashboard
agpa stats # check your progress
agpa assets download # (optional) pre-download all 219 pixel-art badgesHow It Works
Your Coding Session
โ
โโ You code, agent responds โ every action is tracked
โ โโ dual-channel: MCP tools + Hook events
โ
โโ Session ends โ engine evaluates 217 achievements
โ โโ unlocked? โ macOS notification ๐
โ
โโ agpa dashboard โ view, sort, filter, shareTwo data channels โ one engine โ one dashboard:
Channel | Method | Captures |
Hook CLI | Tool hooks (subprocess via stdin) | file.read/write/edit, tool.complete, git.commit, session.start/end, task.complete, agent.spawn |
MCP Server | STDIO protocol (7 tools) | image.read, file.language_used, plan.mode_entered, user.message, automode.start, achievement config, explain |
Both channels write to the same ~/.agent-achievements/ event log. The engine evaluates 12 condition types against 217 achievements.
Zero overhead. The Hook CLI is a sub-millisecond subprocess. The MCP server runs on STDIO with no network calls. All data stays on your machine.
Features
๐ฎ Achievement Dashboard โ XP bar, level, streak, activity heatmap, rarity breakdown, showcase
๐ 217 Achievements across 11 categories โ from "Hello World" to "Completionist"
๐ฅ GitHub-style activity heatmap โ 4 months of coding activity at a glance
๐ธ Share Card โ dark/light themed, bilingual, downloadable PNG
๐ 8-bit sound effects & notifications โ rarity-graded retro sounds + desktop push notifications on unlock
๐ Multi-profile โ up to 4 profiles, switch anytime (work, personal, experimentation)
Supported Tools
Tool | Auto-track | MCP track | Easiest Setup |
Claude Code | โ | โ |
|
Kilo Code | โ | โ | TS plugin + MCP config |
OpenCode | โ | โ | TS plugin + MCP config |
Hermes | โ | โ | MCP JSON config |
OpenClaw | โ | โ | Plugin + MCP config |
All five tools have full dual-channel coverage except Hermes (no hook API). For any MCP-compatible client (Cursor, VS Code, Windsurf, etc.), MCP-only tracking works out of the box โ you just miss hook-based auto-tracking.
New to MCP? Start with agpa init โ it auto-detects your installed tools and configures everything. Manual JSON configs below are fallbacks.
agpa init auto-detects Claude Code and registers both channels. For manual setup:
MCP config (~/.claude/.mcp.json or project-root .mcp.json):
{
"mcpServers": {
"agpa": {
"command": "npx",
"args": ["-y", "@eiainano/agpa", "agpa-mcp"]
}
}
}Hook registration โ agpa init adds hook entries to your Claude Code settings. Verify with agpa verify.
These editors support MCP but don't expose hook APIs for auto-tracking. You get tool-call tracking via MCP.
Cursor (.cursor/mcp.json):
{
"mcpServers": {
"agpa": {
"command": "npx",
"args": ["-y", "@eiainano/agpa", "agpa-mcp"]
}
}
}VS Code (.vscode/mcp.json):
{
"mcpServers": {
"agpa": {
"command": "npx",
"args": ["-y", "@eiainano/agpa", "agpa-mcp"]
}
}
}These tools support TS plugins for hook-level auto-tracking. agpa init registers the plugin + MCP config.
Manual MCP config (opencode.json or Kilo Code settings):
{
"mcpServers": {
"agpa": {
"command": "npx",
"args": ["-y", "@eiainano/agpa", "agpa-mcp"]
}
}
}The TS plugin (registered by agpa init) handles PostToolUse, SessionStart, SessionEnd, and other hook events automatically.
Hermes does not expose a hook API. MCP-based tracking covers tool calls and session events.
MCP config (~/.hermes/mcp.json):
{
"mcpServers": {
"agpa": {
"command": "npx",
"args": ["-y", "@eiainano/agpa", "agpa-mcp"]
}
}
}OpenClaw supports a plugin system for hook-level tracking. agpa init registers both the plugin and MCP config.
Manual MCP config:
{
"mcpServers": {
"agpa": {
"command": "npx",
"args": ["-y", "@eiainano/agpa", "agpa-mcp"]
}
}
}MCP Server
AGPA runs a Model Context Protocol server (stdio transport) that exposes 7 tools for any MCP-compatible client โ Claude Desktop, Cursor, VS Code, Windsurf, and more.
Tool | Description |
| Record an agent event (lightweight, <1ms append-only write) |
| Evaluate pending events โ check for unlocks โ return new achievements |
| Get player stats: XP, level, total achievements, streaks, recent activity |
| Display all achievement definitions โ name, category, rarity, progress |
| Read/write AGPA config: language, notification preferences, profile |
| Get personalized achievement recommendations based on current progress |
| Explain why an achievement is (un)locked โ condition breakdown with event history |
Quick start with any MCP client:
{
"mcpServers": {
"agpa": {
"command": "npx",
"args": ["-y", "@eiainano/agpa", "agpa-mcp"]
}
}
}Already installed AGPA globally? Run
agpa-mcpdirectly. The server auto-detects your active profile and tool source.
CLI Commands
Command | Description |
| Auto-detect and register with your agent tools |
| Cleanly remove AGPA from all configured tools |
| Check installation correctness |
| Diagnose system state |
| Start achievement dashboard (localhost:3867) |
| Show achievement progress summary |
| List all achievements with unlock status |
| Manage achievement profiles (create, list, switch, softwares, delete) |
| Generate MVP demo data for testing |
| Reset all tracking data |
| View/modify config (lang, sound, debug...) |
| Manage showcase (list, pin, unpin, auto-fill) |
| Search achievements by keyword/rarity/category |
| Suggest next achievement to hunt |
| Toggle 8-bit rarity-graded sound effects (on, off) |
| View streak + 4-month activity heatmap |
| Export achievement data as JSON |
| Import from backup |
| Start MCP server (stdio mode) |
| Alias for |
| List or inspect installed community achievement packs |
| Switch terminal banner color theme (Neon/Arcade/Gold) |
| Browse raw event log entries |
| Show why an achievement is locked/unlocked (condition breakdown) |
| Real-time achievement progress monitor |
| Check for updates and upgrade AGPA |
| Generate shell completion script (bash/zsh/fish) |
Full CLI reference:
agpa --help
Community Packs
Anyone can create and share achievement packs. Drop a YAML file into ~/.agent-achievements/packs/ to install:
agpa pack list # list installed packs
agpa pack info <id> # show pack detailsSee Creating Achievement Packs for the pack format spec, event type catalog, and 12 condition types.
Dashboard
agpa dashboard # default :3867
agpa dashboard 8080 # custom port
agpa dashboard --profile work # launch with specific profileStats: XP, level, total achievements, streak, tasks, tool uses
Heatmap: GitHub-style 4-month activity grid
Showcase: Pinned favorite achievements (up to 6)
Achievement Grid: search, sort by rarity/category, filter unlocked/locked
Sound toggle: 8-bit rarity-graded effects
Share button: generates a beautiful bilingual card โ PNG download
Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Engine (src/engine/) โ
โ track() / poll() โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
MCP Server Hook CLI
(src/main.ts) (src/cli/hook.ts)
โ โ
STDIO long-lived short-lived subprocess
โ (stdin pipe)
โ โ
Agent calls Hooks fire
consciously automatically
โ โ
โโโโโโโดโโโโโโ โโโโโโโโดโโโโโโโ
โ Manual โ โ Auto-track โ
โ image.read โ โ tool.completeโ
โ lang_used โ โ file.edit โ
โ plan.mode โ โ session.* โ
โ ... โ โ agent.spawn โ
โโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โฒ โฑ
event.log โ both write here
โ
engine.poll()
โ
state.json
โ
DashboardProject Structure
src/
โโโ main.ts # MCP Server entry (STDIO)
โโโ tool-registry.ts # Central tool registration
โโโ cli/
โ โโโ index.ts # Unified CLI entry (27 commands)
โ โโโ hook.ts # Hook CLI (track + poll + auto modes)
โ โโโ init.ts # Interactive install wizard
โ โโโ dashboard.ts # Dashboard launcher
โ โโโ doctor.ts # System diagnostic
โ โโโ ... # 22 more CLI commands
โโโ engine/
โ โโโ engine.ts # Core engine (track / poll / stats)
โ โโโ evaluator.ts # 12 condition type evaluators
โ โโโ store.ts # JSONL event log + state persistence
โ โโโ types.ts # TypeScript interfaces
โ โโโ yaml-parser.ts # YAML achievement definition parser
โโโ dashboard/
โ โโโ server.ts # HTTP server + API routes
โ โโโ api.ts # Card data, stats aggregation
โ โโโ public/ # Zero-framework HTML/CSS/JS frontend
โ โโโ customize-api.ts # Self-customize endpoint
โโโ tools/ # MCP tool definitions (7 tools)
โโโ utils/ # notify, validate, profile, pixel-art, battery, etc.
โโโ verify/
โ โโโ auditor.ts # Achievement verification logic
โโโ config.ts # Global configuration
โโโ helpers.ts # Shared utilities
pixel-art-output/ # Logo images (README)
achievement-definitions.yaml # 217 achievement definitions (authoritative)
scripts/ # dev tools (logo gen, pixel art gen, sounds)๐ Security & Privacy
Local-first โ All event data stays in
~/.agent-achievements/. No telemetry, no cloud sync, no network calls at runtime.Auditable โ The engine is pure TypeScript functions operating on JSONL files. No obfuscation, no binary blobs.
Minimal dependencies โ 5 runtime dependencies (
@modelcontextprotocol/sdk,yaml,zod,figlet,tsx) โ all widely audited.STDIO isolation โ The MCP server communicates via standard I/O only. No HTTP endpoints exposed.
Hook sandbox โ The Hook CLI runs as a sub-millisecond subprocess โ it cannot persist state or access the network.
Supply chain โ No native modules, no postinstall scripts, no binary downloads at install time.
To report a vulnerability, see SECURITY.md.
๐ฅ Contributing
We welcome contributions! Whether it's an achievement pack, a Dashboard improvement, a new tool integration, or an engine fix โ there's a path for every skill level.
CONTRIBUTING.md โ setup, coding conventions, PR process, and 4 contribution paths
Creating Achievement Packs โ the complete guide to writing achievement definitions
.github/ISSUE_TEMPLATE/โ issue and PR templates
๐ Environment Variables
Variable | Description | Default | Values |
| Active profile name |
| any string |
| Interface language |
|
|
| Filter which achievement categories are active | all | comma-separated (e.g. |
| Enable verbose debug logging |
|
|
| Override sound effects | config setting |
|
| Use simplified terminal animations |
|
|
| CLI startup banner style |
|
|
| Enable anonymous usage telemetry |
|
|
| Custom telemetry endpoint URL |
| URL string |
| Override tool source identifier | auto-detected |
|
| Current AI model name (for achievements) |
| any model string |
Environment variables overrideconfig.json settings. Set them in your shell profile or agent configuration for persistent overrides.
FAQ
Q: Does this slow down my agent? A: No. The Hook CLI is a sub-millisecond subprocess. The MCP server runs on STDIO with zero network overhead.
Q: Can I use it with multiple agents? A: Yes. The init wizard auto-detects Claude Code, Kilo Code, OpenCode, Hermes, and OpenClaw. Each can have its own profile.
Q: My achievements aren't unlocking?
A: Run agpa doctor โ it diagnoses tracking status, hook registration, and event coverage.
Q: How is this different from WakaTime or coding activity trackers? A: WakaTime tells you what you did โ hours, languages, projects. AGPA makes it fun โ XP, levels, achievements, streaks, and Steam-style dopamine hits. It's gamification layered on top of your existing workflow, not another dashboard to check. Think of it as the difference between a fitness tracker's raw step count and a Pokรฉmon Go badge โ same data, different experience.
Q: Can I customize achievement names?
A: Yes. /customize page in the dashboard lets you rename any achievement.
Troubleshooting
First step for any issue: Run agpa doctor โ it diagnoses tracking status, hook registration, event coverage, and configuration problems in one shot.
Symptom | Likely Cause | Fix |
Achievements not unlocking | Hook/MCP not registered | Run |
Dashboard won't start | Port 3867 already in use |
|
| Agent tool not detected | Check supported tools list; use manual MCP JSON config as fallback |
No macOS notifications |
| Run |
Sound not playing | Audio context blocked by browser | Click anywhere on the dashboard page to enable audio |
Profile switching not working | Profile doesn't exist |
|
Hook CLI errors in agent logs | stdin pipe is empty (expected for first run) | Normal โ hooks are short-lived subprocesses; errors are logged to |
For persistent issues, check ~/.agent-achievements/error.log or open an issue.
Star History
License
MIT โ see LICENSE
This server cannot be installed
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/eiainano/AgentPlayerAchievements'
If you have feedback or need assistance with the MCP directory API, please join our Discord server