Skip to content
Conduit

mcp server

bounty-net

jvsteiner/bounty-netcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • Node.js 20 or newer
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "bounty-net": {
      "command": "npx",
      "args": [
        "-y",
        "bounty-net"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 23, 2026

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

↑↓ navigate openesc close