You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: document the OpenAI server and docker images; point to LocalAI for production
Add an OpenAI-compatible server section to the main README (build, curl and
OpenAI-client usage) and extend the Docker section to cover the new
parakeet.cpp-server image alongside the cli. Note LocalAI as the production
path in both the main README and examples/server/README.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+46-4Lines changed: 46 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -128,26 +128,35 @@ The CLI auto-selects the first GPU device the ggml registry reports (including i
128
128
129
129
## Docker
130
130
131
-
Prebuilt images are published to GitHub Container Registry on every push to `master`. They contain just the `parakeet-cli` binary, so mount a converted `.gguf` model and your audio at runtime. Both the CPU and CUDA images are multi-arch (`linux/amd64` and `linux/arm64`), so the right one is pulled for your host automatically:
131
+
Two prebuilt images are published to GitHub Container Registry on every push to `master`, one per binary:
132
+
133
+
-`ghcr.io/mudler/parakeet.cpp-cli`: the command-line transcriber.
134
+
-`ghcr.io/mudler/parakeet.cpp-server`: the [OpenAI-compatible server](#openai-compatible-server).
135
+
136
+
Each comes in a CPU and a CUDA variant (the CUDA tag is suffixed `-cuda`), and both are multi-arch (`linux/amd64` and `linux/arm64`), so the right one is pulled for your host automatically. They contain just the binary, so mount a converted `.gguf` model (and, for the cli, your audio) at runtime:
# Server: binds 0.0.0.0 and exposes 8080. Fetch a model by alias on first run,
153
+
# or mount a local .gguf. Add --gpus all with the :latest-cuda tag for GPU.
154
+
docker run --rm -p 8080:8080 ghcr.io/mudler/parakeet.cpp-server:latest --model tdt_ctc-110m
146
155
```
147
156
148
157
The CUDA image is built on CUDA 13, so it covers everything from Turing up through Blackwell, including GB10 / Grace-Blackwell (DGX Spark) on arm64.
149
158
150
-
To build the image yourself, see the build args at the top of the [`Dockerfile`](Dockerfile). The CPU image is the portable `GGML_NATIVE=OFF` build, so it runs on any amd64 or arm64 host.
159
+
To build the images yourself, see the build args at the top of the [`Dockerfile`](Dockerfile); the cli is the default target and the server is `--target runtime-server`. The CPU image is the portable `GGML_NATIVE=OFF` build, so it runs on any amd64 or arm64 host.
151
160
152
161
---
153
162
@@ -240,6 +249,39 @@ The `parakeet-cli` binary lands at `build/examples/cli/parakeet-cli`.
240
249
241
250
---
242
251
252
+
## OpenAI-compatible server
253
+
254
+
`parakeet-server` is a small HTTP server that speaks the OpenAI transcription
255
+
API, so any OpenAI client works by pointing its `base_url` at it. It is built by
256
+
default (`PARAKEET_BUILD_SERVER=ON`) and lands at `build/examples/server/parakeet-server`.
257
+
258
+
```sh
259
+
# Serve a model. --model takes a local .gguf, an http(s) URL, a <name>.gguf in
260
+
# mudler/parakeet-cpp-gguf, or an alias (downloaded and cached on first run).
It supports `response_format``json` / `text` / `verbose_json` and
276
+
`timestamp_granularities[]=word`. This is a single-model, one-request-at-a-time
277
+
example that accepts WAV uploads only; see [`examples/server/README.md`](examples/server/README.md)
278
+
for the full list of options and known simplifications. **For a production
279
+
deployment, use [LocalAI](https://localai.io)**, which embeds parakeet.cpp as a
280
+
backend and adds a model gallery, concurrency, multi-model serving, the full
281
+
OpenAI API surface, auth, and metrics.
282
+
283
+
---
284
+
243
285
## Batching
244
286
245
287
Single-clip transcription is the default and needs no flags: every `transcribe` call runs one clip at a time, byte-for-byte identical to before. Batching is an opt-in path for decoding several clips together, which matters when you serve many concurrent requests on a GPU.
0 commit comments