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...