anti-gambling-trader-tw
무료 오픈소스 투자 사기 방지·거래 통계·자동매매 도구, 기본 PaperBroker와 14개 증권사 옵션 제공, 로컬 분석
전문가 데스크에 말하거나 입력하면 현장 견적을 받고 검토 후 서류 기록이나 실시간 정산을 할 수 있습니다
Talk or type an instruction to a specialist desk. Get a real venue estimate, review it, then file a paper record or settle live. Nothing moves without your say.
금융TypeScript · CSSGitHub @sneldao온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A voice-first trading desk & brokerage house
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Claflin is the voice-first trading desk for global investors who want to trade tokenized US stocks onchain.README 전문 보기 ↗Claflin is the voice-first trading desk for global investors who want to trade tokenized US stocks onchain.
The product spans multiple desks, mandates, venues, and settlement rails. Implementation status below describes this checkout: the foyer resolves a visitor instruction into concrete offerings, then opens only desks eligible for the selected product/rail/venue combination. Hetty covers Coinbase Tokenized Stocks on Base; Jesse covers Backed xStocks on Solana; Tennie covers Robinhood Stock Tokens on Robinhood Chain (paper-only); Halley prices Meteora DBC launches on Solana — a new tracker/exposure token quoted in USDC or a badged xStock, paper-only with no live launch path. Base has an env-gated wallet-authorized execution path; Jesse has paper filing plus a dual-env-gated live settle path. /night-desk redirects to /?desk=jesse&view=room. It does not establish the status of other branches or deployments.
A voice-first trading product expressed as a Deco-futurist brokerage house — the office above the pit. Clients give an instruction to a house that keeps a record. Voice, research, publications and personalization support that job.
Claflin is the institution. A desk combines a broker, mandate, settlement rail, venue, and capability policy; these are curated relationships, not an open marketplace. The house does not ask visitors to prefer a chain: an instruction resolves to concrete offerings, similar exposures on different rails remain distinct, and only eligible desks can open each offering. Hetty currently covers Coinbase Tokenized Stocks on Base; Jesse covers Backed xStocks on Solana; Tennie covers Robinhood Stock Tokens on Robinhood Chain as a paper-only desk; Halley is the Meteora launch desk on Solana — a tracker-token launch estimate (DBC curve → DAMM v2 migration), paper-only; Jay remains planned.
The public Room view is the live Jesse spatial layout (same controller as Compact). Fixture study: /night-desk?study=1. The integrated Jesse desk for Stocklana demos: /?desk=jesse&view=room — real Jupiter quotes, v2 local paper, Room/Compact views, PreStocks secondary duplex (issuer mark vs token), and honest Pyth comparison when entitled. See Jesse desk. / shows the foyer on a fresh visit and restores only a remembered open desk.
Engineers: Stocklana Build Plan is the historical execution brief; Jesse desk owns current Jesse capabilities and remaining Pyth/live-release limits. Product Direction records Room/Compact as view choices over the same work.
/ is Claflin's front door. A fresh visit opens the foyer and house book; a chosen or remembered desk then puts the ticket or the line first, with the room around it. No welcome wizard, broker questionnaire, ratings, automatic microphone request, wallet bootstrapping, or chain picker precedes the work.
The current release supports paper estimates on Base, Solana and Robinhood Chain, an env-gated Base execution path, and Jesse's dual-env-gated Solana live path. Paper remains the default; live settlement appears only where the selected desk supports it.
?offering= and seeds that desk's own draft context without borrowing another desk's state.The Base live path builds Aerodrome router transactions, submits them through the client's Privy wallet integration, and checks transaction receipts. Jesse's live path prepares a fresh wallet-bound Jupiter order, verifies the signed message against the proposal, submits it, and reconciles the result. Base swap hashes are saved locally after submission returns; Jesse proposal status and signatures live in the short-lived server-side proposal store (Redis, with memory fallback). Pending or unknown entries can be reconciled without resubmitting. Live history is transaction evidence, not a holdings view. A successful receipt or confirmed signature, not a quote or submitted operation alone, establishes the displayed outcome.
A selected offering may preselect the instrument, but it never preselects an amount or authorization. Paper records are simulations, not fills, submissions, wallet positions, or call receipts. They live in this browser first. Visiting Arbitrum is a closed room — an approval from one desk cannot come with you. Jesse’s, Tennie's and Halley's records stay browser-local (no account sync). When an optional account is configured and the client is signed in on Hetty, new Base records are also copied to that account (best-effort; local storage stays authoritative; deletes are local-only and can reappear from the account copy). Records are visible to anyone using that browser profile.
Voice & Dictation:
POST /api/dictation routing to dictation.assemblyai.com/transcribe). Spoken instructions (e.g., "Buy 100 USDC of NVDA") have disfluencies ("ums", "ahs") stripped at the speech model level, outputting a clean, auditable transcript that automatically structures the order ticket draft. See docs/DICTATION.md.POST /api/desk/jesse/voice-agent/token (the key stays server-side; sessions are capped at 10 minutes), opens wss://agents.assemblyai.com/v1/ws, and sends one session.update carrying the same prompt and client tools as the ElevenLabs agent (lib/jesse/assemblyai-agent.ts, handlers shared in lib/jesse/desk-tools.ts). Progressive tool reveal keeps record_paper unregistered until a quotation is in review, and it runs in hold mode; tool results are released only on reply.done. Enable it with NEXT_PUBLIC_JESSE_VOICE=assemblyai, or per visit with ?line=assemblyai. ElevenLabs stays the default. See docs/ASSEMBLYAI_VOICE_AGENT.md.H (outside form fields) opens the selected desk's live ElevenLabs ConvAI session (POST /api/hetty/session for Hetty; POST /api/desk/jesse/session for Jesse; POST /api/desk/tennie/session for Tennie; POST /api/desk/halley/session for Halley; API keys and agent ids stay server-side). The call button, receiver, and key share one line signal; session lifecycle stays in the call panel. Tool calls are client tools that execute against the selected desk controller in the caller's browser — they can choose the covered instrument, set the instruction and amount, request an estimate, describe the desk, pin a watched mark, share the desk's note of the day, and record paper only on explicit confirmation. Voice cannot sign, submit or reconcile transactions. Real trades require the caller's explicit live action on the ticket and wallet authorization; voice recording remains paper-only. Hetty's provisioned agent is (see ); Jesse's setup is documented in ; Tennie's agent is (see ); Halley's agent is (see ). If a voice session is not configured, the rest of the desk is unaffected.Account and wallet: NEXT_PUBLIC_PRIVY_APP_ID enables Privy sign-in; NEXT_PUBLIC_PRIVY_CLIENT_ID is optional. Sign-in never gates the tape, estimates, paper records or ringing a desk. An account supports best-effort Base paper backup and write-only transcript storage. Live Base execution additionally requires a connected wallet, input tokens, ETH for gas and explicit wallet authorization. Jesse live uses a Solana wallet under its own flags. Sign-in alone neither authorizes spending nor proves eligibility.
Live execution boundary: Base transaction preparation, wallet signing, submission and receipt reconciliation are implemented, gated by NEXT_PUBLIC_LIVE_EXECUTION_ENABLED=true. Jesse’s Solana live path is implemented behind both NEXT_PUBLIC_JESSE_LIVE_ENABLED and JESSE_LIVE_ENABLED. Each desk initially selects live mode only when its live capability is enabled; paper recording remains available. See Live Base Execution for the previously recorded mainnet smoke-test result and setup. The read-only Coinbase Verifications check (/api/eligibility — Verified Account plus a non-restricted Verified Country) gates the Base live path fail-closed, re-checked inside the execution hook before the wallet is asked to sign; a Coinbase-scoped self-declaration is required alongside it. Funding, allowances, product access policy and outcome verification remain distinct concerns. Night presentation never grants spending authority. Paper trading never grants spending authority.
Node 24 (pinned in .nvmrc and package.json engines; CI, Docker and the Hetzner deploy preflight read the same major). pnpm comes from packageManager via corepack enable.
nvm use # or any manager that reads .nvmrc
pnpm install
pnpm dev
Open /. Wallet, ElevenLabs, Privy and Redis setup are not prerequisites for the current paper desks. The Base quote service uses Base's public RPC by default; configure BASE_RPC_URL for an appropriate production provider. Jesse's Jupiter quotes work keyless by default; configure JUPITER_API_KEY only for higher provider limits. Production hosts: frontend https://claflin.trustfall.xyz, API https://api.claflin.trustfall.xyz. Set NEXT_PUBLIC_APP_URL for deployment metadata. Do not expose provider credentials through public environment variables.
The old client routes—including /desk, /marketplace, /demo, /profile, /dashboard, /list-your-broker, broker profiles and the old admin pages—redirect to /. /desk-study and /widget-probe are development-only references, absent from client navigation and unavailable in production.
Public marketplace APIs (/api/agents and descendants, /api/ratings, /api/sdk/register) return 410 Gone through the routing layer. Directory seeding, public broker submission and onboarding analytics are not setup steps or product milestones. No database rows were deleted by this cutover.
| Responsibility | Source |
|---|---|
| House identity and desk directory | lib/house.ts |
| Mandates, concrete offerings, desk coverage and estimate envelopes | lib/desk/contracts.ts, lib/desk/mandates.ts, lib/desk/offerings.ts, lib/desk/registry.ts, lib/desk/estimates.ts |
Entry parsing, saved desk preference and ?offering= validation | lib/house-entry.ts |
| Canonical desk identity, broker voice contracts and accepted example-call data | lib/desktop.canon.ts, lib/brokers/contracts.ts, lib/foyer/example-call.ts, components/foyer/AnnotatedExampleCall.tsx |
| Period desk notes and words of the house (one note or term of the day, never advice) | lib/desk-notes.ts |
| Sourced education catalog, broker examination methods, delayed-tape practice | lib/education/, components/desk/EducationTopic.tsx, app/practice/delayed-tape/ |
| Root document, foyer and desk composition | app/layout.tsx, app/page.tsx, components/desk/HouseFoyer.tsx, components/desk/HouseOfferings.tsx, components/desk/WorkingDesk.tsx |
| Room view + fixture study | /?desk=jesse&view=room; app/night-desk/page.tsx (redirect / ?study=1); components/night-desk/ (scene + study); components/desk/RoomPresentation.tsx; lib/room-view-projection.ts; lib/desk-presentation.ts; styles/desk-craft.css |
| Intent, estimate, offering hydration and paper-record interaction | lib/trading/useTradingDesk.ts |
| Ticket, board, tape and record presentation | components/desk/TradeTicket.tsx, components/desk/PaperLedger.tsx, components/desk/DeskBoard.tsx, components/desk/TickerTape.tsx, components/desk/PaperHistory.tsx |
| House mark and desk instrument | components/desk/HouseMark.tsx, components/desk/DeskInstrument.tsx, |
Trading uses decimal strings and integer base units. The Base service verifies chain, pool/factory, token order, decimals and output at a recent block; Solana estimates preserve mint identity, amount units and Jupiter route evidence. Estimates are never called executable orders. Reference observations have explicit freshness and uncertainty labels.
Older voice, billing, registry and webhook modules remain implementation scaffolding, not the client-facing identity system. They are not mounted by the root layout. Arbitrum billing and identity configuration are independent of Base trading. Retained settlement is not a stock execution adapter.
pnpm test — domain, quote, paper-record, route-cutover and retained infrastructure tests.pnpm typecheck — TypeScript verification.pnpm exec next build --webpack — production compilation without the repository's destructive standalone postbuild cleanup. Deployment packaging is a separate operation.pnpm lint — ESLint; currently reports warnings but no errors.pnpm check:canon and pnpm check:broker-voice — scan source copy against the canonical desk labels and broker contracts; an empty scan fails.CI=true pnpm test:e2e — maintained desktop and phone journeys against a previously built production bundle. Install Chromium first with pnpm exec playwright install chromium. Four maintained journeys pass; 14 legacy tests remain explicitly skipped, not accepted.pnpm check:room-budget — after a production build, measure both views in local headless Chromium and compare against the previous successful baseline. A passing regression check does not establish that the absolute budgets or real-device gates are met.The 2026-10-03 validation record covers the integrated feature repairs and dependency updates: 1,311 tests, typecheck, copy checks, production build and the four maintained browser journeys passed; lint reported 44 warnings and no errors. Provider stubs and local checks do not certify live voice, wallet execution, hosted CI, every recovery path, or real-device performance.
MODE_HINTS behind the ModeStamp ⓘ + LINE_FOOT at the line foot; no duplicate title= on tape/wire/ModeStamp/ledger/dictation/call-foot (91ce5d6).ELEVENLABS_AGENT_HETTYscripts/create-hetty-agent.mjsELEVENLABS_AGENT_TENNIEscripts/create-tennie-agent.mjsELEVENLABS_AGENT_HALLEYscripts/create-halley-agent.mjslib/desk-instrument.ts| Explicit units and canonical catalog | lib/trading/domain.ts, lib/trading/catalog.ts, lib/tokenized-stocks.ts |
| Offering presentation, instruction matching and desk eligibility | lib/desk/offerings-presentation.ts, components/desk/HouseOfferings.tsx |
| Base estimate service and RPC integration | lib/trading/quotes.ts, lib/trading/aerodrome.ts |
| Desk adapter resolution, quote and marks routes | lib/trading/adapters.ts, app/api/desk/[deskId]/quote/route.ts, app/api/desk/[deskId]/marks/route.ts |
| Thin HTTP boundary | lib/trading/http.ts, lib/api-client.ts, app/api/stocks/quote/route.ts, app/api/stocks/marks/route.ts |
| Indicative tape marks (Chainlink on Base; Jupiter venue-duplex marks on Solana — reference, never offers) | lib/trading/marks.ts, lib/trading/marks-shared.ts, lib/trading/useReferenceMarks.ts, lib/trading/adapters/jupiter-marks.ts |
| Market clock, broker voice and the ring-on-arrival line | lib/market-clock.ts, lib/use-market-clock.ts, lib/desk/broker-voice.ts, lib/desk/broker-take.ts, lib/trading/line-signal.ts, components/desk/BrokerLine.tsx |
| House presence grammar (blotter hearables, blank slip, receiver, room clock, shared copy) | components/desk/BlotterHearables.tsx, components/desk/ReceiverShell.tsx, components/desk/RoomMarketClock.tsx, lib/desk/ui-copy.ts |
| Solana instruments, estimates, paper and live evidence | lib/solana/ |
| Meteora DBC launch desk (paper-first; tracker token, quote catalog, Pyth anchor, curve estimates) | lib/meteora/, components/desk/HalleyDeskSurface.tsx, app/api/desk/halley/estimate/route.ts |
| Shared draft/review transitions and local persistence | lib/trading/workflow.ts, lib/trading/paper-records.ts |
| Live execution journal (approvals, submitted/confirmed swaps) | lib/trading/live-journal.ts, lib/trading/useLiveJournal.ts, lib/trading/useDeskExecution.ts |
| Desk slips (commemorative first-paper / first-live keepsakes) | lib/trading/desk-slips.ts, docs/DESK_SLIPS.md |
| Filed paper receipt portraits | components/desk/ReceiptPortrait.tsx, mounted by Hetty and Jesse tickets for filing and archive views |
| Delight: spoken-line caption, since-last-visit tray deltas, ledger export | lib/trading/tray-deltas.ts, lib/trading/ledger-export.ts (wired in WorkingDesk.tsx, DeskBoard.tsx, TradeTicket.tsx, PaperLedger.tsx) |
| Optional account, paper backup, transcript write | components/auth/AuthProvider.tsx, lib/auth.ts, lib/trading/usePaperSync.ts, app/api/paper/route.ts, app/api/hetty/transcript/route.ts |
| Voice dictation input (AssemblyAI) | app/api/dictation/route.ts, lib/dictation/useDictation.ts, lib/trading/dictation-parser.ts, components/desk/TradeTicket.tsx, docs/DICTATION.md |
| Desk voice sessions (ElevenLabs) | components/desk/HettyCall.tsx, components/desk/JesseCall.tsx, components/desk/TennieCall.tsx, lib/trading/voice-tools.ts, lib/robinhood/voice-tools.ts, lib/meteora/voice-tools.ts, components/desk/HalleyCall.tsx, lib/desk-notes.ts, lib/education/, app/api/hetty/session/route.ts, app/api/desk/jesse/session/route.ts, app/api/desk/tennie/session/route.ts, app/api/desk/halley/session/route.ts |
| Eligibility check (source only; not a paper-desk surface) | lib/eligibility.ts, app/api/eligibility/route.ts |
| Shareable paper-intent links | lib/share.ts |
/api/*.