Agent-Quest

agent
Security Audit
Warn
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Real-time gamified dashboard to monitor Claude Code CLI AI agents with a 2D visual interface

README.md

Agent Quest

A fantasy village dashboard for monitoring your Claude Code agents.

License: MIT Version 0.0.1 Bun ≥ 1.1 React 19 TypeScript strict Buy me a beer


Use the Claude Code CLI as usual — each agent session auto-spawns a hero on the dashboard, live.

Agent Quest is a browser-based monitoring dashboard that visualizes active Claude Code agent sessions as fantasy heroes in a 2D village. Each running agent becomes a hero who walks between buildings based on what it's doing: Read sends it to the Library, Edit to the Forge, Bash to the Arena, and so on.

Agent Quest — main view
Every hero is an agent — the building it visits tells you what it's doing.

Integrated tile map editor
Integrated Tile Map Editor
Weather effects
Weather effects

Why?

Claude Code sessions happen in a terminal — useful, but not very alive. When you run several agents at once (across projects, across ~/.claude* installations), it's hard to feel what they're actually doing. Agent Quest turns that invisible activity into something you can glance at: a little village where every hero is an agent, and where they walk tells you what they're up to.

Features

  • Real-time visualization of active Claude Code sessions
  • Auto-discovery of every ~/.claude* directory (supports multiple installations like ~/.claude-work, ~/.claude-personale)
  • Activity feed, party bar, and detail panel alongside the village scene
  • Built-in map editor for customizing the village layout
  • Sub-2s latency via native WebSocket (optional lower-latency path via Claude Code postToolUse hooks)

Requirements

Required

  • Bun 1.1 or later — the runtime behind both the server and the scripts. If you don't have it: curl -fsSL https://bun.sh/install | bash
  • An active Claude Code installation (one or more ~/.claude* directories with session logs). Without it the dashboard still starts, but the village stays empty and a banner tells you so.
  • macOS or Linux recommended — Windows via WSL2

Optional

  • Node.js 20+ with npm — only if you prefer the npm run … command form. If you only have Bun installed, every npm run X in this README has an equivalent bun run X.

Quick start

Agent Quest can be set up in two equivalent ways — pick the one that matches your platform:

  • Manual install (classic)git clone + bun install + bun start. Three commands, full control, works everywhere (macOS, Linux, Windows via WSL2).
  • One-line install (macOS only) — a single curl | bash that installs Bun if missing, clones the repo, installs dependencies, creates a global agentquest command, and launches the app.

They do the same work under the hood. Every daily command has an equivalent:

With the CLI Without (classic)
agentquest bun start
agentquest update git pull --ff-only && bun install

agentquest update is a convenience command for end users running an installed copy that tracks origin/main. It is not the contributor workflow for feature branches.

Manual install

Three commands — works on macOS, Linux, and Windows via WSL2:

git clone https://github.com/FulAppiOS/Agent-Quest.git
cd Agent-Quest
bun install
bun start

That's it: your browser opens on http://localhost:4445 and the village appears.

Optional — create an agentquest shortcut so you can launch from any directory:

mkdir -p ~/.local/bin
ln -s "$PWD/bin/agentquest" ~/.local/bin/agentquest

After the symlink you can run agentquest (alias of bun start) and agentquest update (alias of git pull --ff-only && bun install) from anywhere.

Agent Quest ships with a bundled CC0 pixel-art sprite pack (under client/public/assets/themes/tiny-swords-cc0/), so there's nothing else to download.

One-line install (macOS only)

curl -fsSL https://raw.githubusercontent.com/FulAppiOS/Agent-Quest/main/install.sh | bash

The installer prints exactly what it's going to do and asks before touching anything. It checks/installs Bun, clones into ~/agent-quest (override with --dir <path>), runs bun install, creates an agentquest shortcut in ~/.local/bin/, and offers to launch right away. When it finishes, your browser opens on http://localhost:4445 and the village appears.

From the next session onwards:

agentquest            # same as `agentquest start` — launches and opens the browser
agentquest update     # git pull + bun install (preserves local map edits)

Troubleshooting

bun: command not found — install Bun first, then re-run the Quick start:

curl -fsSL https://bun.sh/install | bash

Cannot find module … on startup — dependencies weren't installed. From the repo root:

bun install

EADDRINUSE on port 4444 or 4445 — another process holds the port. Either free it or override the port via env (see Configuration). To see what is holding it and kill it:

lsof -ti:4444,4445 | xargs kill -9

agentquest: command not found after install~/.local/bin is not in your $PATH. Add it:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc

Empty village with a "No Claude Code installation detected" banner — expected when no ~/.claude* directory with session logs exists. Install Claude Code, start a session, and heroes appear automatically (the banner disappears on its own).

Assets look broken or the app blocks at boot with "missing asset" screens — see Missing assets.

Configuration

Defaults work out of the box. To customize ports or URLs, copy the example env files:

cp server/.env.example server/.env
cp client/.env.example client/.env
Variable Where Default Purpose
PORT server 4444 HTTP + WebSocket port
CLIENT_URL server http://localhost:4445 CORS origin
CLIENT_PORT client 4445 Vite dev server port
VITE_SERVER_URL client http://localhost:4444 Server HTTP base
VITE_WS_URL client ws://localhost:4444/ws Server WebSocket URL

Development

npm start              # server + client concurrently   (or: bun start)
npm run dev:server     # server only (:4444)            (or: bun run dev:server)
npm run dev:client     # client only (:4445)            (or: bun run dev:client)
npm run check:assets   # verify every bundled sprite is on disk (or: bun run check:assets)
cd server && bun test  # run server tests

For installed end-user copies that follow main, agentquest update runs the equivalent of git pull --ff-only && bun install while preserving local map edits. Contributors on feature branches should use normal Git commands instead.

Missing assets

If you accidentally delete or move files under client/public/assets/themes/tiny-swords-cc0/ (hero spritesheets, building PNGs, terrain, decorations), Agent Quest will tell you:

  • The main app blocks at boot with a screen that lists the missing files grouped by category (hero / building / terrain / decoration) and suggests a restore command.
  • The map editor shows a dismissible banner at the top with the same breakdown — the editor stays usable so you can keep working.
  • Run bun run check:assets any time to verify the whole bundled pack ahead of starting the app. Exits non-zero with a detailed list if anything is missing — good for CI or pre-commit.

Restore with:

git checkout -- client/public/assets/themes/tiny-swords-cc0/

LAN access (view from your phone / iPad)

By default the dev servers only listen on localhost for security. To share the village with other devices on the same Wi-Fi (phone, tablet, another laptop), opt in with a single env flag:

# macOS / Linux — one-off, for this run only
AGENT_QUEST_LAN=1 agentquest          # (or: AGENT_QUEST_LAN=1 bun start)

# Permanent — decide once, then just run `agentquest`
echo "AGENT_QUEST_LAN=1" >> ~/agent-quest/server/.env
echo "AGENT_QUEST_LAN=1" >> ~/agent-quest/client/.env
agentquest

Any env var documented in this README works identically with agentquest — just prefix it on the command line, or add it to the two .env files for a persistent choice.

At startup the server prints reachable LAN URLs, for example:

[Server] LAN mode enabled — reachable from other devices at:
[Server]   http://192.168.1.42:4444 (API)  |  http://192.168.1.42:4445 (UI)

Open the UI URL on the other device. The client auto-detects the host so API and WebSocket calls go to the same Mac. The first time, macOS asks to allow incoming connections — click Allow.

Security note. LAN mode exposes your agents' tool calls, file paths and command output to anyone on the same network. Fine at home; think twice on office / café / conference Wi-Fi.

Windows

Bun officially supports Windows (1.1+), but we don't exercise this project on native Windows and a few dev-tool edge cases exist (file watching under certain paths, spawn semantics). For a frictionless experience on Windows, run Agent Quest inside WSL2:

  1. Install WSL2 following Microsoft's guide (one command: wsl --install in an admin PowerShell).

  2. Open your WSL2 shell (Ubuntu by default) and install Bun:

    curl -fsSL https://bun.sh/install | bash
    
  3. Follow the Manual install steps above, inside the WSL2 shell. The one-line installer is macOS-only.

Native Windows (PowerShell / cmd.exe) should also work after this project's cross-platform shell fixes, but isn't routinely tested. If you hit a Windows-only issue, please open a ticket — pull requests welcome.

Contributing

Issues and pull requests are welcome — bug reports, feature ideas, new building sprites, extra hero classes, anything. See CONTRIBUTING.md for the short version.

Support

If Agent Quest makes your agents feel a little more alive, a beer is always welcome 🍺 — every one helps keep the updates flowing.

Buy me a beer

Credits

  • Sprites, tiles, and decorations: Tiny Swords by Pixel Frog — licensed CC0 1.0 Universal (public domain dedication). Bundled under client/public/assets/themes/tiny-swords-cc0/.

License

MIT © Fulvio Scichilone

Reviews (0)

No results found