By VinceBmmrt
Carry out an independant review of all changes since last commit
A visually rich, AI-powered trading terminal. Stream live market data, trade a simulated portfolio, and chat with an AI assistant that can analyze positions and execute trades on your behalf.
1. Set up your environment:
copy .env.example .env
# Edit .env and add your OPENROUTER_API_KEY
2. Build and run (first time):
.\scripts\start_windows.ps1 -Build
Subsequent runs (image already built):
.\scripts\start_windows.ps1
Open http://localhost:8000.
Stop:
.\scripts\stop_windows.ps1
Rebuild after code changes:
.\scripts\start_windows.ps1 -Build
Terminal 1 — Backend:
cd backend
uv run uvicorn app.main:app --reload --port 8000
Terminal 2 — Frontend:
cd frontend
npm run dev
Open http://localhost:3000.
The frontend dev server proxies API calls to
localhost:8000automatically.
| Variable | Required | Description |
|---|---|---|
OPENROUTER_API_KEY | Yes | Powers the AI chat assistant |
MASSIVE_API_KEY | No | Real market data (Polygon.io); simulator used if absent |
LLM_MOCK | No | Set true for deterministic mock LLM responses (testing) |
Backend unit tests (128 tests):
cd backend
uv run --extra dev pytest tests/ -v
E2E Playwright tests (requires the app running on port 8000):
cd test
npm install
npx playwright install chromium
npx playwright test --reporter=list
Single Docker container on port 8000. FastAPI serves both the REST/SSE API and the static Next.js frontend.
FastAPI (Python/uv)
├── /api/* REST endpoints
├── /api/stream/* SSE price stream
└── /* Static Next.js export
SQLite (volume-mounted at /app/db)
Market data: GBM simulator (default) or Massive/Polygon.io API
LLM: LiteLLM → OpenRouter (Cerebras inference)
| Layer | Technology |
|---|---|
| Backend | Python, FastAPI, uv |
| Frontend | Next.js (static export), TypeScript, Tailwind CSS |
| Database | SQLite |
| Real-time | Server-Sent Events (SSE) |
| AI | LiteLLM → OpenRouter (Cerebras) |
| Deployment | Docker (single container) |
The app uses next export (static HTML). All data is live and client-side, so the page renders nothing on the server and mounts fully in the browser — this is intentional and avoids SSR/hydration mismatches with dynamic state.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub vincebmmrt/ai-trading-workstation --plugin independant-reviewerUltra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Memory compression system for Claude Code - persist context across sessions
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.