A control surface for AI trading agents — explain how they work, then launch each one as its own independently-LLM'd service.
Maestrade is two things in one repo:
- How They Work — a calm, single-page explainer that renders the internal architecture of six AI/agent trading repos as animated flow diagrams (input → output).
- Mission Control — a hub that goes further: it health-checks each repo running locally as its own containerized service, shows its live status, and links out to its native UI. Each service runs its own LLM (independent provider + key + model).
Not affiliated with any of the repos below. The diagrams are conceptual. The explainer makes zero network calls. The hub only health-checks services you choose to run locally — it never drives trading logic and never sees a provider API key.
| Repo | Owner | Archetype |
|---|---|---|
| TradingAgents | TauricResearch | Multi-Agent Debate |
| AI-Trader | HKUDS | Agent-Native Network |
| scientific-agent-skills | K-Dense-AI | Skills Library |
| daily_stock_analysis | ZhuLinsen | Scheduled Pipeline |
| QuantDinger | brokermr810 | Self-Hosted Platform |
| Vibe-Trading | HKUDS | Tool-Calling Agent |
A minimalist dashboard that explains how each repo works internally — the flow of information from input to output, rendered as clean, animated flow diagrams.
- Overview grid of six calm cards, color-coded by archetype.
- Click a card → its pipeline fills the screen, left → right (stacks vertically on mobile). Parallel agents (analyst team, bull/bear debate, risk trio, …) render side-by-side to show parallelism.
- Hover or tap a node to read what it does — no modals.
- ▶ Trace flow lights up the pipeline stage-by-stage, then settles.
npm install
npm run dev # Vite dev server → http://localhost:5173Tech: Vite + React + TypeScript + Tailwind. Flow diagrams are plain flex/grid +
inline SVG connectors — no diagram library, no backend, no database. All diagram content
lives in src/data/repos.ts, the single source of truth: adding a
7th repo there renders with no other code changes.
┌──────────────────────────────┐
│ HUB (UI) │ :3000
│ diagrams + status + launch │
└───────────────┬──────────────┘
│ /api/status (server-side health checks) :4000
┌──────────────┬─────────────┼──────────────┬──────────────┐
▼ ▼ ▼ ▼ ▼
TradingAgents daily_stock Vibe-Trading QuantDinger AI-Trader
:8001 :8002 :8003 :8004 :8005
own LLM own LLM own LLM own LLM own LLM
A tiny Express backend (mission-control/hub/backend) pings each service
server-side (the browser can't, due to CORS) and exposes:
GET /api/services— the non-secret manifest (hub/services.config.json).GET /api/status—{ id, status: up|down, latencyMs }per service, polled every 15s.
The backend never sees any provider API key — only the manifest.
cd mission-control
# Configure each service's OWN LLM (independent keys + models):
for s in trading-agents daily-stock-analysis vibe-trading quantdinger ai-trader; do
cp services/$s/.env.example services/$s/.env
done
# …edit each services/<name>/.env, add its key, pick its model.
docker compose up --build # hub comes up even if zero services do
open http://localhost:3000See mission-control/README.md for full details, including
running the hub alone without Docker.
Real keys live only in services/*/.env, which is git-ignored. Only .env.example
templates are tracked. Never commit a real key.
.
├── src/ # "How They Work" explainer (Vite + React + TS)
├── mission-control/ # the hub: frontend + backend + per-service stubs
│ ├── hub/ # frontend (:3000) + backend (:4000)
│ └── services/ # one folder per repo, each with its own .env.example
├── docs/ # screenshots
└── README.md
MIT
