Project Umbrela is a sober, dense, readable operator cockpit for local market evidence and audit. It renders a precomputed BRUTAL1000 evidence snapshot into a compact dashboard focused on the questions an operator needs answered quickly: current top signal, bias, entry/stop/targets, gates, proof windows, risk flags, audit links, and a read-only local execution chart with exact setup overlays.
This project is a read-only evidence and campaign-observability cockpit. It has no broker integration, no order route, no wallet path, and no credential handling. Live campaign execution, when armed, happens only in the separate local trading_agent controller; Project Umbrela renders its secret-free sidecar.
Project Umbrela is the trading/market cockpit UI in a larger GitHub estate split into clear lanes:
- Repository audit — canonical repo classification table.
- Trading lane — Project Umbrela, local engine candidate, trading-agent backend, legacy research.
- Cyber lane — security tooling/labs kept separate from market thesis.
- Infra lane — operator/shared utilities.
- Consolidation roadmap — recommended next cleanup steps.
The runtime brutal1000_snapshot.js and brutal1000_campaign.js sidecars are generated local data and are git-ignored; committed schema examples live under examples/.
Preferred launcher:
- Desktop → TradingView Bloomberg Terminal / Project Umbrela launcher
Direct launch:
chromium --app=file:///home/<user>/tradingview_bloomberg_terminal/terminal.htmlThe cockpit can also be opened directly in a browser from terminal.html.
- The local BRUTAL1000 pipeline writes
brutal1000_snapshot.js. - The autonomous campaign controller writes
brutal1000_campaign.js. - That sidecar defines:
window.BRUTAL1000_SNAPSHOT = { ... };terminal.htmlreads both sidecars and renders evidence plus campaign state.- The local chart module maps the selected HOT CEX candidate to a Binance public market symbol, fetches read-only public candles, and draws exact Entry/Stop/TP overlays on a local canvas.
- The Open TV button can still launch the equivalent TradingView symbol for manual inspection.
The browser performs only lightweight rendering and public candle fetches. It does not need private runtime material. If the public candle API fails, the snapshot-driven thesis, proof tables, risk flags, and audit links remain readable.
Both local sidecars hot-refresh every 60 seconds while the cockpit stays open, so campaign status, position R, budget use, and last-cycle results move without a manual page reload.
The cockpit is split into small, single-responsibility modules under js/. Pure modules contain no DOM or network access and are unit-tested in Node; the DOM controller and canvas renderer are the only browser-coupled files.
| Module | Type | Responsibility |
|---|---|---|
js/config.js |
browser constants | colors, report links, storage key, defaults |
js/format.js |
pure | escaping, number/price/gate/age formatting |
js/symbols.js |
pure | symbol normalization, TradingView symbol, interval mapping |
js/snapshot.js |
pure | HOT list, candidate lookup, setup levels, decision, risk flags |
js/indicators.js |
pure | EMA, RSI, and the shared LONG trigger evaluator |
js/market_data.js |
pure (injectable fetch) | public Binance kline URLs, parsing, futures→spot fallback |
js/chart_scale.js |
pure | price range padding and pixel projection math |
js/chart_render.js |
browser (canvas) | draws candles, EMA, overlays, HUD using pure modules |
js/app.js |
browser (DOM) | wires snapshot + market data + chart, handles events |
Each pure module is a UMD wrapper: it exports via module.exports in Node and attaches to window.UMBRELA.<name> in the browser, so the exact same code runs in tests and in the cockpit.
Load order in terminal.html is dependency-ordered: snapshot sidecar, then config, pure modules, chart_render, and finally app.
npm test # run the dependency-free unit suite (node test/run.js)
npm run smoke # verify terminal.html script order + browser-global module contract
npm run check # syntax-check every module
npm run verify # check + test + smoke (recommended before handoff)The suite covers formatting edge cases, symbol normalization, snapshot interpretation branches, total/closed/open status summaries, open-paper parsing, indicator boundaries, the LONG trigger rule, the futures→spot fallback (with an injected fake fetch, no network), and chart-scale math. No network or browser is required to run it.
terminal.html— default Project Umbrela operator cockpit; loads modular scripts fromjs/.js/— modular cockpit source (pure logic + browser renderer/controller).test/run.js— dependency-free Node unit suite.package.json—npm test/npm run smoke/npm run check/npm run verifyentrypoints.docs/operator-runbook.md— human/agent operation and audit runbook.brutal1000_snapshot.js— generated local evidence sidecar consumed by the cockpit; ignored by git.brutal1000_campaign.js— generated secret-free campaign state sidecar; ignored by git.examples/brutal1000_snapshot.example.js— committed example sidecar schema.examples/brutal1000_campaign.example.js— committed campaign schema example.DESIGN_NOTES.md— design notes and data-flow rationale.terminal_full_legacy.html— preserved copy of the previous full/flashy terminal.terminal_full_legacy_*.html— timestamped legacy reference copy..gitignore— ignores runtime logs/PIDs and local backup folders.
Use docs/operator-runbook.md for the canonical open/verify/operate/audit flow. For handoff-quality verification, run:
npm run verifyProject Umbrela is for evidence review, campaign monitoring, and operational audit only:
- no live trading from the browser
- no broker connection
- no order placement
- no wallet access
- no credential handling
- no private market-data secret dependency; local chart uses public candle endpoints only
Any live execution remains outside this dashboard in the separately audited local campaign controller.
The cockpit exposes:
- current HOT CEX candidates, capped to the top three
- explicit BRUTAL1000 status cards: total / closed / open by overall, CEX, and DEX
- exact local Entry/Stop/TP overlay for the selected candidate
- open paper monitor with current R / max R / gate / action when exported in the sidecar
- all-time historical gate and drawdown memory
- rolling 72h evidence gate
- last 7d and post-hardening proof windows
- risk flags such as all-time drawdown block and DEX disabled
- local report links for proof, action plan, evaluation, ranked candidates, and paper ledger