Give your agent a wallet you control.
에이전트가 일회용 카드나 기계 결제 프로토콜로 온라인 결제하고, 모든 요청을 직접 승인
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Private cross-chain checkout. Customers pay from a shielded Zcash wallet; merchants receive USDC (or USDT) on Base, Arbitrum, Ethereum or Solana. Lona never holds funds: each payment is converted by NEAR Intents (1Click API) and sent straight to the merchant's wallet.
Read DESIGN.md before changing any UI.
Lona-Signature, HMAC-SHA256) with retries for about a day/api/v1/invoices, /api/v1/payment_links)Idempotency-Key on every POST, per-key rate limits with headers, list filters and cursor pagingnpm install
npm run dev # http://localhost:3000
npm test # payment lifecycle, webhooks, signatures, network guard, tokens, receipts, idempotency, rate limits,
# ZEC/USD conversion and rounding, quote guard, duplicate sign-ups
npm run test:e2e # browser checks for signup, login, checkout amounts and the homepage demo
npm run test:full # every merchant feature, the REST API and signed webhooks (start the server with
# ALLOW_PRIVATE_WEBHOOKS=1 CRON_SECRET=e2e-cron SANDBOX_ZEC_USD=1300; set SERVER_LOG to its log)
# (needs a running build at BASE_URL and Playwright with Chromium)
No database setup is needed locally: an embedded Postgres (PGlite) is created in .data/ and migrated on boot.
Try it: create an account, set a payout wallet under Settlement (any valid-looking address works in test mode), create an invoice, open checkout, click "Pay with Zcash", then "Pay in full".
DATABASE_URL..env.example, at minimum APP_URL, CRON_SECRET, ONECLICK_JWT, LONA_FEE_RECIPIENT, NEXT_PUBLIC_LEGAL_NAME, NEXT_PUBLIC_CONTACT_EMAIL.vercel.json runs migrations before each build and calls /api/cron/tick every minute (per-minute crons need a paid Vercel plan; on Hobby, run the tick from an external scheduler with the CRON_SECRET bearer header).POST /api/v1/invoices creates an invoice in USD. No price yet./pay/:id and clicks Pay. Lona asks 1Click for an EXACT_OUTPUT quote: the merchant receives exactly the invoice amount, and the customer's ZEC amount includes network costs and Lona's fee (appFees). The price is held for 20 minutes./v0/status (on page views and every minute from the scheduler) and moves the invoice through awaiting_payment, payment_received, converting and paid_out, emitting a webhook at each meaningful change. Status changes use compare-and-set, so each event fires once.Code map: src/lib/invoices.ts (state machine), src/lib/providers/ (1Click adapter and sandbox, behind one interface so a second route such as Maya Protocol can be added), src/lib/webhooks.ts, src/app/api/.
/v0/tokens at runtime, with known IDs as a fallback. Check the Solana USDC mapping against the live token list.RESEND_API_KEY and a verified sending domain in MAIL_FROM. Without it, confirmation, reset and receipt emails are only logged.APP_URL set to itsrc/app/icon.svg)NEXT_PUBLIC_CONTACT_EMAIL set to a real inboxRESEND_API_KEY and MAIL_FROM set, sending domain verifiedSANDBOX_ZEC_USD only to pin a fixed test price.LONA_FEE_BPS (default 50, so 0.5%). It is added to live quotes only when LONA_FEE_RECIPIENT is set./api/cron/tick syncs payments in flight, expires old invoices, retries webhooks and prunes rate-limit
state. It needs Authorization: Bearer $CRON_SECRET.
.github/workflows/scheduled-tick.yml runs it every 30 minutes, which fits a private repo's free
Actions minutes. Add CRON_SECRET as a repository secret.Wrong passwords are counted per email and per IP in 15-minute windows (stored hashed). Defaults:
5 per email, 30 per IP for sign-in; 3 reset emails per address and 10 reset requests per IP; 10 new
accounts per IP. A correct password clears the email's count. Override with AUTH_LOGIN_EMAIL_LIMIT,
AUTH_LOGIN_IP_LIMIT, AUTH_FORGOT_EMAIL_LIMIT, AUTH_FORGOT_IP_LIMIT, AUTH_SIGNUP_IP_LIMIT.