io.appmakes.ottyOtty · ottySet it up
Install Easy Complete and approve Accessibility, then quit the terminal completely — macOS loads input methods when a process starts, so a reopened window is not enough.
ec doctor reports the shell hook and the input method separately, so it tells you which half is missing.
exec $SHELL ec doctor
Why both shell integrations can stay installed
Otty appends its block to the absolute end of ~/.bashrc and rewrites it whenever the app launches. Easy Complete used to require its own block to be last, so each app kept moving the other and the dashboard flip-flopped between working and "needs setup".
Easy Complete now accepts its block sitting near the end rather than demanding the last line, and leaves Otty's trailer in place. Otty's block is inert unless $OTTY_SHELL_INTEGRATION is set, so it costs nothing in other terminals.
Launch Easy Complete before you open Otty
When the desktop app is not running, the shell integration stands down completely so Otty keeps its own completions. That decision is made once, when the shell starts.
A terminal opened while Easy Complete was closed stays uninstrumented for that whole session — start the app, then open a new Otty tab.
If the popup drifts from the caret
Re-register the bundled input method and restart Otty so macOS reloads it.
ec integrations install input-method
Keyboard controls
↑ / ↓moves through suggestions.Tab / →accepts the highlighted suggestion.Escdismisses the popup.
