ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
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,
EducationTypeScript · JavaScriptGitHub @presidentxerakOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
dojoburo repo
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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.Read the full 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.