To get custom tab completions working you need to mimic one of the completion provider apis (like copilot) [1] and direct the requests to your own endpoint. In my case, I am running llama.cpp and and MITM-proxying to its newer /infill endpoint [2]
That's why I mention the rust piece may be a blocker for some, you do have to hack apart the src a bit to get things working. At the time I started this, the only two completion providers available were supermaven [3] and copilot. You could mimic either.
[1] https://github.com/zed-industries/zed/tree/be830742439f531e8...
[2] https://github.com/ggerganov/llama.cpp/blob/master/examples/...
[3] https://github.com/zed-industries/zed/tree/be830742439f531e8...
Branch is a bit out of date vs main now but it should work if you build off it.
There are a couple of MITM proxies I've seen for this purpose, the first of which seems to be maintained: - https://github.com/bernardo-bruning/ollama-copilot/tree/mast... - https://github.com/jjleng/copilot-proxy
When I tried a few weeks back I was only able to get the latter to actually process requests, but haven't had a chance to look into it much further yet... first one's probably your best bet