A personal financial AI planner: your full money picture reconstructed locally, plans simulated nightly, with a hard rule that the data never leaves the machine.

Your financial life is most complete inside your brokerage's web portal — and least portable anywhere else. The cloud aggregators that promise a unified view want, as the price of admission, your credentials and a continuous feed of your financial history routed through their servers. I've spent a career building the systems that other people's sensitive data flows through; I know exactly what "we take security seriously" is worth when the business model is the data. What I actually wanted was modest: the portal's picture — positions, activity, cash flow, tax context — queryable on my own hardware, with no third party in the loop.
Steward is a pipeline, not an app. A read-only browser automation pulls the brokerage's own tables — the positions page is an ag-Grid widget whose pinned label column and centered data cells arrive as separate fragments, so the parser pairs them row by row, stripping section headers and totals — and lands everything in a local SQLite database: accounts, positions, transactions, daily snapshots. From that store, a deterministic analysis pipeline computes subscription-like recurring charges, cash-flow trends, concentration risk, and opportunity scans, and a static HTML dashboard is regenerated daily by cron. No server, no daemon with a port, no login. The dashboard is a file; the database is a file; the whole system is a directory I can back up.
The repo is a small monorepo of plain scripts: an ingest/ layer (position parser,
activity parsers for two export formats, a local token-handling helper whose callback server binds
to 127.0.0.1 only), an analysis/ layer (subscriptions, cashflow, opportunities,
insights — each writing structured JSON), and a dashboard/ layer that exports a JSON
snapshot into an HTML template. A single pipeline runner executes the steps in order and stops on
the first failure, so a bad day is visible rather than half-rendered. Cron drives the daily refresh
and the dashboard rebuild; the AgentOS ontology tracks the job, its state files, and its failure
routing like any other member of the fleet. You will not find balances, account numbers, or dollar
figures on this page — by design, that part of the system stays where it belongs.