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

@wolpertingerlabs/callboard

v1.0.0-alpha.19

Published

A web-based control panel for managing Claude Code sessions, autonomous agents, and multi-agent workflows

Downloads

1,099

Readme

Callboard

A web UI for Claude Code — chat with Claude agents through your browser instead of the terminal.

Alpha Software — Expect breaking changes between updates.

Callboard gives you a full-featured chat interface on top of the Claude Code agent SDK. You get real-time streaming responses, tool permission controls, image uploads, git integration, and more — all from a browser tab you can keep open alongside your editor.

Quick Start

1. Install

npm install -g @wolpertingerlabs/callboard

Requires Node.js 22+ and the Claude Code CLI installed and authenticated.

2. Set a password

callboard set-password

3. Start the server

callboard start

Open http://localhost:8000 in your browser and log in. That's it.

What You Can Do

  • Chat with Claude agents — real-time streaming with thinking, tool calls, and permission prompts
  • Manage tool permissions — approve, deny, or auto-allow file reads, writes, execution, and web access per session
  • Attach images — drag and drop images for visual context
  • Browse and switch git branches — create worktrees, view diffs, and manage branches from the UI
  • Queue messages — save drafts to send later
  • Use slash commands — autocomplete-enabled commands from your project's configuration
  • Load plugins — extend Claude's capabilities with custom plugins

Agents

Callboard isn't just a chat window — it's a platform for running autonomous Claude agents. Each agent gets its own identity, workspace, memory, and schedule.

Creating Agents

Agents are created from the UI. Each agent has a name, personality, role, and guidelines that shape how it behaves. Behind the scenes, an agent gets:

  • A workspace at ~/.callboard/agent-workspaces/<alias>/ with scaffold files that teach it how to maintain memory, take notes, and work proactively
  • A two-tier memory system — daily journal files for running notes, and a curated long-term MEMORY.md distilled over time
  • Tool permissions — agents default to full access (file read/write, code execution, web access) but you can restrict per session

Triggering Agents

Agents can run in three ways:

  • Cron jobs — scheduled tasks with cron expressions and timezone support. One-off, recurring, or indefinite. A default "heartbeat" job lets agents periodically check in and do proactive work.
  • Event triggers — react to incoming events from external services (Discord messages, GitHub webhooks, etc.) with configurable filters and prompt templates that interpolate event data.
  • Direct invocation — agents can spawn other agents programmatically, creating multi-agent workflows.

Quiet Hours

Agents respect quiet hours — a configurable time window where recurring cron jobs and event triggers are suppressed. One-off scheduled jobs still fire. You can scope quiet hours to just crons, just triggers, or both.

Agent Tools

Agents have access to specialized tools beyond the standard Claude Code toolkit:

  • Start and monitor chat sessions in any directory or branch
  • Manage their own cron jobs and event triggers
  • Discover and orchestrate other agents on the platform
  • Query their own activity logs

Connections & Event Listening

Callboard uses @wolpertingerlabs/drawlatch to give agents authenticated access to external APIs — Discord, GitHub, Slack, Google, Trello, and many more.

How Connections Work

A connection is a pre-configured API route template. Each connection defines the allowed endpoints (URL patterns), required secrets, and auth headers. When an agent makes a request, Drawlatch matches the URL against allowed patterns, injects the right credentials, and proxies the request. Agents never see the raw API keys — they just call secure_request with a URL and Drawlatch handles authentication.

Event Listening

Drawlatch supports real-time event ingestion from external services through three mechanisms:

  • WebSocket listeners — persistent connections to services like Discord Gateway and Slack Socket Mode, with automatic reconnection and heartbeat management
  • Webhook receivers — HTTP endpoints that receive and verify signed payloads from GitHub, Stripe, Trello, and others
  • Pollers — interval-based HTTP polling for services like Notion, Linear, Reddit, and Telegram

Events are buffered in per-caller ring buffers. Agents retrieve them by calling poll_events, which returns new events since the last cursor. This is what powers event triggers — when an agent has a trigger configured for Discord messages, Drawlatch's event listener catches the message and the trigger dispatcher routes it to the right agent.

Local vs. Remote Mode

Drawlatch runs in two modes:

Local mode (default with Callboard) runs Drawlatch in-process. Secrets are read from environment variables on the same machine. There's no encryption layer between Callboard and Drawlatch — they share the same process. This doesn't provide extra security isolation for secrets, but it gives you the full feature set: endpoint allowlisting, structured route resolution, event listening, and all the MCP tools. For a personal server on your own machine, this is the simplest way to get started.

Remote mode separates Drawlatch into two components: a local MCP proxy (which holds no secrets) and a remote secure server (which holds all the API keys). Communication between them is encrypted end-to-end with AES-256-GCM, authenticated with Ed25519 signatures, and protected against replay attacks. The local proxy never sees plaintext secrets. The remote server enforces per-caller access control — each caller only sees routes they've been explicitly granted. This is the right choice when you want secrets isolated from the machine running agents, or when multiple users share a single Drawlatch server with different credentials.

To connect to a remote Drawlatch server, use the sync wizard in Settings → Proxy Settings. It walks you through the key exchange — enter the codes from the remote server, confirm, and you're connected. New caller aliases for agents are also managed from this page.

CLI Reference

callboard start              Start the server (background daemon)
callboard stop               Stop the server
callboard restart             Restart the server
callboard status              Show PID, port, uptime, and health
callboard logs                View and follow server logs
callboard config              Show effective configuration
callboard set-password        Set or change the login password

Options

callboard start -f            Run in the foreground
callboard start --port 3000   Use a custom port (default: 8000)
callboard logs -n 100         Show last 100 log lines
callboard config --path       Print the config file path

Configuration

Callboard stores its config at ~/.callboard/.env (created automatically on first run).

| Variable | Default | Description | | -------------------------- | ------------------------------- | -------------------------------------------- | | PORT | 8000 | Server port | | LOG_LEVEL | info | Log level (error, warn, info, debug) | | SESSION_COOKIE_NAME | callboard_session | Cookie name (change to avoid collisions) | | CALLBOARD_WORKSPACES_DIR | ~/.callboard/agent-workspaces | Where agent workspaces are created |

Passwords are stored as scrypt hashes — plaintext is never saved.

Development

If you want to contribute or run from source:

git clone https://github.com/WolpertingerLabs/callboard.git
cd callboard
npm install
cp .env.example .env       # edit .env and set AUTH_PASSWORD
npm run dev

This starts the frontend on http://localhost:3000 and the backend on http://localhost:3002.

Scripts

| Command | Description | | ------------------ | ------------------------------------ | | npm run dev | Start frontend + backend dev servers | | npm run build | Build for production | | npm start | Start production server | | npm test | Run tests (Vitest) | | npm run lint:all | Lint all files |

Project Structure

callboard/
├── frontend/        React UI (Vite + TypeScript)
├── backend/         Express API server (TypeScript)
├── shared/          Shared TypeScript types
├── bin/             CLI entry point (callboard command)
└── data/            Runtime data — chats, images, sessions (gitignored)

Tech Stack

React 18, Express.js, TypeScript, Vite, Claude Agent SDK, Winston logging, Vitest, ESLint + Prettier.

License

MIT