Skip to content
Apache-2.0Privy-nativeVirtuals-ready49 tests7 venues14 chains

Open Agent Wallet

One authority. Any chain. Any venue.

Vendor-neutral wallet infrastructure for AI agents as economic actors — one agent authority, plug-and-play venue binding, cross-chain funding, and prompt-injection-safe execution. Built on Privy, enriched by Virtuals.

north-star.ts — brain holds no keys
const intent = await oaw.intent.classify(userMessage);   // reasoning, not keywords
if (intent?.isAction)
  await oaw.venues.bind(user, intent.venue!, {}, { allowAutoCreate: true });
const plan = await oaw.funding.resolve({ user, venue: "polymarket", amountUsd: 50 });
const res  = await oaw.venues.execute(user, "polymarket",
  { kind: "trade", side: "YES", market, amountUsd: 50 }, { execute: confirmed });
// → receipted · policy-gated · the LLM never held a key

👤

0
Venues
0
Chains
0
Tests
0
Layers

Architecture

The brain plans. The backend signs.

A deliberate security boundary: the LLM never holds a key, so prompt injection can't move money. Five layers run between intent and execution.

🧠
Brain (LLM)
Plans only. Holds no keys. Cannot sign.
L1🔑
Agent Authority
Privy wallet (A) or linked Virtuals wallet (B). One authority per agent.
L2🔌
Venue Binding
Pre-bind gate resolves authority before any venue setup. Plug-and-play.
L3🌉
Cross-chain Funding
Deposit addresses, bridges, swaps across the CAIP-2 set.
L4
Execution
agent_authority block, fail-closed, policy-gated, receipted.
L5🛡️
Intent Safety
Reasoning classifier — questions defer, ambiguity clarifies.
🔐
Backend (Executor)
Signs deterministically under policy.
✅ receipt · on-chain · policy-verified

Plug-and-play venues

Add a venue with data + one adapter

No core changes. Seven ship today — EVM and non-EVM — including the ACP-native Mode B path through the Virtuals sidecar. Virtuals.io supports three chains; OAW does not limit you.

📊
Polymarket
Polygon
Mode A
🌊
Hyperliquid
Arbitrum
Mode A
🚀
Pump.fun
Solana
Mode A
🏦
Bankr
Base
Mode A
💱
Trade.xyz
Arbitrum
Mode A
🤖
Virtuals
Base
Mode BACP
🦅
DegenClaw
Base
Mode BACP
Supported chains (CAIP-2):AbstractArbitrumBaseBNB ChainEthereumHyperEVMHypercoreMonadOptimismPolygonSolanaTronTempoARC

The decisive question, resolved

Two real authorities. One convergence ask.

Virtuals ACP agent wallets are not headlessly creatable today — the real client operates an existing agent, it cannot mint one. OAW ships the two verified paths and asks the vendors for the convergence path.

Mode AShipped · default

Provider-managed Privy agent wallet

Fully programmatic. Any user, instantly autonomous from chat. Both OAW and Virtuals run on Privy, so the signer path is uniform.

  • ensure_agent_wallet — idempotent, no user setup
  • provider_agent_wallet execution route
  • Works on every non-ACP venue immediately
Mode BShipped · ownership-proof

Link an existing Virtuals wallet

Operate the user's Virtuals EconomyOS wallet via the ACP sidecar. Inherits native spending caps, agentmail, Stripe card, ACP identity, tokenization.

  • verify_identity · verify_authority_proof
  • virtuals_acp_sidecar execution route
  • ACP-native venues (Virtuals, DegenClaw) unlocked
Mode DProposed → Virtuals

Register a Privy wallet into EconomyOS

The highest-leverage convergence path: register an existing Privy wallet into Virtuals' EconomyOS so Mode A wallets inherit Virtuals' native envelope — no new signer infra needed.

  • Single highest-leverage upstream ask
  • Virtuals already runs on Privy
  • Makes 'use Virtuals wallet infra' true for every Mode A

The reference SDK is honest: the unverified Mode C/D paths throw rather than pretend. See the evidence and full mode table →

Grounded in real code

Not a dead end — the precise thing to fix

The shipped ACP client operates an existing agent. It has no create_agent surface. That's not a blocker; it's the exact ask OAW makes of Virtuals — and the honest boundary the reference enforces.

verify_identity()exists
signer_status()exists
verify_authority_proof()exists
create_job()exists
fund_job()exists
complete_job()exists
dgclaw_join()exists
create_agent()missing
create_agent_wallet()missing

Zero install

Run it now — Node 22

Native TypeScript type-stripping. No build step, no dependencies to install for tests.

bash
git clone https://github.com/Abelhubprog/open-agent-wallet.git && cd open-agent-wallet
node --test --experimental-strip-types --no-warnings "test/**/*.test.ts"   # 61 tests
node --experimental-strip-types examples/north-star.ts                   # demo

Released under the Apache-2.0 License · Built on Privy · Enriched by Virtuals

Released under the Apache-2.0 License.