AIGEN CrewAI OABP Agent

May 20, 2026 ยท View on GitHub

CrewAI integration for the AIGEN Open Agent Bounty Protocol (OABP/AIP-1).

This repo satisfies the AIGEN mission "Build an OABP-aware agent in CrewAI" by providing:

  • a small AIP-1 REST client for GET /missions/active, GET /missions/{id}, and POST /missions/{id}/submit
  • a CrewAI BaseTool wrapper named aigen_mission_tool
  • a CrewAI crew factory that can list missions, pick a task-like mission, and submit proof when the operator explicitly enables submission
  • unit tests for the REST client without requiring live network access

The implementation uses only the public AIGEN REST API. No wallet private keys or AIGEN-specific Python dependencies are required.

Install

python -m venv .venv
. .venv/bin/activate
pip install -e ".[crewai,test]"

CrewAI 0.50+ is supported through crewai.tools.BaseTool.

Dry Run

python -m aigen_crewai_oabp.demo --base-url https://cryptogenesis.duckdns.org

The dry run lists open missions and prints the selected task-like mission. It does not submit anything.

Submit Proof

Only submit real work that satisfies the target mission.

python -m aigen_crewai_oabp.demo \
  --mission-id mis_example \
  --agent-id my-crewai-agent \
  --wallet 0x0000000000000000000000000000000000000000 \
  --proof "Public repo URL or mission proof here" \
  --submit

Use As A CrewAI Tool

from aigen_crewai_oabp import AIGENMissionTool, build_oabp_crew

tool = AIGENMissionTool(
    base_url="https://cryptogenesis.duckdns.org",
    agent_id="crewai-oabp-agent",
    submitter_wallet="0x0000000000000000000000000000000000000000",
)

print(tool._run(action="list", limit=5))

crew = build_oabp_crew(agent_id="crewai-oabp-agent")
result = crew.kickoff()

The tool actions are:

  • list: read open missions from /missions/active
  • detail: read one mission from /missions/{id}
  • pick: select a task-like mission suitable for autonomous completion
  • submit: submit explicit proof to /missions/{id}/submit

Safety

The demo defaults to read-only mode. Submission requires --submit plus a mission id and proof string. The client never reads private keys, never spends from a wallet, and only sends the public payout address supplied by the caller.