Windows-GPU-UNLOCK
RTX3090 UEFI 포트, 한국어 무리셋 윈도우 부팅 가이드, 검증된 소스와 벤치마크 제공
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A tool for electronic enthusiasts
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Your voice-first electronics companion. Ask about circuits, components, microcontrollers, and maker hardware, then get live captions, spoken responses, and instant visual cards.
Clitronic turns natural language questions into rich, animated UI cards. It is not a chatbot UI with a transcript dump. It is a dynamic UI engine for electronics with realtime voice layered on top.
Mic input → Realtime transcription → Validated StructuredResponse → Cards + exact speech
Ask "What resistor for a red LED on 5V?" and get a calculation card with the formula, inputs, and result. Ask "Compare Arduino Uno vs Raspberry Pi Pico" and get a side-by-side comparison. Ask "Show me what a breadboard looks like" and get a real photo with attribution.
| Component | Use Case |
|---|---|
| Spec Card | Specs and features of a component |
| Comparison Card | Side-by-side qualitative comparison |
| Explanation Card | How something works, key concepts |
| Image Block | Real product photos or circuit diagrams |
| Recommendation Card | What to buy or use |
| Troubleshooting Card | Debug steps for broken circuits |
| Calculation Card | Formulas with inputs and results |
| Pinout Card | IC pin layouts with color-coded types |
| Chart Card | Numeric comparisons as bar charts |
| Wiring Card | Step-by-step wiring instructions |
gpt-5.6-luna with structured JSON outputgpt-4o-mini-transcribegpt-4o-mini-tts audio generated from the validated card responseNo database or user authentication. Conversation cards live only in the current browser session; demo quota metadata uses local storage, while rate limits and image caches remain process-local.
git clone https://github.com/sergiopesch/clitronic.git
cd clitronic
nvm use
npm ci
Node 24.x is the supported runtime for both the web app and the CLI. The repo includes .nvmrc, .node-version, and engines.node, so local development stays aligned with CI and Vercel.
Create .env.local from .env.example:
cp .env.example .env.local
Edit .env.local and set OPENAI_API_KEY to a project-scoped key. Leave
BRAVE_API_KEY empty unless you use Brave image search. Keys must remain server-side: never commit
.env.local or use a NEXT_PUBLIC_ prefix for either credential.
npm run dev
Open http://localhost:3000.
npm run dev.http://localhost:3000 in a Chromium-based browser or Safari.show me an Arduino image.Good smoke tests:
show me an Arduino imagetell me about the ESP32 then show me onecompare Arduino Uno vs Raspberry Pi Picomy LED is not blinkingnpm run dev # Dev server
npm run build # Production build
npm run validate # Type check + lint + format check
npm test # Runtime schema/normalization tests
npm run audit:prod # Audit production dependencies
npm run release:check # Complete deterministic web + CLI release gate
bash autoresearch/run_quality_experiment.sh # Credentialed quality gate for model/search changes
npm run scaffold:component -- --name "Signal Meter" --kind chart
The quality runner reads exported process variables rather than loading .env.local; see the
AutoResearch guide. Security disclosures and credential
handling are covered in SECURITY.md.
The web app and CLI intentionally use different providers today.
That split is deliberate rather than accidental:
If you want to use the CLI as well:
cd cli
nvm use
npm ci
export ANTHROPIC_API_KEY=your_key_here
npm run start -- --help
app/
├── api/chat/route.ts # LLM endpoint orchestration
├── api/chat/response-normalizer.ts # Shape rescue + component normalization
├── api/chat/response-validator.ts # Compatibility export for the shared response contract
├── api/chat/security.ts # Input sanitization + injection detection
├── api/chat/rate-limit.ts # In-memory per-IP limiter with cleanup
├── api/image-search/route.ts # Thin HTTP wrapper over image-search service
├── api/image-proxy/route.ts # Safe image proxy for remote image tiles
├── api/realtime/session/route.ts # OpenAI Realtime session bootstrap
├── api/speech/route.ts # Bounded exact-text TTS adapter
├── globals.css # Design tokens + keyframe animations
└── page.tsx # Entry point
components/
├── console/local-console.tsx # Client entry wrapper
├── console/conversation-shell.tsx # Voice-first shell and card stage
├── voice/voice-transcript-strip.tsx # Live user/assistant captions
└── ui/ # 10 visual card components + renderer
├── ui-renderer.tsx # Routes JSON → component via registry map
├── animations.tsx # AnimateIn wrapper
├── card-layout.tsx # Shared card headers, count badges, disclosure controls
├── copy-button.tsx # Clipboard actions for formulas/results/steps
├── safety-callout.tsx # Consistent safety note presentation
├── spec-card.tsx
├── comparison-card.tsx
├── explanation-card.tsx
├── image-block.tsx # Dual-mode: SVG diagrams + web photos
├── recommendation-card.tsx
├── troubleshooting-card.tsx
├── calculation-card.tsx
├── pinout-card.tsx # SVG IC pin layout
├── chart-card.tsx # Horizontal bar chart
├── wiring-card.tsx # Step-by-step wiring guide
└── text-response.tsx # Word-by-word spoken-text fallback
hooks/
├── useConversationState.ts # Structured response fetch + history context
├── usePrefersReducedMotion.ts # Motion preference hook for accessible animation
└── useVoiceInteraction.ts # Transcription transport, turn ownership, exact speech playback
lib/
├── ai/component-registry.ts # Single source of truth for component names/aliases/types
├── ai/openai-config.ts # Shared OpenAI model + realtime config
├── ai/openai-server.ts # Server-only API key resolution and client factory
├── ai/response-contract.ts # Shared server/browser Zod decoder
├── ai/response-schema.ts # TypeScript response contracts
├── ai/voice-presentation.ts # Bounded deterministic card-to-speech projection
├── ai/rate-limit.ts # Shared rate-limit constants/messages
├── ai/system-prompt.ts # Intent detection + response formatting
└── ai/transcript-utils.ts # Light cleanup for speech transcripts
The current app experience is optimized around a voice-first workshop workflow:
components/ui/card-layout.tsxSee docs/ui-ux-polish.md for the interaction patterns and design constraints behind the current card system.
/api/realtime/session. Only server-side routes can read OPENAI_API_KEY; the browser receives
the scoped Realtime secret, never the standard project key./api/chat.UIRenderer projects the validated payload into a card while
/api/speech synthesizes the exact bounded summary derived from that same payload.item_id values and abort controllers prevent stale transcripts,
requests, or audio from committing after barge-in or replacement.show me one still resolve correctly.See docs/engine-architecture.md for the interaction-engine invariants, failure boundaries, and verification strategy.
Use this order to avoid drift:
lib/ai/component-registry.ts (name, alias, type, detection signature)lib/ai/response-schema.ts data contractlib/ai/response-contract.ts component data schemacomponents/ui/ui-renderer.tsx renderer mappinglib/ai/system-prompt.ts component guidanceUse the scaffolding script to generate a new UI component file and a guided integration checklist:
npm run scaffold:component -- --name "Signal Meter" --kind chart
--name supports spaces, kebab-case, snake_case, or PascalCase.--kind must be one of: card, chart, image.components/ui/<name>-card.tsx and prints the exact follow-up edits required across registry/schema/validator/renderer/prompt.| Variable | Required | Description |
|---|---|---|
OPENAI_API_KEY | Yes | Server-only OpenAI project API key |
OPENAI_SAFETY_ID_SECRET | No | Stable server-only HMAC key for Realtime safety IDs |
BRAVE_API_KEY | No | Brave Search API key; blank uses Wikimedia only |
DAILY_RATE_LIMIT | No | Daily chat requests per IP (default: 20) |
REALTIME_SESSION_MINUTE_LIMIT | No | Realtime client-secret requests per IP/minute (12) |
REALTIME_SESSION_DAILY_LIMIT | No | Realtime client-secret requests per IP/day (120) |
IMAGE_SEARCH_MINUTE_LIMIT | No | Image-search requests per IP/minute (30) |
IMAGE_SEARCH_DAILY_LIMIT | No | Image-search requests per IP/day (300) |
IMAGE_PROXY_MINUTE_LIMIT | No | Remote image proxy requests per IP/minute (120) |
IMAGE_PROXY_DAILY_LIMIT | No | Remote image proxy requests per IP/day (default: 1,000) |
Rate limits are in-memory, per process, and intended as demo controls. They are not durable across multiple serverless instances. See deployment and key rotation before making the app publicly reachable.
See ROADMAP.md for upcoming work beyond the shipped realtime voice flow, including richer multi-card responses and circuit simulation.
MIT