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}, andPOST /missions/{id}/submit - a CrewAI
BaseToolwrapper namedaigen_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/activedetail: read one mission from/missions/{id}pick: select a task-like mission suitable for autonomous completionsubmit: 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.