Welcome to Limitless Trader Lab

Day 6 of 7 · Cohort intensive · 90–120 minutes

Wire Claude + dry-run.

By Day 5 your bot ran on deterministic rules. Today you wire Claude as the strategy brain, Claude calls the Trading + Strategy + Monitor skills with tool use, and run a 60-min dry-run with DRY_RUN=true. Production hardening: rotate PANEL_TOKEN, confirm cancel-button confirmations, trip the kill switch from your phone.

90–120 minutes 1 deliverable #trader-lab · [D6]

Today you’ll learn

You’ll learn how to wire Claude as the strategy brain on top of yesterday’s Strategy + Trading + Monitor skills, run a 60-minute LLM-driven dry-run on the host you deployed Day 2, and harden the panel for tomorrow’s live flip. This will help you arrive at Day 7 with one config flag (DRY_RUN=false) standing between you and a live trade, not a deploy, not a build, not a rebuild.

Section 01

Why wire Claude in.

Yesterday’s loop ran on deterministic rules: scan_watchlist, evaluate_signal, propose_action, all hard-coded. Today Claude becomes the brain. Claude reads the watchlist, calls Strategy, calls Monitor, calls Trading, decides what to log. Tool use is the bridge from “deterministic rules” to “LLM agent”. The deploy already happened on Day 2; the panel already exists from Day 3; the skills are already installed from Days 4–5. Today is the moment those four pieces become one.

Section 02

Wire Claude (30 min).

The Trading skill from Day 4, the Monitor + Strategy skills from Day 5, all already installed. Today you give Claude the orchestrator role: a single prompt that says “run the loop” and Claude calls the right skills in the right order with the right arguments. The skills don’t change. Claude becomes the conductor.

1

You are now: confirming all three skills load

New Claude conversation. Ask: “What skills do you have access to? List the tools each one provides.”

You should see Trading (4 tools), Monitor (4 tools), Strategy (3 tools). 11 tools total. If any are missing, the install path for that skill is wrong, re-check the bonus pack’s README before continuing.

2

You are now: pasting the orchestrator prompt

This is the system-style prompt that turns Claude into the loop runner. Paste it as the first message in a fresh Claude conversation.

Paste into Claude
You are the orchestrator for my Limitless trading agent. Each iteration of the loop, in order: 1. Call Monitor.check_kill_switch, if tripped, log halt and stop. 2. Call Monitor.check_drawdown, if breached, log halt and stop. 3. Call Strategy.scan_watchlist to get candidate markets. 4. For each market: call Strategy.evaluate_signal. If above threshold, call Strategy.propose_action. 5. For any propose_action returning buy: call Monitor.log_decision. DO NOT call Trading.place_order, we are in DRY_RUN. 6. Sleep 60 seconds. 7. Repeat for 60 minutes. Keep narration tight: one short sentence per iteration. The full audit trail is in fills.ndjson via Monitor.log_decision, don’t re-print it. Confirm you understand by listing the 11 tools, then start the loop.

Claude will list the tools, ack the loop pattern, and start. You can watch each iteration in the Claude tab and in the panel side-by-side.

Section 03

Dry-run for 60 min.

Sixty minutes of unattended Claude-driven loop. Watch every iteration in the panel, not in the Claude tab, not in the host logs. The panel is where the bot lives now. The host logs and the Claude tab are debug surfaces.

1

You are now: confirming DRY_RUN is on

Verify on the deployed host before you start.

Run in terminal
# macOS / Linux: $ railway variables | grep DRY_RUN # Windows PowerShell: PS> railway variables | Select-String DRY_RUN DRY_RUN=true

If DRY_RUN is missing or anything other than “true”, set it now. The Trading skill defaults to live mode if the flag is unset. Tomorrow you flip it; today it stays on.

2

You are now: starting the loop

In Claude (with the orchestrator prompt already pasted), say “Run the loop for 60 minutes.” Open the panel on your phone in another tab. Open the Limitless UI in a third tab.

Each iteration: scan, evaluate, propose, log, sleep. Roughly 60 iterations over 60 minutes. The Claude tab narrates one short line per loop; the panel updates the audit feed within 5 seconds; Limitless UI shows zero new orders the whole hour.

3

You are now: reading the audit feed in the panel

Each Monitor.log_decision call appends one NDJSON line to /app/data/fills.ndjson (the same stream the panel reads). The panel renders it in the recent-decisions feed, newest first. Read at least 10 entries while the loop is running.

The log is the agent’s thought process, reading it is the actual skill. Days 7+ you spend most of your time on this view.

Section 04

Production hardening (30 min).

Tomorrow you flip DRY_RUN=false. Before that, the panel needs three checks: rotate the panel token, confirm the cancel button has a confirmation dialog, and trip the kill switch from your phone. None of this requires a redeploy, all three are env-var changes or panel state. Half an hour to verify the rails before the live trade.

1

You are now: rotating PANEL_TOKEN

Day 2’s token has been in your URL bar all week. Rotate it once before the live flip.

Run in terminal
# macOS / Linux: $ railway variables --set "PANEL_TOKEN=$(openssl rand -hex 32)" $ railway variables | grep PANEL_TOKEN # Windows PowerShell (no openssl by default, generate hex via .NET; grep → Select-String): PS> $token = -join ((48..57) + (97..102) | Get-Random -Count 64 | ForEach-Object { [char]$_ }) PS> railway variables --set "PANEL_TOKEN=$token" PS> railway variables | Select-String PANEL_TOKEN

The old token is invalidated immediately. Update your phone bookmark with the new URL: https://<your-domain>/panel/?key=<new-token>.

2

You are now: confirming the kill-switch confirmation

The panel’s kill-switch toggle is a destructive action. Tripping it must require a confirm() dialog, the panel template ships with one; verify it’s wired.

Open the panel on your laptop. Tap a kill-switch toggle. Confirm a JS confirm() dialog pops up. If it doesn’t, the panel template has been edited, revert control_panel.html’s toggleKill() function from bonus/CONTROL_PANEL.md.

3

You are now: tripping the kill switch from your phone

Phone in hand. Tap the panel button. Confirm the dialog. Watch the agent halt within 60 seconds, both in the panel (status flips to TRIPPED) and in the audit feed (one halt event).

Expected log line
[KILL-SWITCH TRIPPED] {"event": "halt", "reason": "kill_file_present", "path": "/app/data/kill.flag", "ts": "2026-..."}

Clear the file (tap the button again, confirm). Watch the agent resume on the next iteration. Don’t graduate to Day 7 until you’ve seen the trip + clear cycle work end-to-end from your phone. This is the gesture you’ll use to graduate tomorrow.

Section 05

Today’s deliverable.

Two artifacts in one post: phone screenshot of the panel mid-dry-run with the audit feed visible, and a 5-line log excerpt from the LLM-driven loop. Plus a screenshot of Limitless UI showing zero new orders. The combination proves Claude orchestrated the loop, the panel observed it, and DRY_RUN held.

Day 6 · Deliverable

Post in #trader-lab.

Phone screenshot of the panel during the LLM dry-run, with the audit feed showing decisions from the past 60 minutes.

5-line excerpt from fills.ndjson showing tool-use decisions Claude made (paste in a code block).

Screenshot of Limitless UI showing no new orders, proves DRY_RUN is honored.

Caption: “[D6] Day 6 done. Claude wired as orchestrator. [N] iterations dry-run. PANEL_TOKEN rotated. Kill-switch trip+clear verified from phone. Snags: [none / brief].”

If the loop didn’t complete a clean 60 minutes (Claude got distracted, tools failed, the host blipped), post that too, the cohort learns more from where it broke than where it went smoothly.

Day 6 complete

LLM in the loop.

Claude orchestrated 60 minutes of dry-run iterations on the deployed host, every decision landed in the panel within 5 seconds, and the kill-switch trip+clear cycle worked from your phone. The exact baseline Day 7 flips live against is in place.

01

A working orchestrator prompt that turns Claude into the loop runner, with all 11 skill tools (Trading + Strategy + Monitor) callable from a single conversation.

02

A fills.ndjson on the deployed volume with 60+ Claude-driven decisions, surfaced live in the panel on your phone, the bot’s thought process you’ll read every morning from now on.

03

A rotated PANEL_TOKEN, confirmed cancel dialogs, and a verified phone-to-host kill switch, the rails Day 7’s live trade rides on.

Tomorrow: Go live. Flip DRY_RUN=false, place ONE real trade, trip + reset the kill-switch from your phone, graduate. Graduation call tomorrow 7pm local on Google Meet.

Day 7 unlocks tomorrow at 9am local · Graduation call: tomorrow 7pm local