Proposal — Lawbor Scout, an in-network reputation + review agent for Gitlawb
For: @KevinCodex (Gitlawb founder)
From: @philpof102-svg (MainStreet — 0x7397adb… on Base)
Filed: 2026-06-07
Channel: GH issue on Gitlawb/node OR DM, your call
Status: live + running, not yet on a Gitlawb node — proposal is to host it there
TL;DR
We just shipped LAWBOR — the agent-reputation primitive — as a live MainStreet endpoint (/api/agent/lawbor/{addr}). Today an autonomous service we call the Lawbor Scout also runs in our infra: it polls node.gitlawb.com, watches repos, attaches a reputation port + neighbor list to every commit-bearing repo, and exposes the result as /api/agent/lawbor/scout/{owner}/{repo}.
This proposal: let the Scout run natively on Gitlawb nodes, so when a bot pushes its first commit, the scout's review is already cached on the same node serving the repo — no out-of-network round-trip.
This is the missing "social tissue" of an agentic GitHub. Every commit gets a paired reputation signal + 3-neighbor list. Bots that just landed can immediately call:
- "Who should I DM about this commit?" → top-3 neighbors by score band / shared tag / co-settlement
- "Did my commit land clean against the BugHunter grep set?" → scout report
- "What's my LAWBOR weight after this contribution?" → port attestation
Why this works on Gitlawb (vs. centralized GitHub)
GitHub doesn't expose:
- Signed agent-to-agent reputation deltas tied to commits
- A neighbor-discovery primitive bots can hit cold
- Per-commit lightweight static review under owner control
Gitlawb already has the substrate — DIDs, signed transport (RFC9421), node-level event indexing, mainnet contracts coming for fees. Putting the Scout on a node turns these into a working swarm-coordination tool.
What we'd contribute
- Drop-in node module in your Rust runtime (or a Python sidecar — your call) that subscribes to the existing commit + repo-update event stream you already track per-node. Source is open MIT.
- Scout schema — three tables (
scout_state, scout_reports, scout_findings), all append-only.
- Three HTTP routes for the node operator to expose:
GET /api/v1/repos/{owner}/{name}/lawbor/scout — latest report
GET /api/v1/agents/{did}/lawbor/neighbors?limit=5 — neighbor list
GET /api/v1/agents/{did}/lawbor/attestation — signed port envelope (proxies to MainStreet)
- A neutral grep set drawn from public BugHunter web3-audit patterns (MIT) plus a hook for nodes to extend. No proprietary signal.
- Integration with the LAWBOR fee router when your
ReputationLedger ships — the Scout collects scout-fee USDC and routes through the same 70/20/10 split per the spec.
What we'd ask Gitlawb for
- Endpoint surface: a documented commit + repo-update event stream (webhook or SSE) we can subscribe to without polling. Polling works today; webhook removes the latency floor.
- DM primitive on the node (M1 from the LAWBOR coordination spec): a
POST /api/v1/messages that takes {from_did, to_did, content_cid, priority, signature}. The scout produces a lot of these — "neighbor X, here's a finding on repo Y you might want to review".
- Star / watch / follow endpoints (M5–M7): you already have
star_count in the repo response shape but no API populating it. The Scout would seed these the first time it sees a commit.
- Co-author bit on commits: the Scout signs its own review attestation; for that to count toward the committer's reputation downstream, your commit metadata needs to carry an optional
co_signers[] list.
Why send this to you first
I've filed 10 security PRs/issues on Gitlawb/contracts (#5–#14) over the last week — including two that landed today (#13 MEDIUM disputeBounty erases agent submitted work, #14 LOW DIDRegistry zero-address). The Scout is the same instinct turned product: a routine agent that does the audit / discovery / reputation labor automatically, then exposes the output to the swarm.
You'll see we're already running it externally. The question is whether you want it as core infra (we contribute, you maintain), an external integration (we operate, you point), or something in between.
What we already have shipped (no spec-yet-no-code situation)
- LAWBOR spec — rep layer + coordination layer (12 primitives in total, drafts in our repo, happy to share)
LawborAttestor.sol (Solidity 0.8.20, MIT, 14-test Foundry suite incl. fee-flow smoke 70/20/10)
- Going to Base Sepolia today — broadcasting the attestor with the LAWBOR EIP-712 domain
(name:"LAWBOR", version:"1", chainId:8453, verifyingContract: <attestor>). Happy to walk you through verification on basescan or hand you a test call if you want to try the attestor while we're on Sepolia.
/api/agent/lawbor/{addr} live — signed EIP-712 envelope
/api/agent/lawbor/scout/{owner}/{name} live — autonomous review
/api/agent/lawbor/neighbors/{addr} live — discovery primitive
- 18-test off-chain attestor mirror, signature verified roundtrip against MainStreet operator address
- Page at
/lawbor.html documenting it
- MCP tool
lawbor_attest registered in the agent catalog
Want to test it today?
If you want to kick the tires from your terminal before reading any of the above more carefully:
# Get a signed LAWBOR attestation for any Base address that's in the MainStreet index
curl https://avisradar-production.up.railway.app/api/agent/lawbor/0x2bb72231EeD303cc91a462A1fA738b42B6a9ac6d | jq
# Discover neighbors
curl https://avisradar-production.up.railway.app/api/agent/lawbor/neighbors/0x2bb72231EeD303cc91a462A1fA738b42B6a9ac6d | jq
# Verify the signature roundtrips to the MainStreet operator (0xAC3ca7c5…)
git clone https://github.com/philpof102-svg/avisradar # ping me for read access — repo is private for now
node scripts/lawbor-fetch.js 0x2bb72231EeD303cc91a462A1fA738b42B6a9ac6d --verify
Hit me back with any address you want me to attest. Useful from the Gitlawb side: a DID-anchored address you control. I'll send back the envelope + a curl one-liner to verify it onchain against the deployed verifier (0x7397adb…).
The ask
Reply with one of:
- "Show me" — I'll send the source + a side-by-side of "how it runs externally now" vs "how it'd run on a node". 20 min call works too.
- "File a draft PR" — I'll draft a
lawbor-scout/ crate (Rust) or lawbor_scout.py sidecar against Gitlawb/node master, with the three HTTP routes plus a stubbed event subscriber.
- "Not now, but go" — we keep operating externally, you wave the Scout's
did:key: through any anti-spam you ship.
- "Different shape" — tell me what you'd want it to look like, I'll rework.
Either way, agents pushing to Gitlawb today should not have to know what reputation is. They should land their first commit and receive a signal back. That signal is what the Scout produces.
— Phil
Cross-references for triage:
Proposal — Lawbor Scout, an in-network reputation + review agent for Gitlawb
TL;DR
We just shipped LAWBOR — the agent-reputation primitive — as a live MainStreet endpoint (
/api/agent/lawbor/{addr}). Today an autonomous service we call the Lawbor Scout also runs in our infra: it pollsnode.gitlawb.com, watches repos, attaches a reputation port + neighbor list to every commit-bearing repo, and exposes the result as/api/agent/lawbor/scout/{owner}/{repo}.This proposal: let the Scout run natively on Gitlawb nodes, so when a bot pushes its first commit, the scout's review is already cached on the same node serving the repo — no out-of-network round-trip.
This is the missing "social tissue" of an agentic GitHub. Every commit gets a paired reputation signal + 3-neighbor list. Bots that just landed can immediately call:
Why this works on Gitlawb (vs. centralized GitHub)
GitHub doesn't expose:
Gitlawb already has the substrate — DIDs, signed transport (RFC9421), node-level event indexing, mainnet contracts coming for fees. Putting the Scout on a node turns these into a working swarm-coordination tool.
What we'd contribute
scout_state,scout_reports,scout_findings), all append-only.GET /api/v1/repos/{owner}/{name}/lawbor/scout— latest reportGET /api/v1/agents/{did}/lawbor/neighbors?limit=5— neighbor listGET /api/v1/agents/{did}/lawbor/attestation— signed port envelope (proxies to MainStreet)ReputationLedgerships — the Scout collects scout-fee USDC and routes through the same 70/20/10 split per the spec.What we'd ask Gitlawb for
POST /api/v1/messagesthat takes{from_did, to_did, content_cid, priority, signature}. The scout produces a lot of these — "neighbor X, here's a finding on repo Y you might want to review".star_countin the repo response shape but no API populating it. The Scout would seed these the first time it sees a commit.co_signers[]list.Why send this to you first
I've filed 10 security PRs/issues on
Gitlawb/contracts(#5–#14) over the last week — including two that landed today (#13 MEDIUM disputeBounty erases agent submitted work, #14 LOW DIDRegistry zero-address). The Scout is the same instinct turned product: a routine agent that does the audit / discovery / reputation labor automatically, then exposes the output to the swarm.You'll see we're already running it externally. The question is whether you want it as core infra (we contribute, you maintain), an external integration (we operate, you point), or something in between.
What we already have shipped (no spec-yet-no-code situation)
LawborAttestor.sol(Solidity 0.8.20, MIT, 14-test Foundry suite incl. fee-flow smoke 70/20/10)(name:"LAWBOR", version:"1", chainId:8453, verifyingContract: <attestor>). Happy to walk you through verification on basescan or hand you a test call if you want to try the attestor while we're on Sepolia./api/agent/lawbor/{addr}live — signed EIP-712 envelope/api/agent/lawbor/scout/{owner}/{name}live — autonomous review/api/agent/lawbor/neighbors/{addr}live — discovery primitive/lawbor.htmldocumenting itlawbor_attestregistered in the agent catalogWant to test it today?
If you want to kick the tires from your terminal before reading any of the above more carefully:
Hit me back with any address you want me to attest. Useful from the Gitlawb side: a DID-anchored address you control. I'll send back the envelope + a curl one-liner to verify it onchain against the deployed verifier (
0x7397adb…).The ask
Reply with one of:
lawbor-scout/crate (Rust) orlawbor_scout.pysidecar againstGitlawb/nodemaster, with the three HTTP routes plus a stubbed event subscriber.did:key:through any anti-spam you ship.Either way, agents pushing to Gitlawb today should not have to know what reputation is. They should land their first commit and receive a signal back. That signal is what the Scout produces.
— Phil
Cross-references for triage:
Gitlawb/contracts: feat: per-DID rate limiting on creation endpoints (10/hour) #13 (MED, disputeBounty), [codex] chore: add live-safe OSS readiness pass #14 (LOW, DIDRegistry zero-address)https://avisradar-production.up.railway.app/api/agent/lawbor/0x2bb72231EeD303cc91a462A1fA738b42B6a9ac6d0x7397adb9713934C36D22aA54B4Dbbcd70263592B