npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

questboard

v0.1.1

Published

Companion app that runs multiple Claude Code workers in parallel against your Git repository, with a kanban-style review board.

Downloads

302

Readme

questboard

Run multiple Claude Code agents in parallel from a local Kanban board.

Each card gets its own worker branch, Git worktree, transcript, review state, and merge path — without copying your source code into questboard.

questboard demo

Why questboard?

Claude Code is great at working through one task. Coordinating several AI coding tasks manually gets messy fast: terminal tabs, temporary branches, repeated context, hidden logs, and unclear review state.

questboard gives that work a board. Create cards, move them to Ready, watch workers run, review their diffs, and keep the whole workflow local to your repository.

Features

  • Parallel agent work — run several Claude Code workers against one repo.
  • Git worktree isolation — every card runs on its own worker/card-<id> branch and checkout.
  • Visible review flow — track Backlog, Ready, In Progress, AI Review, Stuck, Merging, and Done states.
  • Local-first runtime — cards, logs, transcripts, SQLite, and worktrees live under .questboard/.
  • Human control points — stuck questions, review notes, diffs, and merge results surface back to the board.
  • Session auth by default — use your existing claude login; API keys are optional for bare/proxy/non-interactive setups.

Quickstart

Requirements:

  • Node.js 20+
  • Git with at least one commit in the repo
  • Claude Code CLI installed and logged in (claude login)

Run questboard inside any Git repository:

cd your-repo
npx questboard init
npx questboard start

Open http://localhost:3030. You should see an empty board. Create a card, move it to Ready, and questboard will spawn a worker in .questboard/worktrees/.

Press Ctrl+C to stop foreground mode.

For background operation:

npx questboard start --detach
npx questboard status
npx questboard logs
npx questboard stop

How it works

  1. questboard init creates .questboard/ runtime files in your repo and adds .questboard/ to .gitignore.
  2. You create cards in the UI.
  3. The dispatcher claims Ready cards up to the configured concurrency limit.
  4. Each worker runs Claude Code in a separate Git worktree and branch.
  5. Completed worker commits move to AI Review with a diff and transcript.
  6. Approved work moves through merge; rejected or stuck work returns to the board with context.

Concepts

  • Card — one unit of work, stored as markdown under .questboard/data/cards/.
  • Worker — a Claude Code process that implements a card.
  • Reviewer — a Claude Code process that reviews a worker branch.
  • Merger — the merge step that lands approved work.
  • Worktree — an isolated Git checkout for one card.
  • Base branch — the branch workers compare against. By default questboard tries origin/main, main, master, then HEAD.

What init creates

your-repo/
  .questboard/
    .env                # ports, concurrency, auth mode, paths
    config.json         # live board config
    data/
      cards/            # one card directory per task
      archive/          # archived cards
      board.sqlite      # derived index, rebuilt from cards/ at boot
      logs/             # server / dispatcher jsonl logs
    worktrees/          # per-card Git worktrees
    run/                # pid + log files for detached mode
  .questboardignore     # optional paths hidden from worker worktrees
  .gitignore            # `.questboard/` appended if missing

.questboard/ is local runtime state. Do not commit it.

Configuration

Most users can keep the generated .questboard/.env as-is.

Common settings:

| Key | Default | Purpose | | --- | --- | --- | | BOARD_UI_PORT | 3030 | Board UI port. | | BOARD_SERVER_PORT | 3031 | API/SSE port. | | BOARD_CONCURRENCY | 4 from init | Maximum concurrent workers before live config overrides it. | | BOARD_BASE_BRANCH | auto | Optional base branch override, e.g. develop. | | BOARD_DATA | .questboard/data | Card files, SQLite, logs, archive. | | BOARD_WORKTREES | .questboard/worktrees | Per-card Git worktrees. | | TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID | empty | Optional stuck/review/done notifications. |

Auth modes

questboard reads ANTHROPIC_API_KEY from .questboard/.env to decide how to invoke Claude Code.

  • Session mode, default — leave ANTHROPIC_API_KEY blank and use your interactive claude login session.
  • Bare mode — set ANTHROPIC_API_KEY when you need proxy, multi-host, or non-interactive operation. ANTHROPIC_BASE_URL is optional and only meaningful with a key.

Switching auth mode requires restarting questboard.

Local data and privacy

questboard is local-first, but it does run AI workers against your Git checkout.

Do not commit .questboard/. It may contain prompts, card descriptions, transcripts, logs, source diffs, model output, local filesystem paths, worktrees, and credentials accidentally pasted into cards.

questboard is designed for trusted local use. Do not expose the unauthenticated API/UI directly to the public internet.

See SECURITY.md for supported usage and vulnerability reporting.

Limitations

questboard is probably not right for you if you need:

  • a hosted multi-user SaaS board
  • production-grade authentication around the UI/API
  • public internet exposure without additional network controls
  • Windows support today
  • agents that run without access to a local Git checkout

Troubleshooting

fatal: invalid reference: origin/main

Older questboard builds required origin/main. Current builds support local-only repos and fall back through origin/main, main, master, then HEAD. Make sure your repo has at least one commit:

git log --oneline -1

If your base branch is not main, set it in .questboard/.env:

BOARD_BASE_BRANCH=develop

Restart questboard after changing .questboard/.env.

UI opens but /api/* requests fail

Make sure both UI and API are running:

npx questboard status

Default ports are UI 3030 and API 3031.

Port already in use

Edit .questboard/.env:

BOARD_UI_PORT=3032
BOARD_SERVER_PORT=3033

Then restart questboard.

Worker seems stuck after finishing

Workers transition only after their Claude Code process exits and the dispatcher routes the result. Check logs:

npx questboard logs dispatcher

CLI reference

questboard init             initialize .questboard/ in the current Git repo
questboard start            run server + dispatcher + UI in foreground
questboard start --detach   run in background and write pids/logs to .questboard/run/
questboard stop             stop a detached run for this project
questboard status           show detached role pids and liveness
questboard logs [role]      tail logs for server | dispatcher | ui

Useful start flags:

| Flag | Effect | | --- | --- | | --root <path> | Override project root. | | --no-server | Skip the API server. | | --no-dispatcher | Skip worker spawning; server + UI only. | | --no-ui | Headless API + dispatcher. | | --detach | Spawn detached and return immediately. |

Advanced usage

Split-host UI/API

Single-host localhost is the default. For split-host deployments, run API + dispatcher on one host and UI on another.

Backend host:

BOARD_CORS_ALLOWED_ORIGINS=https://questboard.example.com
npx questboard start --no-ui --detach

Frontend build/run:

NEXT_PUBLIC_API_BASE_URL=https://api.example.com pnpm --filter ./ui build
npx questboard start --no-server --no-dispatcher --detach

PM2

PM2 is optional. questboard start --detach is the recommended built-in supervisor for local use. If you already standardize on PM2, an example ecosystem.config.js ships in the package.

Development

This repo is questboard's source.

git clone https://github.com/bsangs/questboard.git
cd questboard
pnpm install
pnpm build
pnpm typecheck

Workspace layout:

  • board/core/ — shared TypeScript schemas, card types, and state machine helpers.
  • board/server/ — REST/SSE API, SQLite persistence, card files, merge automation, and optional Telegram alerts.
  • board/dispatcher/ — watches Ready cards and spawns worker / reviewer / merger processes.
  • board/worker-tools/ — CLI binary plus helper commands for spawned agents.
  • board/prompts/ — runtime system prompts.
  • ui/ — Next.js board UI.

For local development, pnpm dev:server, pnpm dev:dispatcher, and pnpm dev:ui run each role separately.

Contributing

Contributions are welcome. See CONTRIBUTING.md for expectations, safety boundaries, and the review checklist.

License

questboard is licensed under the MIT License. See LICENSE.