Self-hosted service
omnuron/omniclaw avatar
omnuron/omniclaw

OmniClaw: A Policy Engine That Sits Between an Agent and Its Wallet

The first agentic payment network: policy-controlled, gasless, and real money-ready. OmniClaw CLI + Financial Policy Engine let autonomous agents pay and earn safely at machine speed.

578 stars43 forksPythonMIT

At a glance

What is it?
OmniClaw is an MIT-licensed Python buyer SDK and CLI that routes agent payments through a financial policy engine instead of handing software unrestricted wallet authority. The design is narrow and legible, but the project is at v0.0.8 and the README leaves operational and security questions open.
Who is it for?
Adopt OmniClaw if you are building the buyer side of an agent payment flow and want budgets, approvals and idempotency enforced outside the agent process, and you are comfortable running a policy server and a Docker Compose stack from an early-stage repository. Do not adopt it if you need recipient-side paid endpoint hosting, settlement, or a stable API surface, because the README explicitly assigns those to other products and the version is 0.0.8.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 110 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem OmniClaw targets: agents that can spend but should not be trusted with a wallet

Give an autonomous agent a private key and you have given it an unbounded spending authority. The README frames the project around exactly that gap: letting agents and applications pay through controlled, auditable rails without giving software unrestricted wallet authority. The intended user is the builder of an agent that needs to buy something at runtime, typically a paid API call, and who wants a budget ceiling and an approval step outside the agent's own code. OmniClaw core is the buyer side only. The README states plainly that core should not include recipient-side paid endpoint hosting or settlement service code, and the product boundary table assigns core the buyer SDK, the policy engine, wallet and payment routing, x402 buyer execution, and Gateway buyer readiness. If you are selling an endpoint and want to accept agent payments, this repository is not the piece you install.

How the policy engine and the two buyer rails fit together

OmniClaw exposes a Python buyer SDK through OmniClaw().pay(...) and a CLI with three verbs: pay, inspect-x402, and can-pay. Both go through a policy engine that the README describes as owning budgets, approvals, trust checks and execution control, plus ledger, idempotency, simulation and payment-intent controls. Two buyer rails are documented. circle_transfer is for direct Circle Developer Wallet transfers. x402 is for paid API payments, and the README says OmniClaw chooses between a Gateway nanopayment and the standard x402 payment path internally, based on what the seller accepts, the buyer configuration, and the Gateway balance. That routing decision is the interesting part: the caller does not pick a rail. The can-pay verb appears to be the pre-flight check for that decision, and inspect-x402 the discovery step, though the README does not spell out either command's output. The policy file is described as stable configuration, with generated wallet state written separately to examples/agent/buyer/runtime/wallet-state.json. Keeping spend rules and key material in different files is a sensible split, and it makes the policy file the artifact you would review or diff.

Getting the policy engine running from the documented quickstart

The installation path is a pip install omniclaw followed by a Docker Compose stack. The README's quickstart copies .env.example to .env, then copies examples/agent/buyer/policy.example.json to examples/agent/buyer/runtime/policy.json, with an instruction to edit that file so the token matches OMNICLAW_AGENT_TOKEN. The stack starts with docker compose -f examples/agent/buyer/docker-compose.yml --env-file .env up --build. Two buyer modes are documented. Hybrid is the default, and it requires CIRCLE_API_KEY, ENTITY_SECRET, OMNICLAW_PRIVATE_KEY, OMNICLAW_AGENT_TOKEN, OMNICLAW_OWNER_TOKEN, OMNICLAW_NETWORK and OMNICLAW_RPC_URL. Setting OMNICLAW_BUYER_MODE=x402 switches to an x402-only Gateway mode where CIRCLE_API_KEY and ENTITY_SECRET can stay empty unless you want the optional Circle Gateway API helpers, and the remaining five variables are still required. To drive the CLI, the README sources the env file, exports OMNICLAW_SERVER_URL as http://127.0.0.1:9091 and sets OMNICLAW_TOKEN to the value of OMNICLAW_AGENT_TOKEN. The documented example payments are omniclaw-cli inspect-x402 --recipient "http://127.0.0.1:4023/compute?size=20" and omniclaw-cli pay --recipient "http://127.0.0.1:4023/compute?size=20" --amount 0.10 --idempotency-key job-123. Note the two-token model: an agent token for the CLI and a separate owner token. The README does not explain what the owner token authorises, which is the first thing I would want clarified before exposing this to anything.

Idempotency keys are the real safety feature, and the README underplays them

The pay example carries --idempotency-key job-123. In an agent loop, retries are normal: a timeout, a crashed worker, a restarted container. Without a deduplication key, a retry becomes a second payment. The README lists idempotency and simulation among the controls the policy engine owns, but it does not document the key's scope, how long a key is remembered, or what happens when the same key arrives with a different amount. That matters because the safe behaviour and the convenient behaviour differ. If a reused key with a changed amount is rejected, callers must generate fresh keys per logical job. If it silently replays the earlier payment, a caller that reuses keys across jobs will underpay and never notice. Simulation is mentioned in the same list with no command attached, so there is no documented way to dry-run a payment before committing it. For a system whose whole premise is controlled spending, the absence of a documented simulate verb is the largest gap in the material.

Where OmniClaw is the wrong tool

The boundary is explicit and worth taking at face value. Core is buyer-only, and the README states it should not include recipient-side paid endpoint hosting or settlement service code. If your goal is to charge agents for an API, you need the seller-side component, which is not in this repository. Second, the project is at v0.0.8, with v0.0.7 and v0.0.6 landing roughly five and six weeks earlier. Three releases in that window is a fast cadence for a payments library, and fast cadence at 0.0.x usually means the Python surface can move. Pinning a version and reading the diff between releases is the only responsible way to depend on OmniClaw().pay(...) today. Third, the quickstart assumes you can run a policy server and a Compose stack alongside your agent. If your agent runs in a constrained environment where you cannot reach an OMNICLAW_SERVER_URL, the CLI path is closed to you. Fourth, the hybrid mode pulls in Circle credentials and an RPC endpoint, so you are operating wallet infrastructure, not just calling an API. Teams without anyone who wants to hold that responsibility should look elsewhere.

The alternative: calling an x402 endpoint directly

The obvious comparison is the plain x402 flow, where an agent hits a paid endpoint, receives a payment requirement, signs a transfer and retries the request. That path has no policy server, no separate owner token, no Docker Compose file and no policy.json to keep in sync. It is fewer moving parts and fewer credentials. The difference is where the limits live. With the direct approach, the budget is whatever the code in the agent decides, and the agent process holds the key. OmniClaw moves that decision into a separate service that the README describes as owning budgets, approvals, trust checks and execution control, with a ledger and idempotency on top. You are trading operational surface for enforcement that survives a buggy or compromised agent. That trade is worth it when an agent runs unattended against real funds, and it is pure overhead when you are prototyping against a test endpoint or when a human approves every payment anyway. The README's own can-pay verb suggests the intended pattern is to ask permission before acting, which only pays off if the agent cannot bypass the question.

Licence, maintenance and what the version number implies

OmniClaw is MIT-licensed, which permits commercial use and modification with the usual requirement to carry the licence notice. That is permissive enough for most products, but the licence covers the code, not the credentials you put in .env. Nothing in the README says how OMNICLAW_PRIVATE_KEY, OMNICLAW_OWNER_TOKEN or ENTITY_SECRET should be stored, rotated or scoped, and those are the values that carry financial risk. Treat that as your problem, not the project's, and check whether the example Compose file expects them as plain environment variables. On maintenance, the repository is not archived and was last pushed in May 2026, with v0.0.8 published the same day. The stated development entry point is uv run pytest for core tests, so there is a test suite to run against any version you pin. What the material does not give you is a compatibility policy, a deprecation process, or a changelog beyond release tags. At 0.0.x, assume the CLI flags and the policy.json schema can change between minor versions, and read the policy.example.json in each release before upgrading. The MIT licence means you can fork and pin if upstream moves faster than your deployment cycle allows.

Editorial conclusion

Adopt OmniClaw if you are building the buyer side of an agent payment flow and want budgets, approvals and idempotency enforced outside the agent process, and you are comfortable running a policy server and a Docker Compose stack from an early-stage repository. Do not adopt it if you need recipient-side paid endpoint hosting, settlement, or a stable API surface, because the README explicitly assigns those to other products and the version is 0.0.8. Before wiring it to real funds, verify how OMNICLAW_PRIVATE_KEY and OMNICLAW_OWNER_TOKEN are stored and rotated, confirm whether policy.json changes require a restart, and read the policy.example.json fields against your own spend limits.

Official sources

  1. License: MIT
  2. omnuron/omniclaw on GitHub
  3. Project website
  4. README
  5. Releases
Community notes

Community notes