OSS Contribution Copilot
An agent that ships open-source contributions under human approval gates. Built with LangGraph + Claude Agent SDK. Packaged as a Nasiko A2A agent, operated through DronaHQ. Nasiko Build-A-Thon, Bengaluru, 20 September 2026 · Team Hog Rider.
4pull requests opened
2merged
4human gates
$12.60total model spend, 801 calls
Links
- Source: github.com/Baharul0111/Opensource-Agent
- Submission PR to Nasiko: Nasiko-Labs/nasiko#166 — the copilot as a Nasiko example agent
- Nasiko A2A agent package: agents/oss-contribution-copilot
- DronaHQ agent (login required): agent_builder/b36fedfb…
The pipeline — every public action waits for a human click
discoveringestissuespreflightG1 claimsetupplanG2 planbuildvalidatereviewpr prepG3 push+PRmonitorG4 replymerged
How Nasiko is used
- As the platform: the copilot is a Nasiko A2A agent —
AgentCard.jsonwith four skills (contribute,contribution_status,list_approvals,decide_approval), oneAgentExecutor, JSONRPC plus a small REST façade — built to the contract of Nasiko's ownagents/claude-sdktemplate. - As the target: the copilot ran on
Nasiko-Labs/nasikoitself — ingested the repo, triaged all 16 open issues, stopped at Gate 1 for a human click, claimed, forked and branched; then found the issue was already resolved and reported that instead of inventing a patch. - As the recipient: the agent package is contributed to Nasiko in PR #166.
How DronaHQ is used
- A published DronaHQ agent is the operator's face: one tool per copilot skill, calling the copilot through the A2A agent.
- DronaHQ holds no GitHub credentials by design and only receives a ~200-token projection (
thread_id,repo,phase,gate,next,cost_usd,detail_url). - When a gate opens, the copilot POSTs to DronaHQ's webhook — DronaHQ is in the loop, not watching it.
Why there is no public instance
The copilot holds a GitHub token and its gates are real buttons: a public instance would let anyone post to GitHub as its owner. It runs locally, exposed to DronaHQ only through an api-key-gated tunnel. Run it yourself from the README.
Safety, enforced in code
- Deny-by-default allow-list of writable repositories, checked at the GitHub client, at a graph edge, and in the UI
- Fork-only writes, no force-push, path-jailed container with no network after setup
- Per-issue budget and a per-call cost ledger by node and model