Admin tools and bulk operations
Customise the colour scheme and accent colour of the SOS interface.
Protect access to SOS with an Android-style pattern. The pattern hash is stored locally — no passwords leave this machine.
Download a snapshot of your database, or restore from a previously downloaded file. Restoring always saves a safety copy of the current database first, in case something goes wrong.
Live count of real HTTP requests hitting Yahoo's servers. A single options fetch can be several requests. Watch req/min to gauge how close you are to rate limits.
When the app is running, the cache automatically refreshes:
Refresh the options chain cache for every ticker in your stocks table. Useful after adding many tickers, or to pre-warm before market close. Runs at ~4 tickers in parallel with a small delay between batches to avoid yfinance rate limits.
Compare quote and options chain data from yfinance and Tiger Brokers side-by-side. Useful for diagnosing yfinance issues (stale prices, missing strikes, empty chains). Results are display-only — nothing is saved.
| Source | Price | Prev close | Change | Status |
|---|---|---|---|---|
| yfinance | ||||
| Tiger | ||||
| IBKR | ||||
Probes the local IBKR Client Portal Gateway. Requires the gateway process to be running and an authenticated session. Log in once via browser at the gateway's root URL after starting the gateway.
Performs the two-step lookup: secdef/search to resolve
the conid, then marketdata/history for the latest
daily bar. The "Compare" button above also populates this.
Key is read from claude_api.properties at the project root.
That file is in .gitignore so it shouldn't be committed.
Edit it on disk, then click Reload key to pick up the change.
server_tool_use blocks (= the model called web search)
and web_search_tool_result blocks (= it got results back).
Each API call this app makes logs its input/output tokens and an estimated USD cost (based on per-model pricing). Anthropic doesn't expose a real-time balance, so this is local accounting only — your true monthly invoice lives in your Anthropic console.
| When | Model | Input | Output | Cost | Context |
|---|---|---|---|---|---|
| No calls logged yet. | |||||
Enable verbose terminal logging for troubleshooting. These write to the Flask console (stdout) and persist across restarts.