Paper-first, safety-first workbook for turning user investment ideas into user-approved custom indexes, backtests, and strictly gated execution flows.
apps/web: Next.js workbook UI and approval UXapps/api: FastAPI control planeworkers/temporal: Temporal workflows and workersservices/research: investment vehicle discovery and normalizationservices/backtest: backtesting and benchmark comparisonservices/execution: approval bundle orchestration and broker execution prepservices/llm-gateway: OpenRouter-facing model routing and budget guardrailslibs/contracts: shared schemas/typeslibs/broker-adapters: broker interfaces and IBKR paper adapterlibs/audit: multi-model sequential council audit logicinfra/docker-compose: local development stackdocs: architecture, runbooks, threat model
make install-py
make install-web
make db-proxy
make migrate
make test
make run-api
make run-web
make verify-uiFor the exact local database access model and security rules, read docs/runbooks/CLOUD_SQL_PROXY.md before changing any Cloud SQL networking or local DB setup.
Local URLs:
- API:
http://127.0.0.1:8000 - Web:
http://localhost:3000 - The web app opens to the Agentic Indexing workbook, with
Saved Indexesplus chat-driven ideation tabs backed by Postgres.
Docker dev stack:
docker compose -f infra/docker-compose/docker-compose.yml up --buildCLOUD_SQL_CONNECTION_NAME: required when usingmake db-proxyagainst Cloud SQL.DATABASE_URL: required for durable Postgres-backed state.OPENROUTER_API_KEY: enables real multi-model checks and model registry refresh through OpenRouter.EXA_API_KEY: optional if you want a second search provider beyond OpenRouter-based search.IBKRpaper credentials and gateway/TWS connection details: required once the paper adapter is upgraded from stubbed previews to real broker calls.
Without these keys the app still runs, but it falls back to in-memory storage or deterministic stubs where appropriate.
Use the proxy for local development instead of connecting directly to the Cloud SQL public endpoint:
export CLOUD_SQL_CONNECTION_NAME=agentic-etf:us-central1:agentic-etf-pg-dev
make db-proxyThen point DATABASE_URL at 127.0.0.1:5432. This keeps local access tied to your Google auth instead of a temporary authorized network entry for your current public IP.
This is not optional documentation. The full operational and security procedure is in docs/runbooks/CLOUD_SQL_PROXY.md.
- The visible product is
Agentic Indexing; internal package names still useagent_etffor now. - The workbook shell has one fixed
Saved Indexestab and dynamic ideation tabs. - The right rail is a chat-driven ideation thread; the left side is a decision canvas that fills in as the council resolves specification details.
- Saved indexes show thesis, holdings, performance windows, benchmark comparison, and rebalance cadence.
- Model selection is admin-approved: one OpenAI, one Anthropic, and one Google model at a time.
- Browser verification uses Playwright against an isolated local test stack with in-memory state.
- Supported projects in the current core suite:
- Chromium desktop
- Firefox desktop
- WebKit desktop
- mobile Chrome emulation
- mobile Safari emulation
- Primary commands:
make install-playwright
make verify-ui
make verify-ui-headed
make verify-ui-update-baselines
make verify-ui-report- Verification docs:
- MVP is paper-first: no live money movement.
- Any order action is modeled behind a 3-step approval chain with cooldown.
- Audit councils are fail-closed: any dissent halts the stage.