XOps is a CI/CD-native value transfer engine, shipped as a versioned GitHub Action. A repository event (e.g. a merged PR) produces a payment intent, a human signs it, the workflow settles it on-chain, and a receipt is posted back — with no server operated by the project and no secrets required in the default configuration.
- Runs in your CI, not ours — ships as a GitHub Action (
uses: AOSSIE-Org/xops@v1); the maintaining project operates no backend and never holds funds. - Safe by default —
mode: dry-rununless explicitly opted out; a fresh integration needs zero secrets. - Built on x402 v2 (Linux Foundation standard) —
first driver implements the
exactscheme over EIP-3009transferWithAuthorization(USDC). - Strict layer boundary — the core engine and adapters never import a chain library, hash
primitive, or token address; every rail lives behind a
SettlementDriverinsrc/drivers/. See AGENTS.md for the enforced invariants. Adding a network is a config-only change, verified in CI by diffing that no core files changed. - Idempotent by construction — re-running a workflow reproduces the same settlement key;
AUTH_ALREADY_USEDis treated as success, not failure. - Minimal dependency surface — runtime dependencies are capped at 2 packages
(
@noble/curves,@noble/hashes), enforced in CI.
- Runtime: Node.js ≥ 20, TypeScript, bundled with
@vercel/nccinto a committeddist/ - Distribution: GitHub Action (
action.yml,using: node20) - Protocol: x402 v2 —
exactscheme, EIP-3009 / EIP-712, CAIP-2 network identifiers - Chain (Tier 1 target): Base Sepolia, USDC — see
assets/chains.json - CLI:
npx xops verify | encode— fully offline, no keys or network required
Six layers, one rule: nothing in src/core/** or src/adapters/** may import a chain library,
token address, RPC URL, or chain-specific primitive. See AGENTS.md for the full
rationale and the CI-enforced invariants (I1–I13).
L5 RECEIPT SettlementResponse → PR comment + machine-readable receipt
L4 SETTLEMENT driver registry: (scheme × network) → driver ← only layer that knows rails
L3 AUTHORIZATION PaymentPayload — who approved, cryptographically
L2 INTENT PaymentRequirements — what moves, to whom
L1 POLICY offline gates, no network
L0 TRIGGER repo event → Intent
- Node.js ≥ 20
- npm
No secrets are required for the default dry-run path:
# .github/workflows/reward.yml
on:
issue_comment: { types: [created] }
permissions: { issues: write, pull-requests: write }
jobs:
pay:
if: startsWith(github.event.comment.body, '/send')
runs-on: ubuntu-latest
steps:
- uses: AOSSIE-Org/xops@v1git clone https://github.com/AOSSIE-Org/XOps.git
cd XOps
npm install
npm run check # lint + layer-boundary check + dependency-count check + testsSee CONTRIBUTING.md for the full contribution workflow and ROADMAP.md for what's being built and in what order.
⭐ Don't forget to star this repository if you find it useful! ⭐
Thank you for considering contributing to this project! Contributions are highly appreciated and welcomed. To ensure smooth collaboration, please refer to our Contribution Guidelines.
See MAINTAINERS.md for maintainers, mentors, and ideators.
This project is licensed under the MIT License. See the LICENSE file for details.
Thanks a lot for spending your time helping XOps grow. Keep rocking 🥂
© 2026 AOSSIE
