documentation
How it works.
Everything the app does, in the order you meet it. If you only read one section, read guardrails — that is the part that decides what an agent can and cannot do to your money.
Getting started
- Download the desktop app for Windows or macOS and open it.
- Pick who runs it. On this computer an agent thinks on your own Claude subscription (via Claude Code’s login), your ChatGPT subscription, or a model on your own GPU. Or pick Cloud and it runs on our servers, on our model, with nothing of yours to connect.
- Connect Robinhood in My account → Connections. Agents reach the broker only through the Robinhood Agentic Trading MCP.
- Create an agent, describe its one job in plain words, and let it propose a plan. It starts on paper.
Agents are threads
An agent is a message thread with one task, one schedule and its own book. You talk to it the way you would text a colleague; it answers in a sentence or two. There is no strategy builder and no node graph — the instructions are the words you wrote, and you can change them by saying so.
Each agent keeps its own ledger. A live agent only ever sells what it bought: the Robinhood account may hold other positions, and they are not its to touch.
Paper and live
Every agent starts in paper mode — simulated fills at real quotes, so you can watch it behave for a week without risking anything. Switching to live is a deliberate, per-agent action, and a live agent must also be armed before it can place an order. Two steps, on purpose.
Guardrails
These are enforced by the engine before any order reaches the broker. They are not advice in a prompt that a model might talk itself out of — a blocked call is blocked, and the refusal is recorded.
- Max order notional — the largest single order, in dollars.
- Max orders per day — bounds an autonomous agent. An operator-driven sell is exempt: you can always tell it to get out.
- Max position notional — the most it may hold in one symbol.
- Allowed symbols — empty means any; otherwise a strict list.
- Market hours — regular session only unless you allow extended hours (limit orders only).
- Daily loss limit — a percentage of the agent’s allocation. Breaching it disables buying for the rest of the day; exits and protective sells stay open.
- Allocation — the capital the agent may deploy, independent of what the account holds.
Stops and targets are engine-enforced. Attach them to a buy, or set them later, and the engine watches the price roughly every fifteen seconds and sells for you when a level breaks — whether or not the agent is awake.
Schedules and wake-ups
An agent runs when it is woken: on a schedule (an interval, or specific times in ET on chosen weekdays, or once), when you message it, when a price watch it set fires, or when a question it asked times out.
If a wake-up is missed — the machine was asleep, the service was down — it is not silently run late. Within a few minutes it still runs; beyond that the agent posts that it missed the run and re-arms. A 3:58 PM instruction is worthless at midnight, so it is not executed at midnight.
What an agent can do
The model never touches the broker directly. It calls tools; the engine executes them.
trade— buy or sell, optionally with a stop loss and take profit attached.cancel_order,set_exit,watch_price— manage what is already open.change_plan— edit its own task, schedule, guardrails or name when you ask it to.remember/forget— durable notes re-injected on future runs.set_thesis,retire— state why it holds something; stand down when the job is done.ask_operator,tell_operator— see below.- Read-only market data, plus optional free intel sources (news, SEC filings, the macro calendar) you switch on in My account → MCP servers.
Check-ins
An agent decides and reports by default. It asks you only when a decision is outside its authority, large or irreversible, or genuinely ambiguous. Every question carries the stakes, a fallback it commits to, and a deadline. If you do not answer in time it is woken again and does the fallback — so the fallback is always the sensible default, never a dodge.
Unattended runs are rationed: a handful of questions and heads-ups per day, so an agent running at 3 a.m. cannot become a notification faucet. One open question at a time.
The decision log
Every gated tool call is recorded with the rule that allowed or blocked it. It exists to answer the question the thread cannot: why didn’t it sell at 3:58? Open an agent’s stats to read it.
Who runs it
One choice per agent, changeable at any time. The same agent runs on any of them — only the transport differs, and tool names, prompts and guardrails are identical.
- Claude — your own Claude subscription, on this computer.
- ChatGPT — your own ChatGPT subscription (Plus/Pro/Team), on this computer.
- Local GPU — a GGUF model from a folder you choose. Private, free, offline.
- Cloud — our model on our servers. Nothing to connect, and the only one that keeps running with this computer off.
Cloud agents
A cloud agent runs on our servers so it keeps its schedule with your laptop shut. It uses a Robinhood grant sealed to the worker’s key — openable only by the worker, never by us casually and never by your phone. See Cloud & subscription.
The phone
The companion app mirrors every agent: read the thread, the book, the reasoning and the decision log; answer check-ins; and fully control cloud agents — run, pause, edit, arm, retire. Local agents appear read-only, because they live on your computer.
Where your data lives
Local agents stay on your machine unless you sign in and turn on sync. We never see your Claude or ChatGPT credentials and never hold a Robinhood password. Details in the privacy policy.
Troubleshooting
- Sign-in code never arrives — check spam for mail from
noreply@auth.harborbots.com; wait 60 seconds before requesting another. - The email link did nothing — type the code from the same email instead. A link only completes on the device that asked for it.
- An agent won’t trade live — it must be in live mode and armed, and within its guardrails. The decision log names the exact rule that stopped it.
- Nothing happened at the scheduled time — look for a “missed the run” note in the thread; that is the catch-up rule, not a crash.
- Something looks down — live status.
Still stuck? support@harborbots.com or support.