AxiosChat — Agentic Wallet for MNEE (Pay-with-Agent)
One-line pitch Transforming chat into commerce: a conversation-first agent that holds an MNEE wallet, composes transactions in natural language, and executes micro-payments with user approval.
Inspiration
- Problem: Crypto interactions are fragmented, slow, and force users to leave a conversation to send money, split bills, or tip. Traditional wallets are not conversational.
- Idea: Give an LLM-powered chat agent a secure, segregated wallet it can operate on behalf of the user — enabling "text-to-pay" inside the chat flow while preserving user control and security.
- This project came from the desire to remove friction (copy/paste, address-lookup, app switching) and to demonstrate expressive agentic commerce on the MNEE blockchain.
What it does
- Natural-language transfers: Turn messages like "Send 5 MNEE to @Alice for coffee" into prepared transactions the user can review and approve.
- Smart tipping & micro-payments: Tip article authors, stream micropayments, or pay for content directly from chat context (resolves addresses from page metadata).
- Agent sub-account & UTXO tracking: Derives an Agent sub-account (segregated from your main seed) and continuously monitors balances/UTXOs, alerting when thresholds are hit.
- Transaction construction & preview: Create raw, unsigned transactions (
broadcast: false), decode them for human-readable review, request signature, then broadcast on approval. - Multi-party flows: Split-the-bill workflows using the UTXO model and
transferMultiorchestration for complex payments. - Mobile-first, responsive UI: Works equally well on desktop and mobile, preserving conversation continuity.
Why it’s impressive
- Moves beyond talking about crypto — the agent actually prepares and executes transactions while keeping the user in complete control.
- Demonstrates deep integration with MNEE SDK features: HD wallet derivation, transaction construction without immediate broadcast, and multi-party UTXO orchestration.
- Solves a real UX friction for payments in chat: speed, privacy, and UX cohesion.
How I built it High-level architecture
- Frontend: React + TypeScript chat UI (chat component supports LLM function-calls), responsive design for mobile and desktop.
- Backend: Node/TypeScript API endpoints (includes a secure LLM proxy for model calls and the Gemini/OpenAI/GPT proxy layer).
- Blockchain integration:
@mnee/ts-sdkfor wallet derivation,getUtxos,balance,transfer,transferMulti, andsubmitRawTx. - LLM integration: LLM responses include structured function calls (e.g.,
prepare_transfer) that the app converts into prepared transactions. - Security: Seed and sensitive secrets are stored only in user-controlled environment or encrypted storage; agent sub-account derivation keeps funds segregated.
Key pieces (example)
- Agent sub-account derivation (from proposal):
// derive an agent sub-account
const agentWallet = hdWallet.deriveAddress(100, false); // Path m/44'/236'/0'/0/100
- Typical flow:
- User types a payment instruction in chat.
- LLM returns a function-call with structured params (recipient, amount, memo).
- Backend calls MNEE SDK:
mnee.transfer({ to, amount, broadcast: false })to createrawtx. - Frontend presents decoded transaction to user for confirmation.
- On approval, call
mnee.submitRawTxto broadcast. - UI updates balance and transaction history.
Tech stack
- TypeScript, React (chat UI), Node.js backend (TypeScript)
- @mnee/ts-sdk (wallet + UTXO + tx functions)
- Axios for API calls
- LLM provider via a secure proxy (Gemini / model-of-choice)
- Tooling: pnpm (for scripts), ESLint/Prettier, unit tests for core logic
Challenges we ran into
- Key management / UX tradeoffs
- Problem: Letting an agent "hold" funds requires strict UX and security to avoid accidental spends.
- Solution: Agent sub-account derived from user seed + explicit review/sign steps for any outgoing tx; no auto-broadcast without user confirmation.
- UTXO complexity & fee estimation
- Problem: UTXO models require careful coin selection and merging; naive implementations can create large fees or fragmentation.
- Solution: Implemented controlled coin-selection heuristics and preview tools that show fee/cost tradeoffs before confirmation.
- LLM-to-action correctness
- Problem: Ensuring the LLM reliably produces structured function calls and avoids hallucinating addresses or amounts.
- Solution: Use strict JSON Schema / function-call signatures, validate addresses with
validateMneeTx, and require explicit confirmation on ambiguous cases.
- Network & edge cases
- Problem: Handling split payments or partial broadcast failures concurrently.
- Solution: Implement robust error handling and transaction rollbacks/logging; persist prepared transactions until user signs or cancels.
Accomplishments we’re proud of
- Full “text-to-pay” flow working end-to-end on MNEE: derivation -> prepared raw tx -> user preview -> signed broadcast.
- Agentic account that’s segregated from the main wallet, enabling safe agent operations with a defined budget.
- Implemented a decoded transaction preview UI that explains UTXO inputs/outputs in human terms so non-technical users can approve payments confidently.
- Demonstrated multi-party split-the-bill orchestration leveraging MNEE’s UTXO model.
- Mobile-first UI and accessible controls for approval and history.
What we learned
- UTXO-based UX design is different from account models — it's powerful for multi-party transactions but requires transparent coin-selection UX.
- LLM function-calling is a safe and practical approach when combined with strict validation layers; never let the model be the final authority on payment execution.
- Security-first product design: segregation, explicit approvals, and minimal exposure of seeds is vital when giving an agent the ability to act financially.
- Building agentic features benefits from small, auditable steps (prepare -> preview -> sign -> broadcast).
User & developer experience notes
- For users: payments are conversational, fast, and require one confirmation step.
- For developers:
Chat.tsxand the function-calling flow are designed to be extensible — add new agent actions (e.g., subscribe, stake, swap) by declaring function schemas.
What’s next for AxiosChat–MNEE Short-term
- Add multisig support for higher-value agent actions (require 2-of-3 signatures for certain thresholds).
- Build richer on-chain receipts and transaction metadata to link chat context with on-chain evidence.
- Add fiat-rail integrations for instant on/off ramps (via third-party services).
Mid-term
- Open-source developer SDK: Example integrations, UI components for decoded tx preview, and coin-selection helpers.
- Marketplace integrations: Let content creators add tipping buttons or paywalled content that integrate directly with AxiosChat Agent.
- Advanced policy & budget controls: Per-agent budgets, time-limited allowances, and spend categories.
Long-term vision
- Agentic commerce where agents can autonomously manage small budgets to perform recurring tasks (like paying subscription renewals), always transparently requesting confirmation for new or large spend categories.
How to run / demo (developer instructions)
- Clone repo:
git clone https://github.com/OkeyAmy/Axioschat-MNEE.git - Install:
pnpm install - Configure env (example):
MNEE_SEEDor secure keystoreLLM_PROXY_KEY(Gemini / OpenAI) — configure proxy inapi/gemini-proxy.tsAPI_URLfor backend
- Start frontend:
pnpm dev(orpnpm start) — open on mobile/desktop to test responsive behavior - Run backend:
pnpm --filter backend dev(if monorepo) orpnpm startinserver/
Security & privacy notes
- Never store raw seed in remote servers; prefer local encrypted keystore or user-managed environment.
- All transaction broadcasts require explicit user confirmation in the current UI.
- Audit logs and transaction history are kept for user visibility and troubleshooting.
Metrics & validation
- Latency: prepared tx construction typically sub-second; broadcast depends on MNEE propagation (very low fees & fast confirmations make UX fluid).
- Safety: zero funds were broadcast without explicit approval in tests and manual QA.
Team
- Solo — full-stack dev, MNEE integration, UI/UX, LLM orchestration.
Why this matters now
- Micro-payments and content monetization are ripe for innovation. A text-first payments UX lowers friction and makes on-chain commerce approachable.
- MNEE’s speed & low fees are perfect for micro-transactions; this demo shows a real, practical consumer UX for agentic payments.
Appendix / tech highlights (copy into the Devpost extra details)
- Core MNEE SDK calls used:
HDWallet.deriveAddress,mnee.getUtxos,mnee.balance,mnee.transfer({broadcast:false}),mnee.transferMulti,mnee.submitRawTx,validateMneeTx - LLM function-calling: chat UI triggers
prepare_transferwhich maps into MNEE transaction creation - Code reference: see
MNEE_Feature_Proposal.mdfor initial design and technical rationale
Call to action for judges
- Try the flow: send a 1 MNEE tip to an address, watch the agent prepare the transaction, review the readable decoded tx, and approve it — you’ll see how fluid agentic payments can be.
- Evaluate on innovation: agent-based finances inside chat are a new UX category and directly reduce friction for on-chain payments.
Challenges we ran into
- Proxy errors & model quota spikes: In production testing we sometimes see proxy/timeouts when calling the MNEE SDK (especially under load) and the AI occasionally exhausts my Gemini quota. The worst cases happen when the agent triggers parallel function-calls (e.g.,balance_checking + address-resolve + transfer preparation) which multiply requests and quickly consume quota. We mitigated this with rate-limiting but still experience occasional spikes. Short-term workarounds include queuing/deduping function calls, batching related calls, applying exponential backoff and circuit-breaker logic, caching resolved addresses, and surfacing a friendly “quota exceeded — please wait a moment” message to users. Long-term fixes are: move heavy validation to lightweight local checks, consolidate RPC calls server-side, and implement strict per-action concurrency limits and quota-aware fallbacks (e.g., offload to a lower-cost model or delayed task queue).
Built With
- gemini-ai
- mnee-sdk
- python
- typescript
Log in or sign up for Devpost to join the conversation.