Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -847,8 +847,6 @@ message EngineError {
ErrorCode code = 1;
string message = 2;
bool retryable = 3;
optional uint64 retry_after_ms = 4;
google.protobuf.Struct details = 5;
}

enum ErrorCode {
Expand Down Expand Up @@ -890,7 +888,3 @@ KV-event or runtime-event subscription. No response may follow a terminal
a failed drain state.

`retryable` states whether the unchanged operation can succeed on retry.
`retry_after_ms` is present only for retryable errors and is the recommended
minimum delay; an explicit zero permits immediate retry. `details` contains
machine-readable error context. Stable detail keys are part of this API;
engine-specific keys should be namespaced to avoid collisions.
6 changes: 2 additions & 4 deletions proto/openengine/v1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,12 @@ share the same package and together define the API.
| File | Area |
| --- | --- |
| [`openengine.proto`](openengine.proto) | `Inference` and `Control` service declarations |
| [`input.proto`](input.proto) | Shared text, token, and multimodal inputs |
| [`server.proto`](server.proto) | Server identity, deployment capacity, engine roles, and parallelism |
| [`server.proto`](server.proto) | Server identity, deployment capacity, engine roles, parallelism, and load |
| [`model.proto`](model.proto) | Model metadata and inference capabilities |
| [`generation.proto`](generation.proto) | Generation requests, parameters, streamed events, and usage |
| [`generation.proto`](generation.proto) | Generation inputs, requests, parameters, streamed events, and usage |
| [`lora.proto`](lora.proto) | LoRA adapter lifecycle |
| [`kv.proto`](kv.proto) | KV sessions, connector discovery, and cache events |
| [`lifecycle.proto`](lifecycle.proto) | Health, abort, and drain operations |
| [`observability.proto`](observability.proto) | Load snapshots |
| [`error.proto`](error.proto) | Terminal errors for accepted streaming requests |

Generate bindings from every `.proto` file in this directory. Compiling only
Expand Down
4 changes: 0 additions & 4 deletions proto/openengine/v1/error.proto
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,12 @@ syntax = "proto3";

package openengine.v1;

import "google/protobuf/struct.proto";

// Accepted failures emit one terminal EngineError and close with OK.
// Validation and transport failures use non-OK gRPC status instead.
message EngineError {
ErrorCode code = 1;
string message = 2;
bool retryable = 3; // Retry may succeed without changing the request.
optional uint64 retry_after_ms = 4; // Zero permits immediate retry.
google.protobuf.Struct details = 5; // Machine-readable context.
}

enum ErrorCode {
Expand Down
29 changes: 27 additions & 2 deletions proto/openengine/v1/generation.proto
Original file line number Diff line number Diff line change
@@ -1,17 +1,42 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

// Generation requests, streamed events, and usage.
// Generation inputs, requests, streamed events, and usage.

syntax = "proto3";

package openengine.v1;

import "google/protobuf/struct.proto";
import "openengine/v1/error.proto";
import "openengine/v1/input.proto";
import "openengine/v1/kv.proto";

message TokenIds {
repeated uint32 ids = 1;
}

// Multimodal modality discriminator. UNSPECIFIED means the sender left it unset.
enum Modality {
MODALITY_UNSPECIFIED = 0;
MODALITY_IMAGE = 1;
MODALITY_VIDEO = 2;
MODALITY_AUDIO = 3;
}

// A single multimodal input. Exactly one `source` should be set. The engine
// owns fetch, decode, and preprocessing, so pre-decoded or RDMA media
// descriptors are not represented here.
message MediaItem {
Modality modality = 1;
oneof source {
string url = 2; // http(s):// -- engine fetches
string data_uri = 3; // data:<mime>;base64,<...> -- engine decodes
bytes raw_bytes = 4; // pre-fetched bytes -- engine still preprocesses
}
string mime_type = 5; // optional, hints raw_bytes decode
string uuid = 6; // optional caller id / mm_hash
}

message GenerateRequest {
string request_id = 1;
string model = 2;
Expand Down
60 changes: 0 additions & 60 deletions proto/openengine/v1/input.proto

This file was deleted.

40 changes: 0 additions & 40 deletions proto/openengine/v1/observability.proto

This file was deleted.

1 change: 0 additions & 1 deletion proto/openengine/v1/openengine.proto
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import "openengine/v1/kv.proto";
import "openengine/v1/lifecycle.proto";
import "openengine/v1/lora.proto";
import "openengine/v1/model.proto";
import "openengine/v1/observability.proto";
import "openengine/v1/server.proto";

// Standard ASCII gRPC request metadata:
Expand Down
32 changes: 31 additions & 1 deletion proto/openengine/v1/server.proto
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

// Server identity, deployment capacity, engine role, and parallelism metadata.
// Server identity, deployment capacity, roles, parallelism, and load.

syntax = "proto3";

Expand Down Expand Up @@ -55,3 +55,33 @@ message ParallelismInfo {
optional uint32 data_parallel_start_rank = 5;
optional uint32 decode_context_parallel_size = 6; // Ranks per decode-context group; at least 1.
}

message GetLoadRequest {
bool include_per_rank = 1;
}

message LoadInfo {
string instance_id = 1;
optional uint64 timestamp_unix_nanos = 2;
optional uint32 running_requests = 3;
optional uint32 queued_requests = 4;
optional uint32 active_kv_sessions = 5;
optional uint64 used_kv_blocks = 6;
optional uint64 total_kv_blocks = 7;
optional uint64 running_tokens = 8;
optional uint64 waiting_tokens = 9;
optional uint32 prefill_batch_size = 10;
optional uint32 decode_batch_size = 11;
repeated RankLoadInfo ranks = 20;
google.protobuf.Struct attributes = 30;
}

message RankLoadInfo {
optional uint32 data_parallel_rank = 1;
optional uint32 running_requests = 2;
optional uint32 queued_requests = 3;
optional uint64 used_kv_blocks = 4;
optional uint64 total_kv_blocks = 5;
optional uint32 prefill_batch_size = 6;
optional uint32 decode_batch_size = 7;
}
Loading