Troubleshooting
Common failure modes and how to diagnose them. If something here doesn't
match what you're seeing, check ~/.tealstreet/cli.log — full detail
lands there even when terminal output is rate-limited or suppressed.
Connection health
Every accounts listing renders a colored dot per account, and the
{conn} prompt token renders
one for the focused account.
| Color | Meaning |
|---|---|
| Green | Healthy |
| Yellow | Warning / initializing |
| Red | Error / disconnected |
| Gray | Not connected |
Force a fresh socket on the focused account:
> conn reconnect
> ws reconnect # same — alias
Multi-account snapshot:
> conn --all
See connection for the full
command surface.
"Why didn't that error show up again?"
Critical errors (geo-blocked region, invalid API key, …) are classified per account and printed once per category. Repeated occurrences of the same class are suppressed at the terminal but still written to the log file.
If you missed an error, look in:
tail -f ~/.tealstreet/cli.log
Or from inside the REPL:
> logs # print the log file path
> logs clear # wipe it
> clearlogs # same — alias
cli.log is cleared on startup, so a fresh session always starts
with an empty file.
"Why did my typo do something weird?"
The REPL has one bit of magic: a single token that matches a market on
the focused exchange is treated as a switch.
> BTCUSDT # → switch BTCUSDT
A typo like buyy 100$ doesn't match either a known command or a
symbol, so it falls through to Unknown command instead of being
absorbed silently. The shorthand only fires on exactly one token, and
only if it's a real market.
"Why is my console flooded with the same line?"
The CLI's console interceptor is rate-limited to 5 messages / second with a 10 s dedup window. If you're seeing the same warning over and over from a third-party library, the interceptor will start dropping duplicates after the first burst.
Primary command output goes through print(), which bypasses the
rate limiter, so trading output is never throttled.
See Output → Network monitor for details.
Watch modes seem to freeze on exit
Watch modes (wa, wp, wo,
wm, watch chart, watch chase) use the alt screen plus raw mode.
On exit the readline state is rebuilt and prompt updates are skipped
for 200 ms.
That short pause is intentional — it's not a freeze. If the prompt still looks broken after a second, press Enter to force a redraw.
"Where did my fill notification go?"
Every fill on the focused account produces:
✓ Fill: Bought 0.01 BTCUSDT @ $50,124.5
If you're inside a watch mode when the fill lands, the message is
appended to whichever panel is showing rather than printed to the REPL
scrollback. Drop out (Escape or Ctrl+X) and check logs — every
fill is also written to cli.log.
"My chaser is still in the book after chase cancel"
chase cancel cancels the chaser and the rest order. chase cancel keep cancels the chaser but leaves the working order in the book.
If you used the keep variant and then wondered why the order is still
there — that's why. Use plain chase cancel to clear both, or
cancel <id-prefix> to drop just the order.
See chase for the full form table.
"Why is wait time 1200 blocking for 24 hours?"
wait time HHMM is a clock-time wait (UTC). An exact match to the
current time schedules for the next occurrence — i.e. ~24 hours
out. If you meant "the next time it's 12:00 UTC, but not right now",
that's exactly what you got.
To unstick a one-minute-from-now wait, target the next minute boundary:
> wait time 1201
See wait for the full grammar.
"The update banner won't go away"
A background updater check runs at REPL startup and prints a banner when a newer version exists.
> update -c # version-check only — confirms what's available
> update # fetch and replace the running binary
After update, restart the CLI. The banner only suppresses for the
current process.
"Did my order go through? I was in sim"
When simulation is on, no orders hit the network. Every "execution" is a printed line, nothing more.
Toggle it explicitly:
> sim # show state
> sim off
Worth the half-second check before chasing a "missing" fill. The
fatfinger and
whitelist guards can also reject
orders before they're sent — both print a warn line when they fire.
Logs and where they live
| File | Contains |
|---|---|
~/.tealstreet/cli.log | Logger output + intercepted console messages |
~/.tealstreet/cli_history | Newline-separated REPL history (cap 200) |
cli.log is cleared on every CLI start. If you need to capture a
session, copy it before you exit.
See also
- Safety — simulation, fatfinger, whitelist.
- Output — output kinds, fill notifications, rate limiting.
- Config files — every file under
~/.tealstreet/.