It reads your live TradingView chart and your broker panel every few seconds, holds you to a rulebook where no number exists without the day it changed and what that day cost, and reduces the position when you go over your own cap.
Local only · one machine · no account, no signup, no cloud
The real thing
Captured from a live session on this machine. Every figure has been replaced with a demo value — the layout, the panels and the state are exactly what a session looks like.
Auto-advancing · hover to hold · click a screen to jump
01 — CRISP mode
CRISP is the live-session layer. It does not predict, rank or forecast. It answers three questions every few seconds — are we in session, are we within size, and what did that trade actually do — and it acts on the second one without being asked.
Two windows, declared in the exchange's own timezone: London 08:00–09:30 BST/GMT and New York 09:30–11:30 EDT/EST. Outside them the app refuses to arm a setup and says which window it is waiting for.
They used to be stored as fixed minutes past IST midnight. India has no daylight saving; London and New York both do, and they shift on different dates — so a fixed IST time can only ever be right for part of the year, and the two windows were wrong in opposite halves of it. Durations are preserved exactly; only the opening moment moves.
Entering five with a cap of two sells three and leaves two. The thesis survives; only the excess risk is removed. Flattening would also kill the winners — and a guard that costs you your winners gets switched off, and a switched-off guard protects nothing.
Position size is the least reliable field on the panel, so the guard requires two consecutive confirming reads before anything is sent, is capped at six actions a day with a thirty-second cooldown, and logs the size it saw, the order it sent and whether the broker took it. Reduce only, never flip.
Every closed trade is replayed against archived bars for MAE and MFE — how far it went against you before it worked, and how much was on the table before you took it. Expectancy is split by playbook, by session and by tag, and every row carries its own n.
Most trades on disk have no excursion data, because the bar archive only started collecting on 2026-09-05 and the recovered history pre-dates it. So coverage is computed first and rendered at the top, a sample under n = 8 is shown but never ranked, and a counterfactual that could not run says so — instead of returning the book unchanged, which would read as "this would not have helped".
02 — The workspace
Everything runs from one Node process on port 7433 and a plain browser page. Pick a panel to see what it holds.
—
—
03 — Inputs
No broker API keys to paste, no CSV upload as the primary path. The app attaches to the TradingView Desktop you already have open and to the broker panel already connected inside it.
TradingView Desktop over Chrome DevTools Protocol. Watchers poll for engulfing candles on 1H, 30M, 15M and 5M, fair-value gaps, swing-failure patterns and the mechanical accumulation–manipulation–distribution phase. One chart lock serialises them, because there is a single connection and a watcher that steals the chart mid-read leaves it somewhere you did not put it.
Position size, working orders and day P&L read straight off the connected panel, folded by balance-delta at flat. The app cross-checks its own ledger against the broker and reports the gap rather than quietly picking a winner.
Every trading day writes bars to disk per symbol and timeframe. This is what forensics replays against, and what the overnight scan reads to brief you on the Asian session before you sit down.
Every line that appears in the chat pane — messages, verdicts, watcher alerts, guardrail alarms, trade tickets — is appended to disk and never trimmed, capped or rewritten. Captured by watching the pane itself, so a future surface is archived without anyone remembering to wire it.
Every detector fire, with the gate it passed or the reason it was refused. This is the record the playbook switch and the autonomy gate are both judged from.
Two states that look identical and are not: whether the bridge's own child process is up, and whether TradingView is actually answering. They diverged before and produced a false "connected" light, so they are now measured and reported separately.
04 — Memory
Guardrails can tell you that you are oversized right now. They cannot tell you this is the fourth time in nineteen days and what the first three cost — because their state is wiped at every daily rollover. That is what the memory layer is for.
Every repeat is filed with a cited source. A pattern the app cannot trace to a real record is an accusation, not evidence — so it is not filed.
A losing trade with zero flags is filed as a positive. Filing it as failure is how an app teaches someone that following the rules does not pay.
Coaching records a concrete, checkable instruction. At the next measured point it is compared against what actually happened — "cap at 6" against tomorrow's max size.
Attach a bounded, machine-checkable condition to a lesson and promote it. It then fires on the live feed and reports honestly: armed three weeks ago, never fired.
05 — Playbooks
One registry answers "is Playbook B on?" — before it existed, three files answered and none agreed. Two independent axes per playbook: may it fire and be shown, and may it ever place an order. They are separate because the only way to stop being nagged by a bad playbook must not also be the only way to stop measuring it.
Any always-on timeframe, gated on market structure — a bullish engulf needs an HH-HL structure and two confirmed pivots each side, at a swing, not mid-range.
Swing-failure pattern into a fair-value gap, with a bounded bar window between the raid and the fill.
Not a setup — the filter on Playbook A, locked on in code. Switching it off would not disable a strategy, it would trade bare engulfs.
Long only, 1H, ADX ≥ 35, five-bar lookback. The only playbook with a conclusively measured edge across nine months of bars — and the only one permitted to place.
15-minute, both directions, fixed 1:2 reward. The simplest thing in the book and the easiest to falsify.
Mechanical accumulation → manipulation → distribution phase detection, on the primary symbol and a secondary watch across MNQ and MGC. Structurally refused from ever placing.
A new playbook starts off and recording-only, and is labelled unknown in the UI
until a spec and a detector both exist — so "it is listed" is never mistaken for "it is wired".
The app only advises a switch from your own scored signals: n ≥ 30, the Wilson lower bound
above break-even, and positive expectancy per contract. The switch itself stays yours.
06 — Beyond the session
A day review that nobody reads is theatre. These surfaces exist because they change what happens next week.
Money × process quadrant, because discipline and P&L are inversely correlated in your own data. An untraded weekday scores as a win.
Per-trade excursion against archived bars, expectancy split by playbook, session and tag, with coverage stated first.
Every account, every stage, one continuous record — including the six that were blown and what each one died of.
What the model layer actually spends per session, audited with the real tokenizer, so the coach is never quietly the most expensive thing you run.
The overnight scan replays the Asian session from the bar archive and briefs you before you sit down — and says how much of the window is actually on disk.
Skipping the pre-session checklist is a hard no-go, ranked with the daily stop. Not a nudge.
Mood, plan, mistake and lesson were write-only for months. They now feed the coach's context, so your own words come back at you.
Biggest-day to total ratio against the firm's own consistency gate, so a payout is never refused by a rule you had not measured.
07 — Autonomy
Nothing here is unlocked by a plan or a payment. Each rung is opened by evidence from your own shadow record, and the gate fails closed to SHADOW while naming every gap.
Records what it would have done, at exactly the size the top rung trades, so the record is eligible evidence rather than a different experiment.
The Judge may issue a machine-readable ticket on a go verdict. It appears on screen carrying its stop and target. Nothing moves until you press confirm.
May act inside a narrow, pre-agreed band without a press — and must log the size it saw, the order it sent, and whether the broker took it, every time.
Places without a click, on the playbooks that have earned it. This is the only rung that makes the app fully automatic, and the only one the evidence bar exists to hold shut.
The gate, read from the live shadow record
Fails closed to Shadow
At the observed rate — roughly one resolved shadow trade per active day, spread across playbooks — forty per playbook is measured in months. That is the honest distance to fully automatic, and it is a property of how often a setup genuinely qualifies, not of any missing code. No configuration change moves it.
08 — The record
There are no testimonials on this page. There is one trader, six blown accounts, and a repository that writes down what each one cost. These are the entries the guards were built from.
“Auto-flatten on oversize. It is the cure for me blowing accounts like today. Oversize killed me today and I need serious resolution.”
oversize-guard.js“The judge always describes the mismatch between platforms and not a real solution to the problem. I want this loop to really give the core reason for the failure.”
failure-chain.js“I need a new agent who lives inside this memory, who gives information when any mistake or positive trade is repeated, directly in chat.”
pattern-memory.js and The Loop09 — Standing
This page would be worth less without this section. The repository keeps built and live-verified as separate words, and so does this list.
It has never been checked against a real closed trade with non-zero P&L. Every live size and P&L figure on this page sits on top of it.
Setting a price on a TradingView alert does not take — it creates the alert at the current market price instead. The function fails loudly rather than reporting a success it did not achieve.
The Telegram bridge is disabled, so 24 notification call sites are silent no-ops — including the size-guard blind alarm. A read-only glance page covers pull; push is still unanswered.
The watchdog is sound and has a heartbeat, an unattended launcher and a scheduled-task installer. It has never been switched on, and the relaunch path has never been exercised end to end.
The rule appears in the rulebook, in prose and in a comment. No guard reads it. It is documentation, and it is not what limits gold.
The execution path drives a GUI desktop application over a debugging port. That is not a service. A cloud Windows VM with a live session could host it — a deployment project with real fragility, not a config change.
10 — Questions
app/rules.json. Each value sits beside a comment recording the day it changed and the evidence that set it. A limit hardcoded in a module drifting out of sync with that file is a bug this repo has already had.11 — Run it
The launcher relaunches TradingView with the debugging port open, waits for it to boot, then starts the server. Launching the chart from the Start menu breaks the bridge, which is the whole reason the launcher exists.
The drawdown floor only ever ratchets up. Touch it once and the account is gone — so the distance to it is the number this app puts in front of you all day, every day, whether or not you want to see it.