zwallet.
An open-source wallet for agents

Give your agent
a wallet.
Keep control.

Set aside working funds and define the payment rules. Your agent does the permitted work and brings back the receipts. Your keys stay on your device.

macOS · Linux · MIT licensed · No service account

○   Your rules✧   Your agentKeys stay on your device
01Local keys02Rules per payment03Your choice of agent04Code you can inspect
01 / The flow

From working funds
to work done.

Follow one payment test. See where the funds go, what the wallet checks, and where a request stops.

An illustrated workflowWatch the film ↗
0:00 / 0:36

Fund a dedicated wallet with 50 USDT and gas, choose the payees, set a limit per payment and an access window. Give your agent the task.

Read the transcript ↗

Amounts are illustrative. Reports are assembled by the agent from transaction evidence. Built-in cumulative budgets and task reports are WIP.

Why this exists

The agent wrote the code.
You still had to pay.

“Send me gas. I need USDT, too. Run the transaction and check if it worked.”

Blockchain development kept handing the work back to the person. I wanted to give my agent working funds, let it finish the task, and see what it spent. So I built a wallet I could run and own locally.

02 / Available in the source today

The wallet behind
your agent’s work.

Agents that can run shell commands can use the CLI. A terminal UI gives the person at the keyboard access to the same wallet and rules.

01

Read balances. Make payments.

Read balances, transfer supported assets and look up transactions across eight EVM networks and Tron. Token transfers use exact registry deployments.

02

Work with allowed contracts.

Read EVM contracts and invoke allowed recipients and selectors. Use preflight checks and transaction evidence to develop and test payment flows.

03

Verify the outcome. Report back.

Agents use JSON results, transaction hashes, receipts and the local send journal. A pending or unknown result calls for a hash lookup before another send.

EthereumBaseArbitrumOptimismPolygonBNB Smart ChainAvalancheTronSepolia

Support varies by network. Tron sends TRX and registry USDT to listed payees; native gas is still needed. Check feature status for what your installed channel includes.

Feature status and implementation evidence ↗
An example policy check
RecipientOn the allowlist
Limit per payment5 USDT
Requested amount20 USDT
No signature. This request stops here.

Illustrative amounts, not a live transaction.

03 / Keep control

Rules checked
outside the prompt.

The signing process decodes the requested transaction and checks the policy itself. An agent calling it an “allowed payment” is not enough.

  • Recipients and limits per transactionCheck allowed payees, EVM selectors and configured amount and fee limits.
  • Human unlock. Time-limited access.The person enters the password. When the session expires, new signing ends.
  • Lock whenever you need to.Lock ends every zwallet signing session for your OS user.

Per-payment limits are not cumulative budgets. Repeated permitted payments can spend the balance, and same-user processes share the access boundary. Lock does not reverse transactions already sent. Read the security model ↗

04 / Where this goes next

A wallet for what
agents do next.

The wallet can become a foundation for service, shopping and investment agents. The integrations below are future work.

01WIP

Pay for useful services.

Buy the APIs and tools a task needs. Requires payment adapters, invoice validation and proof of delivery.

02WIP

Buy what you ask for.

Find an item and complete an order within your instructions. Requires merchant adapters, final quotes, shipping privacy and refunds.

03WIP

Execute your investment mandate.

Act within your asset, venue and risk constraints. Strategies and execution controls are not implemented; returns are not guaranteed.

WIP Cumulative budgets and native spend reports are also future work. These directions do not imply ready-to-use integrations with every agent or merchant.

Read the future PRD ↗
05 / Make it yours

Give your agent
its first working funds.

Install locally. Create and unlock the wallet yourself. Try the first transfer on Sepolia with testnet funds.

Homebrew / stable
brew install 2lab-ai/tap/zwallet
  1. Create and back up your wallet. Verify its receiving address before funding.
  2. Choose payees and per-payment limits. Then unlock for the time you need.
  3. Give the agent a task and report format. Keep the hashes and verify the results.
A task prompt for your agent ↗
Before you begin

A few useful answers.

Do I need an account or a special token?

No zwallet service account or dedicated token is required. You still need funds, native gas and RPC access for the network you choose.

Which agents can use it?

Agents that can run the local CLI and read JSON results can use it. The person sets up the wallet and policy first. The diagram explains the workflow; it is not a shipped dashboard.

Is the allocation a hard task budget?

Today, the allocation is the balance you put in a dedicated wallet. Limits per transaction are available; enforced task and daily budgets are WIP. Repeated permitted payments can spend the full balance.

Can it invest or shop for me today?

There is no built-in investment strategy, merchant checkout or service-payment adapter today. zwallet is the wallet component; these workflows are WIP. Investing can result in losses.

Your agent. Your money.
Your rules.

Explore on GitHub ↗