Releases: TaewoooPark/DRIFT
Release list
OpenAI endpoint stage 10.6 - localized README updates
Documents the OpenAI-compatible endpoint update across the root README files.\n\nChanges:\n- Adds the OpenAI-compatible local backend section to README.ko.md, README.zh.md, and README.ja.md.\n- Keeps README.md aligned with the compatibility audit by mentioning Python/JS SDK smoke coverage and remaining full-stack gates.\n- Links every language README to docs/openai-compatibility.md and docs/openai-compatibility-audit.md.\n\nVerification:\n- git diff --check\n- Verified linked docs files exist.
OpenAI endpoint stage 10.5 - compatibility audit coverage
Re-audits the PR against the vLLM/llama.cpp-style compatibility checklist and broadens test evidence.\n\nChanges:\n- Adds docs/openai-compatibility-audit.md with verified, scoped-unsupported, and still-external validation items.\n- Adds opt-in official OpenAI JS SDK smoke coverage.\n- Expands API tests for all text roles/tool follow-ups, malformed JSON, unknown fields, auto tool-call parsing, legacy functions/function_call, length finish reasons, embedding input variants/errors, context overflow, and concurrent session isolation.\n- Expands scripts/openai_compat_smoke.py to exercise models, chat, chat streaming, completions, completion streaming, responses, responses streaming, JSON mode, tool_choice, input token counting, tokenize/detokenize, and embeddings/capability errors.\n- Rejects empty embedding inputs with OpenAI-shaped errors.\n\nVerification:\n- python3 -m compileall drift tests scripts/openai_compat_smoke.py\n- python3 -m pytest -q -> 50 passed, 3 skipped\n- SDK venv: PYTHONPATH=/Users/taewoopark/personal/DRIFT /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_openai_js_sdk_smoke.py tests/test_sampling_controls.py -q -> 51 passed, 2 skipped\n- DRIFT_RUN_JS_SDK_SMOKE=1 PYTHONPATH=/Users/taewoopark/personal/DRIFT python3 -m pytest tests/test_openai_js_sdk_smoke.py -q -> 1 passed\n- Expanded scripts/openai_compat_smoke.py against a local uvicorn test server -> all checks ok\n- git diff --check and git diff --cached --check\n- CLI/parity/itest help gates passed\n\nFull parity/itest execution was attempted, but this local Python environment still lacks torch, so model-backed parity stops with ModuleNotFoundError: No module named 'torch'.
OpenAI endpoint stage 10.4 - Responses API streaming
Adds semantic SSE streaming for /v1/responses with response.created, response.output_text.delta, and response.completed events; accepts Responses-style text.format structured output and function tool payloads; expands OpenAI Python SDK smoke coverage.\n\nVerification:\n- python3 -m compileall drift tests scripts/openai_compat_smoke.py\n- python3 -m pytest -q\n- python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q\n- PYTHONPATH=/Users/taewoopark/personal/DRIFT /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q\n- git diff --check\n- CLI help gates for drift.cli, run, node, serve, bench; parity/itest help gates\n\nHardware/model parity execution was not rerun here because this local Python environment does not have torch installed.
OpenAI endpoint stage 10.3 — exact logits-backed logprobs
Minor patch release on top of stage 10.2.\n\nHighlights:\n- Extends GenerationResult and the DRIFT backend bridge to carry per-token logprob payloads.\n- Adds opt-in logits-backed logprob collection inside orchestrator.generate(), without changing the default greedy path unless the HTTP adapter requests logprobs.\n- Chat Completions and legacy Completions now prefer exact selected-token/top-k logprobs when the backend exposes logits.\n- Backends that cannot expose logits still return OpenAI-shaped placeholder logprobs for parser compatibility.\n- Stop-token truncation now truncates attached logprobs alongside token_ids.\n- SDK smoke and API tests now assert exact logprob values are parsed.\n\nVerification:\n- python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 39 passed, 2 skipped, 1 warning.\n- PYTHONPATH=/Users/taewoopark/personal/DRIFT /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 40 passed, 1 skipped, 1 warning.\n- python3 -m compileall drift tests scripts/openai_compat_smoke.py -> passed.\n- git diff --check -> passed.\n- python3 -m drift.cli serve --help -> passed.\n\nKnown scope notes:\n- Thin-head mode cannot expose logits at the HTTP adapter and will keep the compatibility fallback.\n- Tool execution, full constrained decoding, audio, and multimodal content remain outside this text-generation PR scope.
OpenAI endpoint stage 10.2 — n-choice and logprobs compatibility
Minor patch release on top of stage 10.1.\n\nHighlights:\n- Adds Chat Completions support for n choices up to 16.\n- Adds Chat Completions logprobs/top_logprobs response shapes, including streaming chunk shape when requested.\n- Adds legacy Completions n choices and logprobs response shapes.\n- Offsets seed per choice for reproducible multi-choice sampled requests.\n- Expands OpenAI Python SDK smoke coverage for n/logprobs parsing.\n- Documents that HTTP logprob values are compatibility placeholders until the adapter exposes exact per-token logits.\n\nVerification:\n- python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 39 passed, 2 skipped, 1 warning.\n- PYTHONPATH=/Users/taewoopark/personal/DRIFT /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 40 passed, 1 skipped, 1 warning.\n- python3 -m compileall drift tests scripts/openai_compat_smoke.py -> passed.\n- git diff --check -> passed.\n- CLI help spot checks: run/node/serve/bench/parity passed.\n\nKnown scope notes:\n- DRIFT now emits OpenAI-compatible logprobs objects for client compatibility, but values are placeholders rather than exact model log probabilities.\n- Tool execution, full constrained decoding, audio, and multimodal content remain outside this text-generation PR scope.
OpenAI endpoint stage 10.1 — tool/JSON compatibility and CLI preservation
Minor patch release on top of stage 10.\n\nHighlights:\n- Adds OpenAI-compatible tool/function calling shapes for chat completions and responses, including tools/tool_choice plus legacy functions/function_call.\n- Adds JSON response_format compatibility for json_object and json_schema via extraction/wrapping/simple required-field filling.\n- Updates streaming structured responses to emit OpenAI-shaped tool_call deltas when needed.\n- Expands OpenAI SDK smoke coverage for JSON mode and tool calls.\n- Keeps existing DRIFT CLI help paths dependency-light by lazy-loading torch/msgpack/protocol/orchestrator work until execution paths need them.\n\nVerification:\n- python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 35 passed, 2 skipped, 1 warning.\n- PYTHONPATH=/Users/taewoopark/personal/DRIFT /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q -> 36 passed, 1 skipped, 1 warning.\n- python3 -m compileall drift tests scripts/openai_compat_smoke.py -> passed.\n- CLI help checked for doctor/up/run/node/serve/reference/parity/itest/bench/ping/keygen/ledger.\n\nKnown scope notes:\n- DRIFT does not execute tools itself; it returns OpenAI-shaped tool calls for the client/tool runner.\n- JSON schema support is compatibility-oriented, not full constrained decoding.\n- Heavy parity/itest execution still requires a torch-enabled DRIFT runtime; this local Python 3.14 environment does not have torch installed.
OpenAI endpoint stage 10 — preservation audit and PR prep
Stage 10 of the OpenAI-compatible endpoint branch.
Implemented:
- Documented the
drift serveOpenAI-compatible HTTP/SSE adapter in README and the operations manual. - Linked the explicit compatibility matrix (
docs/openai-compatibility.md) from README. - Preserved lightweight CLI help in dependency-thin environments by lazy-importing heavy runtime modules in
drift runanddrift nodepaths. - Confirmed the OpenAI adapter remains an edge HTTP layer and does not replace the existing DRIFT TCP+msgpack data plane.
Verification passed:
- System Python:
python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q(32 passed, 2 skipped because system Python lacks openai and torch) - SDK venv with actual OpenAI Python SDK:
PYTHONPATH=$PWD /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q(33 passed, 1 skipped because venv lacks torch) python3 -m compileall drift tests scripts/openai_compat_smoke.pypython3 -m drift.cli helppython3 -m drift.cli run --helppython3 -m drift.cli node --helppython3 -m drift.cli serve --help
Verification blocked by local environment:
python3 -m drift.parity_test --mode inprocesspython3 -m drift.parity_test --mode socketpython3 -m drift.itest --nodes 2python3 -m drift.itest --nodes 2 --chainpython3 -m drift.itest --nodes 2 --thinpython3 -m drift.itest --nodes 2 --int8
All blocked DRIFT runtime gates failed at import with ModuleNotFoundError: No module named 'torch' in the current Python 3.14 environment, before executing model logic.
OpenAI endpoint stage 09 — compatibility harness
Stage 9 of the OpenAI-compatible endpoint branch.
Implemented:
- Added compatibility coverage for OpenAI SDK-style payloads, LangChain-style stop payloads, LiteLLM/vLLM-style sampling fields, llama.cpp-style tokenize/detokenize helpers, embeddings, and negative OpenAI-shaped errors.
- Added
POST /v1/responsesas a minimal text Responses API surface. - Added
POST /v1/chat/completions/input_tokensfor chat token counting. - Added
GET /metricswith Prometheus-style text output. - Added an optional real OpenAI Python SDK smoke test that starts a local uvicorn server and exercises models, chat, streaming chat, completions, and embeddings.
- Added
scripts/openai_compat_smoke.pyfor smoke-testing a runningdrift serveserver with only Python stdlib HTTP calls. - Added
docs/openai-compatibility.mddocumenting supported endpoints, supported parameters, explicit unsupported areas, SDK smoke commands, and DRIFT preservation gates. - Explicitly scoped unsupported tool calling, JSON schema/JSON mode, multimodal/audio, and thin-mode sampling/embeddings with clear OpenAI-shaped errors.
Verification:
- System Python:
python3 -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q(32 passed, 2 skipped because system Python lacks openai and torch) - SDK venv:
PYTHONPATH=$PWD /tmp/drift-openai-sdk-venv/bin/python -m pytest tests/test_openai_api.py tests/test_openai_compat_payloads.py tests/test_openai_sdk_smoke.py tests/test_sampling_controls.py -q(33 passed, 1 skipped because venv lacks torch) python3 -m compileall drift tests scripts/openai_compat_smoke.py
OpenAI endpoint stage 08 — production controls
Stage 8 of the OpenAI-compatible endpoint branch.
Implemented:
- Added optional HTTP API-key authentication, separate from DRIFT's node-to-node
DRIFT_NETWORK_KEYwire security. - Accepted API keys through
--api-key,DRIFT_API_KEY, Bearer auth, andX-API-Key. - Added optional CORS configuration through
--cors-originandDRIFT_CORS_ORIGINS. - Added
/readyreadiness metadata with context length and capability flags. - Added
DRIFT_SERVE_HOST,DRIFT_SERVE_PORT,--max-concurrent-requests, and--no-access-logserver controls. - Added a shallow HTTP concurrency middleware while preserving the backend generation lock.
- Added tests for auth failures/successes, unauthenticated readiness, and CORS preflight behavior.
Verification:
python3 -m pytest tests/test_openai_api.py tests/test_sampling_controls.py -q(23 passed, 1 skipped because local Python lacks torch)python3 -m compileall drift testspython3 -m drift.cli serve --help
OpenAI endpoint stage 07 — embeddings and capabilities
Stage 7 of the OpenAI-compatible endpoint branch.
Implemented:
- Added model capability metadata to
/v1/modelsfor chat, completion, and embedding support. - Added
POST /v1/embeddingswith OpenAI-shaped embedding responses and usage accounting. - Added embedding input normalization for strings, string arrays, token-id arrays, and arrays of token-id arrays.
- Added
encoding_format: floatandencoding_format: base64support. - Added a non-thin DRIFT embedding implementation that routes the prompt through the existing split pipeline and pools the final hidden state.
- Added explicit
unsupported_embeddingserrors for modes such as thin-head where hidden-state embeddings cannot be produced at the head. - Added tests for model capabilities, float embeddings, base64 embeddings, token-id embedding inputs, and unsupported embedding mode errors.
Verification:
python3 -m pytest tests/test_openai_api.py tests/test_sampling_controls.py -q(20 passed, 1 skipped because local Python lacks torch)python3 -m compileall drift tests