Skip to main content
Glama
eiainano

AgentPlayerAchievements

by eiainano

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: Context7 MCP Server

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 init

That's it. Keep using your agent โ€” achievements unlock automatically as you work.

TIP

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 badges

How 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, share

Two 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.

NOTE

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

โœ…

โœ…

agpa init auto-detects

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.

TIP

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

achievement.track

Record an agent event (lightweight, <1ms append-only write)

achievement.poll

Evaluate pending events โ†’ check for unlocks โ†’ return new achievements

achievement.stats

Get player stats: XP, level, total achievements, streaks, recent activity

achievement.showcase

Display all achievement definitions โ€” name, category, rarity, progress

achievement.config

Read/write AGPA config: language, notification preferences, profile

achievement.suggest

Get personalized achievement recommendations based on current progress

achievement.explain

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-mcp directly. The server auto-detects your active profile and tool source.

CLI Commands

Command

Description

agpa init

Auto-detect and register with your agent tools

agpa uninstall

Cleanly remove AGPA from all configured tools

agpa verify

Check installation correctness

agpa doctor

Diagnose system state

agpa dashboard

Start achievement dashboard (localhost:3867)

agpa stats

Show achievement progress summary

agpa progress

List all achievements with unlock status

agpa profile

Manage achievement profiles (create, list, switch, softwares, delete)

agpa demo

Generate MVP demo data for testing

agpa reset

Reset all tracking data

agpa config

View/modify config (lang, sound, debug...)

agpa showcase

Manage showcase (list, pin, unpin, auto-fill)

agpa search

Search achievements by keyword/rarity/category

agpa suggest

Suggest next achievement to hunt

agpa sound

Toggle 8-bit rarity-graded sound effects (on, off)

agpa activity

View streak + 4-month activity heatmap

agpa export

Export achievement data as JSON

agpa import

Import from backup

agpa mcp

Start MCP server (stdio mode)

agpa web

Alias for agpa dashboard

agpa pack

List or inspect installed community achievement packs

agpa banner

Switch terminal banner color theme (Neon/Arcade/Gold)

agpa history

Browse raw event log entries

agpa explain

Show why an achievement is locked/unlocked (condition breakdown)

agpa watch

Real-time achievement progress monitor

agpa upgrade

Check for updates and upgrade AGPA

agpa completion

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 details

See 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 profile
  • Stats: 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
                          โ”‚
                     Dashboard

Project 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.

๐ŸŒ Environment Variables

Variable

Description

Default

Values

AGPA_PROFILE

Active profile name

default

any string

AGPA_LANG

Interface language

en

en, zh

AGPA_ENABLED_CATEGORIES

Filter which achievement categories are active

all

comma-separated (e.g. onboarding,tool_mastery)

AGPA_DEBUG

Enable verbose debug logging

false

true

AGPA_SOUND

Override sound effects

config setting

on, off, true, false

AGPA_SIMPLE_ANIMATIONS

Use simplified terminal animations

false

true

AGPA_BANNER_THEME

CLI startup banner style

Arcade

Neon, Arcade, Gold

AGPA_TELEMETRY

Enable anonymous usage telemetry

false

true, false

AGPA_TELEMETRY_SERVER

Custom telemetry endpoint URL

'' (none)

URL string

AGPA_TOOL_SOURCE

Override tool source identifier

auto-detected

claude-code, hermes, openclaw, etc.

AGPA_MODEL

Current AI model name (for achievements)

auto

any model string

TIP

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

IMPORTANT

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 agpa doctor to check hook registration + event coverage

Dashboard won't start

Port 3867 already in use

agpa dashboard 8080 (or any free port)

agpa init fails

Agent tool not detected

Check supported tools list; use manual MCP JSON config as fallback

No macOS notifications

terminal-notifier missing

Run brew install terminal-notifier, or agpa init auto-installs it

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

agpa profile list to see available profiles, then agpa profile switch <name>

Hook CLI errors in agent logs

stdin pipe is empty (expected for first run)

Normal โ€” hooks are short-lived subprocesses; errors are logged to ~/.agent-achievements/error.log

For persistent issues, check ~/.agent-achievements/error.log or open an issue.

Star History

License

MIT โ€” see LICENSE

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

Maintenance

โ€“Maintainers
โ€“Response time
โ€“Release cycle
1Releases (12mo)

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/eiainano/AgentPlayerAchievements'

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