Skip to main content

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.

ColorMeaning
GreenHealthy
YellowWarning / initializing
RedError / disconnected
GrayNot 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

FileContains
~/.tealstreet/cli.logLogger output + intercepted console messages
~/.tealstreet/cli_historyNewline-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/.