Repository structure
A single monorepo where TypeScript and Python coexist, with shared contracts from language-neutral schemas.
Clawlas lives in a single monorepo where TypeScript and Python coexist. Shared contracts are generated from language-neutral schemas so both sides agree on shapes.
Layout
clawlas/ ├── apps/ │ ├── web/ TanStack Start dashboard │ ├── convex/ self-hosted Convex backend │ └── api/ FastAPI gateway ├── services/ │ ├── agents/ LangGraph workflows │ ├── quant/ feature & scoring engine │ ├── execution/ isolated execution engine │ ├── backtesting/ vectorbt + event-driven sim │ └── collectors/ one per data source ├── packages/ │ ├── schemas/ language-neutral contracts │ ├── strategy-specs/ strategy definitions │ ├── exchange-adapters/ CCXT + direct adapters │ ├── feature-registry/ registered features │ └── shared-python/ shared Python utilities ├── infrastructure/ docker · caddy · monitoring · backup · scripts ├── research/ notebooks · experiments · reports ├── tests/ └── docs/
apps/ hold user-facing surfaces; services/ hold the Python runtime components; packages/ hold cross-cutting contracts and adapters; and infrastructure/ holds the Docker, Caddy, monitoring and backup configuration.
One repo, two ecosystems
Keeping everything together makes the schema contracts, CI and deployment one coherent pipeline — while each service still ships as its own container.