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

cawpilot

v1.0.0

Published

Always-on autonomous agent, powered by GitHub Copilot SDK

Readme

cawpilot

Always-on autonomous agent, powered by GitHub Copilot SDK.

Build Status npm version Docker Node.js TypeScript Copilot SDK License: MIT

Features · Getting Started · Usage · Architecture · Skills · Configuration


cawpilot is a personal agent assistant that runs in the background, takes your requests through natural conversation, and gets things done autonomously. It manages code, branches, pull requests, and any workflow you throw at it — as long as you bring the right skills.

It operates in a dedicated sandboxed workspace, cloning your connected repositories and working exclusively in branches (unless you say otherwise).

[!IMPORTANT] cawpilot is built on the GitHub Copilot SDK which is currently in Technical Preview. Consider it an experimental project at this stage.

Features

  • 🤖 Copilot-powered agent — full Copilot SDK with planning, tool invocation, and code editing
  • 💬 Multi-channel — Telegram, HTTP API, and CLI with a unified interface (more to come)
  • 🔀 Parallel task processing — groups related messages into tasks, runs them concurrently
  • 🔒 Branch safety — only works in cp-* branches to protect your main codebase
  • 🧩 Extensible skills — plug in any capability via standard SKILL.md files
  • Scheduled tasks — recurring tasks like daily standups, weekly code cleanups, and more
  • 🔗 GitHub-native — creates PRs, manages repos, persists config in a private repo
  • 🔑 BYOK — bring your own API key (OpenAI, Azure, Ollama etc.) instead of a Copilot subscription

Getting Started

Pick the installation method that suits you best.

Option 1: Local Install

Prerequisites: Node.js 24+, GitHub CLI (gh), Copilot CLI, and a GitHub Copilot subscription (free tier works).

npm install -g cawpilot

Then run the interactive setup and start the agent:

cawpilot setup
cawpilot start

Option 2: Docker

Prerequisites: Docker

Everything is bundled inside the image — no Node.js, gh, or Copilot CLI install needed on your machine.

docker pull ghcr.io/sinedied/cawpilot:latest
# Run interactive setup (workspace is persisted via bind mount)
docker run -it --rm -v ./workspace:/workspace ghcr.io/sinedied/cawpilot setup

# Start the bot
docker run -it --rm \
  -v ./workspace:/workspace \
  -p 2243:2243 \
  ghcr.io/sinedied/cawpilot start

[!TIP] The workspace bind mount persists your configuration, database, and cloned repositories across container restarts.

Since gh auth login is interactive, pass a token via environment variable instead:

docker run -it --rm \
  -v ./workspace:/workspace \
  -e GH_TOKEN=ghp_your_token_here \
  ghcr.io/sinedied/cawpilot start

Usage

CLI Commands

| Command | Description | |---------|-------------| | cawpilot setup | Interactive onboarding and configuration | | cawpilot start | Start the agent with live dashboard | | cawpilot doctor | Run diagnostics (auth, config, connectivity) | | cawpilot send <msg> | Send a message from the CLI channel |

Talking to cawpilot

Send messages through any connected channel:

You: Create a utility function to format dates in the api-server repo
Bot: On it. Creating branch cp-add-date-formatter…
     Done — PR ready: https://github.com/…

Telegram Setup

During cawpilot setup, if you select Telegram:

  1. Create a bot via BotFather and enter the token
  2. A pairing code is generated — send it to your bot to link your account

Architecture

graph TD
    TG[Telegram] --> MQ
    HTTP[HTTP API] --> MQ
    CLI[CLI] --> MQ

    MQ[(SQLite<br/>Messages & Tasks)] --> ORCH

    subgraph Agent
        ORCH[Orchestrator<br/><i>triage & task creation</i>]
        ORCH --> T1[Task Session]
        ORCH --> T2[Task Session]
        ORCH --> T3[Task Session]
    end

    subgraph Copilot SDK
        T1 --> SDK1[Tools + Skills]
        T2 --> SDK2[Tools + Skills]
        T3 --> SDK3[Tools + Skills]
    end

    SDK1 --> WS
    SDK2 --> WS
    SDK3 --> WS

    subgraph Workspace
        WS[Sandboxed repos<br/><code>cp-*</code> branches only]
    end

    T1 -.-> MQ
    T2 -.-> MQ
    T3 -.-> MQ

How it works:

  1. Messages arrive from any channel and are stored in SQLite
  2. The orchestrator polls for new messages and groups them into tasks via the LLM
  3. Each task gets its own Copilot SDK session with tools and skills
  4. Tasks run in parallel (default: 5 concurrent), results are reported back through channels
  5. Completed tasks are archived to .cawpilot/archive/

Skills

Skills are modular capabilities loaded at runtime. Each skill is a directory with a SKILL.md file describing its purpose and instructions.

Built-in Skills

| Skill | Description | |-------|-------------| | find-skills | Search and install skills from skills.sh | | github | GitHub repository operations, PR management | | public-tunnel | Expose local ports publicly for demos | | skill-creator | Create new skills interactively |

Adding Custom Skills

Bundled skills are limited voluntarily to a minimum, to reduce default expose and keep space for customization. You can ask the agent to find and install skills from the skills.sh ecosystem, or create new skills on the fly using the built-in skill-creator skill.

Note that skills aren't limited to development: you can create skills for any workflow: content writing, data analysis, deployment pipelines, or anything else you can describe.

Configuration

Configuration lives in <workspace>/.cawpilot/config.json:

  • Connected channels and credentials
  • Selected repositories
  • Enabled built-in skills
  • Scheduling rules
  • Max task concurrency (default: 5)

Persistence

Optionally sync configuration to a private GitHub repository (default: <user>/my-cawpilot) to back up, share across machines, and version-control your setup.

Contributing

See CONTRIBUTING.md for local dev setup, coding guidelines, and project structure.