I fine-tuned Qwen3-4B for one narrow job and released it Apache-2.0: answer approve, hold, or reject — with a reason code — when an agent proposes a payment, before anything gets signed. It runs locally, no API key, no account.
ollama run sriram1983007/sra-riskgate HF: https://huggingface.co/sriram1983007/SRA-RiskGate-4B
The part I actually want to talk about is what happened after I published it. A reader (Carlos, dev.to bloqarl) left two comments on the write-up, a day apart, and both turned into shipped fixes:
Oct 26: he flagged an EIP-7702 authorization gap — a delegated account could slip past the gate. Fixed in 0.12.1. Oct 28: he proposed reading the account code (eth_getCode) on an already-delegated account. Shipped in 0.16.0 / MCP 0.9.2 / ElizaOS 0.5.0: if the code is a 0xef0100 delegation to a delegate outside the expected list, the gate holds with ACCOUNT_DELEGATED. He's credited in all three changelogs. That is the open-source loop working as advertised, and it is also why I am posting here rather than just announcing a release: the model is only as good as the holes people find in it.
Honest limits, since this is my own published split, not an independent benchmark: on the 1,175-case risk-gate test split I published, decision accuracy is 99.5% with 0.47% unsafe approvals. The dispute side is the weak spot — 77.8% on my published set, with a conservative over-denial bias. I would not trust it alone there. The SDK/MCP code has been through four published-package audits, latest Audit #14 (Nov 6, core 1.0.0 / MCP 0.13.0, runtime clean); the model weights and benchmark claims themselves remain unaudited, so treat the numbers above as claims with receipts attached, not a verdict.
Third-party quants exist if you do not want my build: mradermacher's GGUF (577 downloads in the last 30 days) and tinyopsec's GGUF (630 — ahead now), both unprompted.
What I would genuinely like from people who run models locally: what would you want a local gate to check before your agent signs anything — and what would make you trust a 4B fine-tune to do it, versus a rules-only check with no model at all?
Links:
Model: https://huggingface.co/sriram1983007/SRA-RiskGate-4B Ollama: https://ollama.com/sriram1983007/sra-riskgate SDK: https://github.com/sriram1983007-dev/sra-riskgate Full write-up with testnet receipts: https://dev.to/sriram1983007/an-agent-paid-and-a-gate-stopped-two-payments-with-receipts-1ep6
