Dev.to AI 🤖 Ai 👁 0 📖 5 min read

Ellai: my AI agent pays on its own, and asks me less every week

I built Ellai for Total Recall, the Tatum and Walrus hackathon. Ellai means limit in Tamil. It lets an AI agent pay for things on Sui, and it learns from my yes and no answers when it should ask me. What it does AI agen

I built Ellai for Total Recall, the Tatum and Walrus hackathon. Ellai means limit in Tamil. It lets an AI agent pay for things on Sui, and it learns from my yes and no answers when it should ask me.

What it does
AI agents now meet sellers that want money before they answer. A hotel search costs 0.01 USDC. A ticket classifier costs 0.02 USDC. The seller replies with HTTP status 402, which means payment required, names a price, and waits. This is x402.

That leaves an owner two poor choices. I can approve every small payment by hand, and the agent stops being useful. Or I can hand the agent a wallet, and one bad prompt can empty it.

Ellai sits between the agent and the seller. My money stays at my own wallet address, behind a Sui allowance with a total cap, a daily limit and an end date that I choose. Sui enforces it. Ellai keeps a small purse for me, never more than 0.20 USDC right after a refill.

Before every payment Ellai decides one of three things: pay, refuse, or ask me. The rules are written code. No AI model decides about money.

When Ellai asks and I answer, my answer becomes a short sentence in my own Walrus Memory account. The next time a similar payment comes up, Ellai looks at my past answers. If it finds enough close ones for the same seller address, it pays on its own. If I ever refuse a seller, Ellai refuses every later payment to it.

How it uses Walrus Memory
Each answer is one memory, one plain sentence: the date, the amount, the seller address, the host, what the agent wanted and my reason. Each one lands as a Walrus Blob object at my address. I own the account. Ellai is one delegate key on it, labelled "Ellai", and I can remove it whenever I want. I can also read the same memories from Claude Code.

When a payment comes up, Ellai asks Walrus Memory for the 20 closest past decisions. Each comes back with a distance from 0 to 2, where smaller means closer in meaning. Ellai pays on its own only if at least two of my own approvals are for the same seller address, at or above this amount, and closer than 0.5. Everything else asks me. If Walrus Memory is down, Ellai asks.

So the memory changes what the product does. My test account holds 20 memories written by Ellai's key on Sui Mainnet, and every one was found on chain. Here is the account.

How it uses Tatum
Ellai itself reads and sends on Sui only through Tatum's Sui gateway. It uses gRPC for balances, transaction results, dry runs and sending, and GraphQL for the allowance and my Walrus Blob objects. It uses no JSON-RPC.

The check I trust most: a payment counts as paid only after Ellai reads the transaction back from Tatum by the digest it computed itself, and finds exactly one debit and one credit of the agreed amount. Here is a real one, a hotel search paid 0.01 USDC. Ellai approved it on its own, citing two of my earlier answers. The seller answered, and Tatum confirmed the money moved. The purse that paid it was filled through this allowance: 1.00 USDC in total, 0.50 a day, 30 days.

The free plan is a fixed pool of credits, so one meter in front of every Tatum request counts it against a daily budget. When a budget runs out, Ellai asks or refuses.

How it learned over time
I should be straight about the time. Ellai is new and was built inside the hackathon window, so there is no six-month curve. I ran a test instead.

Before the test ran, I signed off an approve or refuse label for each of 24 requests. They are real prices from real sellers on Sui Mainnet. Ellai saw the first 12 one by one. It asked 8 questions. The other 4 were hotel searches that it approved alone, because two earlier approvals for that seller already sat in my account.

Then the test waited at least 11 minutes, so no one-time permission from a yes could still be alive. Ellai decided the next 12 alone.

It asked 0 questions. It approved the 10 requests I would approve. It refused the 2 I would refuse: one was over my 0.05 USDC limit per payment, and one went to a seller I had refused earlier. Zero bad payments got through. Every memory it cited sat between 0.0893 and 0.2655 from the request, well inside the cutoff.

An earlier run on 24 October showed the same loop in small. Two hotel approvals went into Walrus Memory. A third, similar request was approved on its own, citing both at distances 0.1527 and 0.1730. The same purpose sent to a different seller address was still asked.

What the test does not show
No money moved. The test checks decisions, not what sellers do after they are paid.
Four of the first twelve requests were already learned from the earlier run, so they did not test learning from scratch.
One row did not go as predicted. The test file expected a question for the AgentProof MCP endpoint. Ellai approved it, because that seller pays the same address as two AgentProof endpoints I had already approved. Trust follows the address, so that is by design. Read strictly, my score is 9 of 9, not 10 of 10.
No request was far from everything I had approved, so the cutoff itself is untested. No seller with exactly one approval was tested either.
It is one owner and one person's labels.
All 24 rows, with every cited memory linked, are on the learning test page.

What is not built yet
Ellai pays one x402 form today, version 1. Version 2 is refused and MPP is not supported. A refusal cannot be taken back yet. Ellai has had no outside human audit.

Try it
No wallet is needed to look. Watch the line of real decisions on the live site, then open the proof page and click any payment or memory.

https://ellai-pay.vercel.app | GitHub | Docs

📰 Read the original article on Dev.to AI

Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.