Command Reference
Every EdgeProof command, what it does, and its flags. Run edgeproof --help for a short version, or edgeproof <command> --help where supported.
Global
| Command | Description |
|---|---|
edgeproof --version |
Print the installed version and exit |
edgeproof --help |
List available commands |
Setup and health
`edgeproof configure`
Interactive first-time setup wizard for the paper-first Alpaca path: probes your LLM, Alpaca paper account, and Discord source, then writes a .env (0600 permissions) to ~/.config/edgeproof/ (the EdgeProof home; override with EDGEPROOF_HOME). Never asks for a license key. Other brokers are configured afterwards via edgeproof broker setup|auth (see Configuration). See Install.
`edgeproof broker setup `
Configure and authorise a broker that uses OAuth. Currently schwab. Collects your app
credentials, writes them to .env (0600), and runs the authorisation flow.
Kept separate from edgeproof configure on purpose: that wizard sets up paper
trading, and Schwab has no paper environment. This command states that up front and
defaults to declining.
`edgeproof broker auth `
Authorise or re-authorise a broker that uses OAuth.
schwab: needed after Schwab's 7-day refresh token expires, which it does regardless of activity and cannot be renewed programmatically.tastytrade: paste the refresh token from your OAuth client in the tastytrade dashboard. EdgeProof validates it against the environment matchingTASTYTRADE_PAPER_TRADEbefore storing anything: cert and live tokens are separate, and a token from the wrong environment is rejected up front rather than mid-session.robinhood: the first-time authorisation. Opens a local callback listener on 127.0.0.1 (port 18712, or ephemeral if taken), prints a URL to approve, and captures the grant automatically. Robinhood needs no API keys, so this replacesbroker setupfor it.What to expect: agentic trading runs in a separate Agentic account that Robinhood prompts you to open (and fund) during this authorisation: there is no settings toggle to flip beforehand. Desktop browser only; mobile cannot complete it. After onboarding, set
ROBINHOOD_ACCOUNT_NUMBERto the Agentic account's number, not your main account's.If the browser just signs you into robinhood.com with no agentic-account prompt, Robinhood rejected the request. Retry once (older EdgeProof builds could poison retries by re-using a client registration bound to a previous port; current builds re-register automatically). If it still happens, Robinhood may be limiting the beta to specific agent platforms. Nothing on your side fixes that.
`edgeproof broker verify`
Exercise the configured broker against its paper environment end to end: connect,
read the account, read positions, resolve an option contract, quote it, and list orders.
Add --place-order to also submit one contract at an unfillable price and cancel it,
proving order submission without risking a fill. --underlying=<SYM> changes the ticker
(default SPY).
It refuses to run against live, and refuses live-only brokers (Schwab, Robinhood) outright. Nothing is contacted in either case. Two deliberate exceptions:
--live-order-test=I-ACCEPT-A-REAL-ORDER (the exact phrase, typed in full) runs the
order round-trip on a live-only broker: one BUY limit for 1 contract at $0.01
(priced so it cannot plausibly fill), then cancelled, with the cancellation confirmed by
re-polling rather than trusted. It requires the broker's live-only acknowledgement to
already be set, never sells, and uses a day order so even a failed cancel expires at the
close. This is the only way to prove order submission on a broker with no paper
environment.
--read-only is the exception, and the only way to exercise a live-only broker. It
inspects the account (balances, positions, quotes, orders) and cannot place
anything: the broker is wrapped so placeOptionOrder, closePosition and
cancelOrder throw before any request is made. That is a structural guarantee rather
than a flag, which is why it is allowed against a real account. It cannot be combined
with --place-order.
Read the output rather than just the exit code. The cost basis and IV lines are printed for manual comparison against the broker's own UI: a per-share vs per-contract mix-up is internally consistent and passes every automated check while being 100× wrong.
IV n/a is not automatically a bug. Snapshot greeks are intermittent on some feeds
(Alpaca's indicative feed returns them only sometimes), so the same contract can report
a sane IV on one run and n/a on the next. Re-run before concluding the adapter maps it
wrong, and treat a consistently null IV, or one that is off by 100x, as the real
signal.
`edgeproof doctor`
Run all system health checks and print a report. Exit code 0 = all pass, 1 = warnings, 2 = failures. A fresh unconfigured machine shows config.load: fail until you run init.
| Flag | Effect |
|---|---|
--json |
Emit the report as JSON (schema version 1) instead of text. Useful for scripting. |
edgeproof doctor
edgeproof doctor --json > report.json
Running the supervisor
`edgeproof start`
Start all trading roles under the supervisor: monitor, positions, ledger, and (in bot mode) discord. Runs a preflight health check first (shows the same ✔/▲/✖ checklist as edgeproof doctor) and refuses to start if any check fails.
| Flag | Effect |
|---|---|
--skip-preflight |
Start without running preflight checks. Prints a warning. Use only when you have already verified health with doctor. |
`edgeproof status`
Show live supervisor status: which roles are running, their PIDs, and the current halt state.
`edgeproof stop`
Stop the supervisor and all roles gracefully. Handles stale PID files, so it is safe to run even after a crash.
Risk controls
`edgeproof halt`
Pause new trade entries within one monitor cycle. Open positions continue to be managed and exits still fire. No restart needed.
| Flag | Effect |
|---|---|
--reason "<text>" |
Record a reason for the halt, shown in status and logs. |
edgeproof halt --reason "stepping away for lunch"
`edgeproof resume`
Resume trade entries after a halt.
`edgeproof flatten`
Place market orders to close all open positions, then halt entries. Use this before going offline for an extended period. This sells real positions in live mode.
Licensing
`edgeproof license activate `
Activate a live-trading license. The key looks like EP-XXXX-XXXX-XXXX-XXXX. Stores a signed token locally; the key is masked in all output.
`edgeproof license status`
Show your plan, days until expiry, and last refresh time.
`edgeproof license refresh`
Force a token refresh from edgeproof.net instead of waiting for the automatic daily refresh. Useful right after renewing. See Licensing.
Telemetry
`edgeproof telemetry`
Show whether operational telemetry is on, and where it would be sent. Off unless you opted in during edgeproof configure; turn it on or off any time with edgeproof configure set EDGEPROOF_TELEMETRY true|false.
`edgeproof telemetry --show`
Print the exact payload: version, OS, uptime, open-position count, install id and license key. Nothing else is ever sent: no symbols, prices, quantities, P&L, credentials, or anything from your channels. Works whether or not telemetry is enabled, so you can look before deciding.
When enabled, a running monitor reports once a day. It is fire-and-forget: a failed report is dropped silently and never affects trading.
Dashboard
`edgeproof dashboard`
Serve the local ledger dashboard at http://127.0.0.1:3030. Bound to localhost only. The dashboard has two panels:
- Open Positions: live view of current holdings (entry price, current price, unrealized P/L). Polls
positions-snapshot.jsonwritten by the positions role and refreshes every 5 seconds. Shows streaming vs. polling mode. - Signal Source Tournament: realized P&L leaderboard ranked by source. Fills in as trades close.
| Flag | Effect |
|---|---|
--port <n> |
Serve on a different port. Also settable with LEDGER_PORT. |
edgeproof dashboard --port 3999
Environment flags
Some behavior is controlled by environment variables rather than flags:
| Variable | Effect |
|---|---|
EDGEPROOF_NO_UPDATE_CHECK=1 |
Disable the daily version check |
LEDGER_PORT |
Default dashboard port |
EDGEPROOF_WORKER_BASE_URL |
Override the license server (testing) |
See the full Config reference for every variable.
Exit codes
| Code | Meaning |
|---|---|
0 |
Success, or all health checks passed |
1 |
Warnings present (doctor), or a handled error |
2 |
Health-check failures (doctor, or preflight before start) |
Note: flags such as --once, --dry-run, and --bypass-trading-hours exist on the internal role processes the supervisor spawns. They are for development and testing, not part of the supported user-facing surface.