ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
AI 에이전트를 저렴하게 구축·운용하는 방법을 배우는 실습형 아카데미, 토큰·유로 비용까지 포함한 절약 실천까지
Learn to build AI agents, and to run them cheap. A hands-on academy for agents, prompts and AI tooling, with the frugality practices most courses skip: what a run really costs in tokens and in euros,
교육TypeScript · JavaScriptGitHub @presidentxerak온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기dojoburo repo
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A responsive 2D pixel-art web app: a startup office where a team of AI agents — each with a real startup function and its own skills — works at their desks with animated ASCII-art expressions on their heads. It's a game-like dashboard to orchestrate agents in a fun way (à la WorkAdventure), and every transaction settles on the XRP Ledger. 100% functional, no mock. The app talks directly to public XRPL nodes over WebSocket from the browser — no backend.README 전문 보기 ↗
A responsive 2D pixel-art web app: a startup office where a team of AI agents — each with a real startup function and its own skills — works at their desks with animated ASCII-art expressions on their heads. It's a game-like dashboard to orchestrate agents in a fun way (à la WorkAdventure), and every transaction settles on the XRP Ledger.
100% functional, no mock. The app talks directly to public XRPL nodes over WebSocket from the browser — no backend.
| Agent | Function | Department | Key skills |
|---|---|---|---|
| Ava | CEO — Orchestrator | Leadership | Daily standup, Set OKRs, Allocate budget (XRPL) |
| Rex | CTO — Engineering | Engineering | Ship a feature, Code review (x402) |
| Otto | DevOps — Infrastructure | Ops | Deploy to prod, Scale |
| Fin | CFO — Treasury | Finance | Open treasury, Pay agents, On-ledger audit |
| Mia | CMO — Marketing | Growth | Launch a campaign, Brand audit (x402) |
| Sol | Head of Sales | Growth | Close a deal, Get paid (x402) |
| Pia | Product Manager | Product | Write a spec, Prioritize the backlog |
| Dex | Lead Designer | Product | Produce a mockup, Design system (x402) |
| Ada | Data Analyst | Engineering | Weekly report, On-ledger analysis |
| Hana | People Ops — HR | People | Recruit an agent, Morale boost |
| Sam | Customer Support | Ops | Handle a ticket, Measure CSAT |
| Lex | Legal & Compliance | Leadership | Draft a contract, Compliance check |
Every agent also has the 3 shared XRPL skills: XRPL wallet, Agentic payment (x402) and Track behavior.
xrpl
library (npm i xrpl) runs in the browser via Node polyfills.src/xrpl/wallet.ts: real keypair generation, faucet funding (Testnet/Devnet),
balance reads (account_info).src/xrpl/payments.ts: Payment autofill → sign → submitAndWait.{protocol, skill, invoice, from, to}.account_tx.VITE_XUMM_API_KEY or the in-app panel.| Network | Endpoint | Faucet |
|---|---|---|
| Testnet (default) | wss://s.altnet.rippletest.net:51233 | yes |
| Devnet | wss://s.devnet.rippletest.net:51233 | yes |
| Mainnet | wss://xrplcluster.com | no — real value |
Real / production-functional:
account_info).Payment transactions, autofilled, signed and submitAndWait-ed:
agentic x402 settlements, treasury allocations, payroll batches, per-agent contributions,
the Sales "get paid" flow (a real faucet-funded client wallet pays Sol on Testnet).account_tx reads, aggregated into inbound/outbound flows.Game layer (in-world state, not fake external data):
There are no hardcoded fake balances, fake tx hashes, or stubbed ledger responses. Anything that touches money is a real on-ledger transaction.
Note: XRPL public nodes, Google Fonts (Silkscreen) and the Xaman SDK are unreachable from some sandboxed CI environments due to network egress policy — this affects the build box, not the app. In a normal browser everything connects and works.
See SECURITY.md for the full threat model. Highlights: strict
Content-Security-Policy + security headers (public/_headers, vercel.json),
React auto-escaping (no dangerouslySetInnerHTML/eval), frame-ancestors 'none'
(anti-clickjacking), non-custodial Xaman signing so private keys never touch the
app, and edge/WAF guidance for bots/scraping/DDoS.
npm install
npm run dev # http://localhost:5173
In the app:
npm run build # tsc + vite build → dist/
npm run preview # serve the build
dist/ is a static site — deploy as-is to any host (Netlify, Vercel, Cloudflare Pages,
GitHub Pages…).
Get a free API key at apps.xaman.dev, paste it into the Xaman
panel (or set VITE_XUMM_API_KEY, see .env.example), connect your wallet, then fund the
treasury with a payment you approve in the Xaman app.
src/
data/agents.ts # roster: functions + skills
data/looks.ts # per-agent character kind + colours
data/layout.ts # stage, desk positions, desk variants + job props, decor
data/faces.ts # animated ASCII expression frames per mood
data/jokes.ts # hero/agent banter
data/events.ts # random office events
components/ # Office, Character, PixelAvatar, Furniture, Hero,
# AgentSprite, AgentPanel, TreasuryPanel, XamanPanel,
# ActivityLog, Toasts, TopBar, Icon
xrpl/network.ts # network config + shared WebSocket client
xrpl/wallet.ts # generation / faucet / balances
xrpl/payments.ts # Payment + x402 memos + track + account_tx
xrpl/xaman.ts # Xaman (XUMM) non-custodial signing
audio.ts # procedural music + SFX (Web Audio)
store.ts # global state (zustand) + skill orchestrator
Stack: React · TypeScript · Vite · Zustand · xrpl.js · xumm · Web Audio. No backend, no mock.
A guided support assistant (bottom-left of the app and landing) answers questions with link buttons. It runs a cost-optimized cascade:
src/support/knowledge.ts): deterministic, on-brand
answers. Zero cost, works with no backend — this handles most questions.api/chat.ts, Vercel Edge): for unmatched questions the
browser calls a server-side proxy that tries free providers first
(Groq → Gemini → Cerebras → OpenRouter) and only falls back to paid ones
(DeepSeek → Anthropic) under a daily cap.Provider keys live only on the server — never in the browser. Configure any subset; with none set, the bot stays in free FAQ mode.
| Env var | Provider | Cost | Get a key |
|---|---|---|---|
GROQ_API_KEY | Groq | free tier | https://console.groq.com/keys |
GEMINI_API_KEY | Google Gemini | free tier | https://aistudio.google.com/apikey |
CEREBRAS_API_KEY | Cerebras | free tier | https://cloud.cerebras.ai/ |
OPENROUTER_API_KEY | OpenRouter | free models | https://openrouter.ai/keys |
DEEPSEEK_API_KEY | DeepSeek | paid (cheap) | https://platform.deepseek.com/api_keys |
ANTHROPIC_API_KEY | Anthropic Claude | paid | https://console.anthropic.com/settings/keys |
VITE_XUMM_API_KEY | Xaman (frontend) | free | https://apps.xaman.dev |
Spending limits & security (all in .env, see .env.example):
SUPPORT_MAX_TOKENS, SUPPORT_MAX_INPUT_CHARS, SUPPORT_RATE_MAX /
SUPPORT_RATE_WINDOW_MS (per-IP rate limit), SUPPORT_PAID_DAILY_CAP (max paid
calls/day), SUPPORT_ALLOWED_ORIGIN (origin lock), and SUPPORT_LLM_ENABLED=false
(kill switch → FAQ only). The proxy also validates method/size/JSON, wraps user
text against prompt injection, times out upstream calls, and never returns keys
or internal errors. For a hard global budget cap across instances, back the
counters with a KV store (e.g. Upstash Redis) — the in-memory limiter is
per-instance.