The Quality Gate Workflow. Deliverable Received β Litmus Applies Grading Rubric β Score (0-100) Calculated β Feedback & On-Chain Grade Delivered.
In an autonomous agent economy, output quality varies wildly. How do you trust an agent's work without manual human review? Litmus is an AI Quality Gate Agent. It acts as an automated, impartial grader that evaluates deliverables against strict, predefined rubrics. If an agent submits subpar code, writing, or analysis, Litmus rejects it, ensuring only high-quality work passes the gate.
Key Features:
- βοΈ Objective Grading: Evaluates work across multiple rubric categories, assigning a deterministic score from 0-100.
- π§ Quality Gatekeeper: Automatically rejects work that falls below the acceptable threshold.
- βοΈ On-Chain Attestation: Cryptographically signs the grade to ensure the evaluation is immutable and verifiable.
- π Active State Recovery: Resumes and finishes pending grading jobs on container restart.
- β Active Rejections: Rejects mismatched rubrics or negotiation criteria immediately, ensuring requester agents do not hang waiting.
- πΌ Dynamic Payouts: Support for direct address routing to forward grading fees.
Litmus is the constellation's quality oracle: other agents pay it on-chain to grade a deliverable 0β100 against a rubric. A two-model "tribunal" (with a tiebreaker) keeps scoring stable (Ο < 4). Verifiable, paid, impartial grading-as-a-service is a primitive a normal API marketplace can't offer.
graph LR
User([Any Agent / User]) -->|hires to grade| L[Litmus π§ͺ]
M[Maestro πΌ] -->|grade + re-grade in its reflection loop| L
G[Gauntlet π§€] -.->|certifies| L
classDef hot fill:#F59E0B,stroke:#111,color:#111,font-weight:bold;
class L hot;
- Depth: Maestro hires Litmus twice per pipeline β once to grade, once to re-grade the self-corrected draft β making it a high-traffic A2A node.
- Anti-gaming: rubric weights are validated and Format/Clarity is capped at 15% so agents can't farm a passing grade on style alone.
Real CAP grading orders Litmus fulfilled as a provider.
Total real CAP orders: 0 Β· last updated: 2026-06-_
| # | Date | Counterparty (requester) | Amount (USDC) | Order ID | Tx (BaseScan) | Score |
|---|---|---|---|---|---|---|
| 1 | 2026-06-_ | Maestro / external | 0.00 | _ord_β¦_ |
0x⦠| N/100 |
Order IDs + pay tx are in the provider logs and the CROO dashboard. Delete this note once populated.
| Layer | Technology |
|---|---|
| Runtime | Node.js (TypeScript) |
| Ecosystem | Constellation A2A (croo-core) |
| Testing | Vitest |
- Node.js β₯ 20
- npm
- Clone:
git clone https://github.com/edycutjong/litmus.git - Install:
npm install - Configure:
cp .env.example .env.localand fill in your service ID + an LLM key (skip for mock mode)
npm install
CROO_MOCK=true npm run dev # boots the grader provider with no on-chain callsGrading works with no API key (deterministic mock grade); set OPENAI_API_KEY and/or ANTHROPIC_API_KEY to enable the live LLM tribunal. Run npm run stability to reproduce the Ο < 4 scoring-variance harness.
4-stage pipeline: Quality β Security β Build β Deploy Gate
# ββ Code Quality ββββββββββββββββββββββββββββ
make lint # ESLint
make typecheck # TypeScript check
make test # Run tests
make test-coverage # Coverage report
make ci # Full quality gate
# ββ Security ββββββββββββββββββββββββββββββββ
make security-scan # npm audit + license check| Layer | Tool | Status |
|---|---|---|
| Code Quality | ESLint + TypeScript | β |
| Unit Testing | Vitest (32 tests) | β |
| Security (SAST) | CodeQL | β |
| Security (SCA) | Dependabot + npm audit | β |
| Secret Scanning | TruffleHog | β |
dorahacks-croo-litmus/
βββ docs/ # README assets (hero, screenshots)
βββ src/ # Application source code
βββ scripts/ # Build and run scripts
βββ __tests__/ # Vitest test suites
βββ .github/ # CI workflows
βββ README.md # You are here
Containerized for any PaaS. Litmus is a background worker (connects out to the CROO WebSocket β no inbound port):
docker build -t litmus .
docker run --env-file .env.local litmusMIT Β© 2026 Edy Cu
Built for the DoraHacks CROO Hackathon 2026.
