Connect any AI to your own Gunbot. The desk screens your enabled pairs, asks your model to pick one, runs the answer through a fail-closed risk gate, and delivers the surviving order as a signed webhook, a REST call, or both. Your exchange keys never enter the desk — they stay in the bot you already control.
The model picks from a pre-filtered candidate list, by index. There is no field through which it can name a pair, a size or a price, because there is no code path that would read one.
Exchange credentials never reach this desk. It acts by asking a Gunbot you already run. AI provider keys are sealed per user in an encrypted vault that fails closed without its master key.
Missing limits, an unknown pair, no real price, an unarmed desk, a damaged config file — each one blocks the order instead of guessing. A store it cannot read is never read as empty.
OpenAI, Anthropic, Gemini, Grok, every open-weight model on OpenRouter behind one key, a local Ollama, or any OpenAI-compatible endpoint you host yourself.
Outbound signed webhook, Gunbot REST, or both. Idempotent so a retry cannot double an order, retry-bounded so it cannot hammer, and SSRF-guarded so it cannot be pointed inward.
Run LibreChat in front of the desk and every conversation becomes one AI trader — its own market, its own bankroll, its own risk budget. Ask it to trade; it still goes through the gate.
An environment variable set outside the UI. Nothing you can click turns this on.
Through its own guarded setter, which refuses without the lock above. A general config patch cannot reach it.
Presented deliberately to arm the desk — and it lapses. An arm does not survive forever, or a restart.
A configured, enabled webhook or REST destination. No destination means paper, and the result says so.
Live orders are refused unless a real price for that pair came back from Gunbot. A real order sized off a simulated price is the one bug this desk will not ship.
Read from your limits file at order time. If that file is damaged the cycle refuses rather than falling back to somebody else's defaults.
One switch halts the desk, and a daily loss limit trips it on its own. Reset is deliberate.
If your model is unreachable, the cycle skips. It does not quietly trade its own baseline under your model's name, and every surface reports live as live and paper as paper.
Pair it with a local Ollama and nothing leaves your computer at all. Exchange keys stay in Gunbot, AI keys stay in the vault, orders go to a bot on the same machine. For a deployment other people reach, there is a Docker compose file and a deployment guide — read the guide first.