I have my own function that starts up a vterm in the root of the repo that I’m in. It is average for running Claude (long sessions get the scrolling through the whole history on every output character bug) but actually better at running opencode which doesn’t have this problem.
I don't have opencode installed, but I'm curious: if you start a terminal within Emacs with M-x term, how well does it do at running the opencode CLI?