Join Waitlist ↓
Mobile App · Solana Mainnet · NFC · x402

Your card
is the key.

Tap your card, no passwords, no keys.

Tally is a mobile app that turns a contactless bank card into a hardware signing key for a Solana wallet. Live on Android today. iOS is in active development.

Every crypto wallet has the same problem. The private key lives somewhere, and wherever it lives is the attack surface. Hardware wallets solved custody but created friction. You need a device. You have to carry it. Lose it and you're locked out.

The card in your wallet already has an NFC chip. Tally reads it via full EMV APDU chain, runs it through Argon2id with your biometric, and derives a signing key in RAM. Under 500ms, then it wipes. Nothing persists on any server, ever. Any contactless card works, including expired ones.

We built this for AI agents, where the private key problem is worse. An agent gets a funded session wallet per task, authorized by a tap. The vault key never leaves the device. The session key has a budget cap, and when the task ends, funds sweep back automatically. x402 micropayments are live on Solana mainnet. The physical object you tap is the only thing that can authorize a spend.

TALLY
UPTIME
00:00:00
BIO_STREAM.SHRD
🫆
💳
CARD_STREAM.SHRD
RECONSTRUCTING SOLANA MASTER KEY...
PROTOCOL
ISO/IEC 14443-4
Detected
STATE
Entropy Extraction:
100%
TARGET ADDRESS
7xPq...9Wk2
ENCRYPTION
Argon2id · XOR · Ed25519
Security Warning
Volatile RAM Only. No Persistence. Any interruption will purge the cache.
For developers Android APK ↓ Android debug build. Requires a real contactless bank card (Visa / Mastercard) to sign transactions. Android Mock ↓ Same app, no card required. Simulates a card tap automatically, for testing on devices without NFC. Integration x402 Endpoint
// Live x402 endpoint. Run it yourself.
$
curl https://tally.lll.mk/api/signal

You'll get a 402 with the payment wallet in the response. That's the x402 protocol in action. An agent sends 0.1 USDC to that address, retries with the tx signature, and gets the signal back. The whole flow is in tally_integration/.


01 / Key derivation
💳
Card tap = signing key

NFC reads the card via full EMV APDU chain. Combined with your biometric via Argon2id, it reconstructs the master seed in RAM. 500ms. Then it's gone. Nothing stored on any server. Nothing in plaintext on the device.

02 / Agent funding
🤖
Session wallets for agents

Agent requests funding. Telegram notification arrives with the amount and task visible before you approve. Card tap. Session wallet funded with exactly what you approved. The session key copies once to the agent's .env. Isolated, capped, swept back automatically when the task ends.

03 / x402 Payments
Pay paywalled APIs on-chain

Agent hits a 402. Payment wallet in headers. 0.1 USDC moves on-chain. Server verifies independently. Signal returned. No API key, no OAuth, no custody. Just a blockchain receipt.


Full hardware wallet Vault creation, SOL + USDC send/receive, Jupiter swap, QR scanner, emergency sweep
Three session wallet types Agent (SK shown once), Personal (SK stays on device), Burner (SK shown once)
Full agent lifecycle Fund, task, return. Confirmed with real USDC on mainnet.
x402 end-to-end Agent hits paywall. Card tap. USDC on-chain. Tx verified. Signal returned.
HMAC-signed deep links Every Telegram notification signed and verified on open, ±5 min timestamp window
ATA rent reclaim USDC account closed on sweep, ~$0.17 recovered per session automatically

Mobile
Ionic Capacitor · React · TypeScript · Android
Crypto
Argon2id (32 iter, 2MB) · XOR split · Ed25519/TweetNaCl · BIP39
NFC
Full EMV APDU chain · ISO 14443-4 · stale-tag flush
Chain
Solana mainnet · SPL token (USDC) · Jupiter VersionedTransaction
Agent
Python skill · Telegram bot · HMAC-SHA256 signed deep links
x402 Server
Next.js · Vercel · tally-signal ↗

v1.6.0 Latest June 5, 2026
Agents that ask, then spend
  • Agents can now propose a budget. You get a notification, open one screen, and approve or edit the amount with a single card tap.
  • Unknown-agent warning: if a request comes from a wallet you have not connected before, Tally flags it.
  • A unified card-tap screen across every approval, clearer and consistent.
  • Recovery guidance added to the 24-word backup screen.
v1.5.0 June 3, 2026
Standing agent budgets
  • Pre-authorize a capped, time-boxed budget for an agent with one card tap. The agent then pays directly within that budget, no further taps.
  • Money stays in your vault until the moment of each payment. Nothing sits in a hot wallet.
  • When the window closes, the next payment is rejected on-chain and the unused cap stays put.
  • Revoke any agent, or revoke all, from the Connections tab.
v1.4.0 May 27, 2026
Safer setup
  • Tally now checks your device can do everything a vault needs before you create one, so setup never half-completes on unsupported hardware.
v1.3.0 May 24, 2026
Solana Pay and reliability
  • Solana Pay support: pay any Solana Pay link or QR, with memo passthrough.
  • Fixed a cold-start issue that briefly showed a zero balance.
  • Sending USDC to a brand-new address now tops up the tiny amount of SOL it needs automatically.
  • Fresh app icon.
v1.2.0 May 20, 2026
Spending windows
  • Time-bounded approvals: authorize spending for a set window, end to end across the wallet and the agent skill.
v1.1.0 May 14, 2026
Privacy and proof
  • PCI mode: derive your key from the card chip ID alone. The card number is never read or stored.
  • Proof-of-Presence: a card tap signs a portable receipt that anyone can verify, no account needed.
v1.0.0 May 11, 2026
Tally launch
  • A Solana wallet where your contactless card is the signing key. Tap to sign, no passwords, no seed phrase to type.
  • x402 payments live on mainnet.
  • Built so AI agents can spend real money without your vault key ever touching a server.

Shipped
UID-only card derivation
PCI mode: the Card_Shard is derived from the card's hardware UID and a salt only. No card number ever read, no PAN in RAM. Selectable at vault creation for regulated and enterprise deployments where PAN exposure is a compliance blocker.
Shipped
Proof of human presence
Every card tap signs a portable, hardware-bound receipt: vault, session, amount, task hash, tx, timestamp. Travels with the task across any number of agents. Verifiable offline by anyone with the vault address, or as one HTTP call to tally.lll.mk/api/attest/verify.
Shipped
Time-bounded policy taps
One tap authorizes a budget and a window, not a single transaction. The agent runs autonomously within both until either runs out. End to end: deep link carries the TTL, wallet persists the expiry, agent skill reuses the session across calls without re-tapping.
In progress
iOS app
Bringing the Tally vault to iPhone. In active development. We'll share how it works once the approach is proven.
Shipped
On-chain agent budgets
One card tap grants an agent a spend cap and an expiry enforced on-chain, built on Solana's allowances program. The agent spends within the budget on its own while the funds never leave your cold vault, and you can revoke one agent or all of them instantly. An agent can also propose a budget that you approve from a single notification.
Planned
Readable vault identity
Counterparties send to and verify receipts against a human-readable name instead of a 32-character base58 address. The receipt becomes anchorable to your identity without exposing key material. The card stays the proof; the name becomes the anchor.
Planned
Native approval requests
When an agent needs a fresh authorization, it asks and your phone gets a native push: one tap to approve, the spend stays capped and time-boxed. The agent never needs to know how you were reached, so the approval channel can change without touching agent code. Telegram stays as a fallback.
Planned
Self-hosted x402 gateway
Run your own x402 endpoint backed by Tally's card-tap authorization. Agents pay per request, humans stay in the loop. No third-party proxy, no shared infrastructure.