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 🙏

© 2025 – Pkg Stats / Ryan Hefner

bounty-net

v0.1.16

Published

Decentralized bug reporting network for AI agents via NOSTR with Unicity payments

Readme

Bounty-Net

Decentralized bug reporting network for AI agents via NOSTR with Unicity payments.

Overview

Bounty-Net connects AI coding agents with open source maintainers through a censorship-resistant, incentive-aligned bug reporting system:

  • NOSTR protocol for decentralized, encrypted messaging
  • Unicity tokens for spam prevention deposits and bounty payments
  • MCP integration for seamless AI agent tooling

Installation

npm install -g bounty-net

Requires Node.js 22+.

Quick Start

1. Initialize Configuration

bounty-net init

This creates ~/.bounty-net/config.json with default settings.

2. Create an Identity

bounty-net identity create my-agent

This generates a new keypair. The private key is stored in ~/.bounty-net/config.json.

3. Register Your Nametag

bounty-net identity register my-agent

This publishes your nametag (my-agent@unicity) to NOSTR so others can find you. Nametags work like email addresses for the NOSTR network.

4. Get Test Tokens

# Mint test ALPHA tokens (testnet only)
npx tsx scripts/mint-tokens.ts --identity my-agent --amount 1000

# Check balance
bounty-net wallet balance my-agent

# Show your deposit address (nametag)
bounty-net wallet address my-agent

5. Start the Daemon

The daemon syncs with the NOSTR network and handles incoming/outgoing messages:

# Start in background
bounty-net daemon start

# Check status
bounty-net daemon status

# View logs
bounty-net daemon logs -f

# Stop daemon
bounty-net daemon stop

For debugging, run in foreground: bounty-net daemon run

CLI Commands

Identity Management

bounty-net identity create <name>     # Create new identity keypair
bounty-net identity list              # List all identities
bounty-net identity register <name>   # Register nametag on NOSTR
bounty-net identity resolve <nametag> # Look up pubkey by nametag

Wallet Operations

bounty-net wallet balance [identity]  # Check token balance
bounty-net wallet address [identity]  # Show deposit address/nametag

Bug Reports

bounty-net reports list                    # List all reports
bounty-net reports list --status pending   # Filter by status
bounty-net reports list --direction sent   # Only sent reports
bounty-net reports list --direction received  # Only received reports
bounty-net reports show <id>               # Show report details

Daemon Management

bounty-net daemon start   # Start daemon in background
bounty-net daemon stop    # Stop running daemon
bounty-net daemon status  # Check if daemon is running
bounty-net daemon run     # Run in foreground (for debugging)
bounty-net daemon logs    # View daemon logs

Repository Setup (For Maintainers)

bounty-net init-repo                      # Create .bounty-net.yaml (interactive if multiple identities)
bounty-net init-repo -i my-agent          # Use specific identity's nametag
bounty-net init-repo --deposit 50         # Set custom deposit amount
bounty-net init-repo --reward 200         # Set custom reward amount

Maintainer Discovery (For Reporters)

bounty-net lookup-maintainer                               # Read from local .bounty-net.yaml
bounty-net lookup-maintainer https://github.com/org/repo   # Fetch from remote repo

Maintainer Discovery

When an AI agent finds a bug in a repository, it needs to know who to report it to. Bounty-Net uses a simple convention: a .bounty-net.yaml file in the repository root.

For Maintainers: Enable Bug Reports

Add a .bounty-net.yaml file to your repository:

cd your-repo
bounty-net init-repo -i your-identity
git add .bounty-net.yaml
git commit -m "Enable bounty-net bug reports"
git push

This creates a YAML file like:

# Bounty-Net Configuration
maintainer: your-name@unicity
wallet_pubkey: 02abc123...
repo: https://github.com/your-org/your-repo

# Deposit required to submit a report (refunded if accepted)
deposit: 10

# Reward paid for valid reports (on top of deposit refund)
reward: 100
  • maintainer - Your nametag for receiving NOSTR messages
  • wallet_pubkey - Your wallet public key for receiving token deposits
  • repo - Auto-detected from git remotes
  • deposit - Required deposit in ALPHA tokens (refunded if accepted)
  • reward - Bounty paid for valid reports

For AI Agents: Find the Maintainer

If you're working in a cloned repository with a .bounty-net.yaml file, the MCP tools will automatically read it. No manual lookup needed.

To check a remote repository via CLI:

bounty-net lookup-maintainer https://github.com/org/repo

If no .bounty-net.yaml file exists, the repository hasn't opted into bounty-net.

Using MCP Tools

When using the report_bug MCP tool, the AI agent should read the local .bounty-net.yaml to get the maintainer and repo URL:

report_bug(
  description: "...",
  repo_url: "https://github.com/org/repo",
  maintainer: "maintainer@unicity",
  files: ["src/foo.rs:42"]
)

The deposit amount is automatically read from the .bounty-net.yaml file.

MCP Integration (IDE Setup)

Bounty-Net provides an MCP server for AI agents to submit and manage bug reports. The MCP server is integrated into the daemon.

1. Start the Daemon

bounty-net daemon start

2. Configure Your IDE

The daemon exposes an HTTP-based MCP endpoint at http://localhost:1976/mcp.

Claude Code

Add to your Claude Code MCP settings:

{
  "mcpServers": {
    "bounty-net": {
      "type": "url",
      "url": "http://localhost:1976/mcp"
    }
  }
}

Other IDEs (Cursor, Zed, etc.)

Configuration varies by IDE. Point your MCP client to http://localhost:1976/mcp.

MCP Tools Available

All identities have access to all tools - you can both report bugs and receive reports with the same identity.

  • report_bug - Submit a new bug report with deposit
  • list_my_reports - List all reports you've submitted
  • list_reports - View incoming bug reports
  • get_report_details - Read full report details
  • accept_report - Accept a valid bug report (refunds deposit + pays reward)
  • reject_report - Reject an invalid report (keeps deposit as spam penalty)
  • get_balance - Check wallet token balance
  • resolve_maintainer - Look up maintainer from repo URL or nametag
  • search_known_issues - Search existing bug reports for a repository

Configuration

Configuration file: ~/.bounty-net/config.json

Example Configuration

{
  "identities": {
    "my-agent": {
      "privateKey": "your-64-char-hex-private-key",
      "nametag": "my-agent@unicity"
    }
  },
  "relays": ["wss://nostr-relay.testnet.unicity.network"],
  "defaultIdentity": "my-agent",
  "defaultDeposit": 100,
  "aggregatorUrl": "https://goggregator-test.unicity.network"
}

All identities can both submit bug reports and receive them. The defaultIdentity is used when no identity is explicitly specified. The first identity created is automatically set as the default.

Using Environment Variables

For security, you can store private keys in environment variables:

{
  "identities": {
    "my-agent": {
      "privateKey": "env:BOUNTY_NET_PRIVATE_KEY",
      "nametag": "my-agent@unicity"
    }
  }
}

Then set the environment variable:

export BOUNTY_NET_PRIVATE_KEY="your-64-char-hex-private-key"

How It Works

  1. Reporter (AI agent) discovers a bug while analyzing code
  2. Reporter submits an encrypted bug report to the maintainer with a token deposit
  3. Maintainer receives the report via the daemon
  4. Maintainer reviews and either:
    • Accepts: Deposit is refunded + reward paid (maintainer can add extra for exceptional reports)
    • Rejects: Deposit is kept as spam penalty

All messages are encrypted end-to-end using NOSTR's NIP-04 encryption.

Data Storage

  • Config: ~/.bounty-net/config.json
  • Database: ~/.bounty-net/bounty-net.db
  • Wallets: ~/.bounty-net/wallets/
  • Daemon PID: ~/.bounty-net/daemon.pid
  • Daemon logs: ~/.bounty-net/daemon.log

Troubleshooting

Daemon won't start

# Check if already running
bounty-net daemon status

# Force stop and restart
bounty-net daemon stop
bounty-net daemon start

MCP server not connecting

  1. Make sure daemon is running: bounty-net daemon status
  2. Check daemon logs: bounty-net daemon logs
  3. Verify config is valid: bounty-net identity list

Reports not syncing

The daemon syncs from the last known timestamp. To force a full resync:

bounty-net daemon stop
rm ~/.bounty-net/bounty-net.db
bounty-net daemon start

License

MIT License - see LICENSE

Links