One command halts all order flow. Nothing passes until you re-arm it yourself, and re-arming is command line only.
BLOCK sell 1 RTY. kill_switch is armed.
Every rule runs in the PitBridge daemon, outside the model. The agent proposes an order. The guardrail engine checks it against a config file the agent cannot read from or write to. Only a permitted order reaches NinjaTrader 8.
Each card shows the rule name from the config schema and one example decision. The values are example configuration, chosen to look like plausible trader settings.
One command halts all order flow. Nothing passes until you re-arm it yourself, and re-arming is command line only.
BLOCK sell 1 RTY. kill_switch is armed.
When the day ledger reaches your configured loss, new orders are refused until the next session.
BLOCK buy 1 ES. daily loss 512 >= limit 500.
Once the day is up by your target, further entries are refused so a good day is not given back.
BLOCK buy 1 NQ. profit 1420 >= lock 1400.
Caps contracts on a single order. An oversized order never reaches the platform.
BLOCK buy 5 MNQ. limit is 2.
Caps the net position per instrument and account, across every order the agent sends.
BLOCK buy 2 MES. position would be 42 > max 40.
The agent trades only the instruments you listed. Everything else is refused.
BLOCK buy 1 6E. not in allowlist.
Orders are accepted only inside your window, with a holiday and early-close calendar per account.
BLOCK buy 1 CL at 03:12. window is 09:30-16:00.
Enforces a wait after a loss or after any order, so a looping agent cannot re-enter instantly.
BLOCK buy 1 MES. cooldown 4:11 left after loss.
Caps orders per minute, hour and day so a runaway loop cannot spray the book.
BLOCK order 7 in 60s. limit is 6 per minute.
Refuses the same account, instrument, side and size fired twice inside a short window.
BLOCK buy 2 MNQ. duplicate within 30s.
If the add-on link to NinjaTrader 8 is down, new orders hard-reject instead of queuing blind.
BLOCK buy 1 ES. addon link down for 18s.
Holds an order for your explicit approval. No approval inside the timeout means auto-reject.
WARN live order held. confirm within 60s.
A guardrail is a software control. It refuses an order that breaks a limit you set. That is the whole promise, stated plainly: PitBridge enforces the limits you configure. It does not create returns, it does not prevent every kind of loss, and it makes no claim about whether you keep or clear any account. A market can gap through a resting stop; a control that refuses new orders cannot change what an open position does next.
The engine is pure and deterministic. Given the same order, the same account state and the same clock, it returns the same decision every time: allow,block with a reason code, or require confirm. There is no model in the decision path, no network call, and no way to reconfigure a rule from inside a tool call. Changing a limit means editing the config file, which changes a checksum recorded in the audit log.
Blocks are not silent. Each decision is appended to a hash-chained audit log, and you can ask the daemon why any order was refused.
$ pitbridge audit why 01J8Z...MNQ order buy 8 MNQ account=Sim101 decision BLOCK rule max_contracts_per_order detail size 8 exceeds limit 2 config_hash a1f3c9 (rules unchanged since 2026-07-05)
Example output with example configuration values.
Limits live in a per-account config file. PitBridge does not ship your prop firm's numbers for you: you read your firm's rules and enter the values you intend to trade under. The engine then holds you to them.
# example account, example values [accounts.eval] nt_account = "Sim101" mode = "paper" # read_only | paper | live [accounts.eval.guardrails] daily_loss_halt = 500 profit_lock = 1400 max_contracts_per_order = 2 max_position = 40 instruments = ["MNQ 09-26", "MES 09-26"] max_orders = { per_minute = 6, per_hour = 20 } cooldown_after_loss_s = 300 duplicate_window_s = 30 human_confirm = "every_live_order"
Example configuration. See the docs for the full schema.
Tell us your platform and we email you when your setup is supported. Nothing else.