Open the app
Operations

Libraries by layer

The concrete library choices for every layer of the hybrid TypeScript + Python stack, including the model gateway, venue adapters and job/queue layer.

The concrete choices, layer by layer. TypeScript owns the web and operational layer; Python owns research, data, the model router and execution. See the providers page for pricing, limits and official docs.

By layer

LayerLibraries
Web / UITanStack Start, Vite, React, TypeScript, Tailwind, shadcn/ui, TanStack Router/Table
ChartsLightweight Charts, Apache ECharts
Data / real-timeConvex (self-hosted), Convex crons
Python platformPython, FastAPI, Pydantic, uv
Agents & orchestrationLangGraph, provider-agnostic LLM gateway
Model gateway / routerInternal OpenAI-compatible gateway, LiteLLM (evaluated), task-level router
Local / OSS inferenceOllama, llama.cpp, vLLM (future dedicated GPU)
QuantNumPy, pandas, SciPy, statsmodels, scikit-learn, TA-Lib / pandas-ta
Backtestingvectorbt, Backtrader (optional), custom event-driven runner
Market / executionCCXT / CCXT Pro, direct exchange adapters, web3.py, chain SDKs
Venue & routingVenueAdapter interface, Jupiter, 0x / 1inch routers, native DEX adapters, paper adapter
Collectors / sourcesExchange listing feeds, on-chain RPC / indexers, DEX Screener, social APIs
MemorySQLite, SQLAlchemy / SQLModel, FTS5, sqlite-vec
Analytics & eventsParquet, DuckDB, Valkey / Redis Streams
Jobs & cacheValkey, BullMQ / Dramatiq / Celery
Cost & budgetusage logs, model registry, per-scope budgets, degradation policy
Loggingpino (web), structured JSON → Loki
NotificationsTelegram bot, Resend (email)
InfraDocker, Docker Compose, Caddy, GitHub Actions
ObservabilityPrometheus, Grafana, Loki, Uptime Kuma, OpenTelemetry (later)
BackupsRestic → Cloudflare R2
Why CCXT, DuckDB and the gateway
CCXT unifies many exchanges and ships WebSockets, preparing the CEX/DEX layer without a rewrite (read-only first). DuckDB queries the Parquet lake directly, so historical scans never hit the operational database. The model gateway exposes one OpenAI-compatible interface so providers and local models are swappable, while Clawlas keeps the routing policy.

See the technical stack page for the at-a-glance overview, the hybrid topology and the rejected choices.