pzza.works

Lunark AI

AI companion platform for natural language blockchain actions.

Lunark homepage

Blockchains are powerful, but using them is still hard work. You have to handle hex addresses, gas, token approvals and different contract interactions on every network, and for most people that complexity is where they stop. Lunark is built to remove that barrier.

Lunark is an AI companion that turns plain language into blockchain actions. Instead of filling in wallet forms and transaction fields, you describe what you want, like "Send 0.5 ETH to Alice" or "Swap my USDC for ETH on Arbitrum." Lunark works out your intent, finds the right address, picks a good swap route and prepares the transaction for you to approve in one click. It covers 8 networks, and your private keys never leave your browser, so you get the convenience of an assistant without giving up the safety of holding your own keys.

Just ask

You talk to Lunark the way you would talk to a person. Ask for your ETH balance and you get it straight away, and the same goes for any token you hold on the active network. Lunark also shows the USD balance that pays for your AI usage, so you always know where you stand.

Answers appear word by word as they are written instead of after a pause, so a conversation feels quick and responsive, and you can see Lunark working on your request in real time.

Sequence
For each tokenUserFrontendBackendAgentOpenAISend messagePOST /messageagent.ask(message)Stream requestToken chunkYield chunkSocket: streamResponseUpdate UISocket: streamEnd

You approve every transaction

When you ask Lunark to move funds, it does the tedious part and leaves the decision to you. It picks the right action, prepares the transaction with the recipient, amount and network filled in, and hands it to your wallet. Your wallet then shows you exactly what you are about to sign. Nothing is sent until you confirm, and only then does the signed transaction go out to the network.

This split is deliberate. Lunark can look things up and prepare transactions, but it can never sign one, because your keys stay in your browser the whole time. Even if the server were fully compromised, an attacker could not move your funds. The most they could do is prepare a bad transaction, which you would still have to approve yourself.

Flow
Your BrowserLunark ServerExternal ServicesUserLunark UIAPI + Socket.IOAI Agent + ToolsOpenAI GPT-4o-miniEVM NetworksPostgreSQLWallet + Keys

Send to names, not addresses

You never have to paste a long hex address twice. Lunark keeps an address book where you save an address under a name you will remember, list your saved contacts, look one up by name and remove the ones you no longer need. You can also add and manage contacts just by asking.

From then on, "send 1 ETH to alice" is enough. Lunark resolves the name from your contacts, and ENS names work too, so the transfer it prepares always points at the address you mean.

Swaps across 8 networks

Lunark runs on Ethereum, Polygon, Arbitrum, Optimism, Base, BNB, Avalanche and the Sepolia testnet, and you can switch between them from the network selector or simply by asking.

Swaps work the same way. You name the tokens by their symbol, Lunark finds the contract behind each one, compares rates across multiple DEXes and chooses the best route. If a swap needs a token approval first, Lunark prepares that for you too, so you do not have to know it is required.

Security

Lunark starts from one rule: the server is never trusted with anything that could lose you money. You sign in with your wallet instead of a password, requests are rate limited, and every piece of data and every agent session is kept separate per wallet, so no user can see another user's contacts or history.

Built with

Lunark is built on the Astreus AI agent framework, using OpenAI GPT-4o-mini with 13 specialized blockchain tools and a per-user agent cache with a 30-minute lifetime. The frontend uses Next.js 16, React 19 and Reown AppKit for wallet connections. The backend runs on Node.js and Express with Socket.IO for streaming and transaction events, and stores data in PostgreSQL.

Sign-in uses ECDSA signature verification with a 5-minute timestamp window and JWT sessions that last 30 days. The API is hardened with Helmet security headers, HPP against parameter pollution and a limit of 100 requests per 15 minutes, and every database query is filtered by the user's wallet address.

Keep reading