Skip to main content

gRPC API

The default endpoint is localhost:50051, using plaintext gRPC with reflection. The API has unary requests; it currently has no task streaming RPC.

Proto Definition

Generate clients from crates/task-daemon-grpc/proto/task_daemon.proto in the TaskDaemon repository. Source access currently requires GitHub authorization for the private repository. You can also copy the complete schema below to task_daemon.proto to generate clients. The current schema is:
QueueTask accepts JSON encoded in task_data_json and uses default priority 50. There is no gRPC priority field. TaskInfo.task_data and result are JSON strings; absent results, errors, and completion timestamps are empty strings. attempts starts at zero and increments on retry scheduling or a Failed marking; successful completion does not increment it. The handler’s request uses attempt = stored attempts + 1 before execution. An initial success therefore has request attempt: 1 and API attempts: 0; an initial terminal failure stores attempts: 1. Recovery can repeat the same request attempt, so these fields do not count all handler executions. ListTasks clamps its requested limit to 1–100; an omitted or zero limit returns at most one task. It has no status filter. DeleteTask and RedriveTask report their outcome in success and message. Redrive preserves attempts and retry budget. GetHealth reads a fresh Pending count, while GetMetrics.queue_size uses the one-second sample. All counters are process-local and reset on restart.

Python Client

Install grpcio and grpcio-tools, then generate the two modules from the schema in your working directory:
Poll GetTask until completed or failed before reading the result.

Go Client

Generate Go bindings using protoc-gen-go and protoc-gen-go-grpc. The schema has no go_package option, so provide your own module mapping, for example in a module named example.com/taskclient:

Node.js Client

Install @grpc/grpc-js and @grpc/proto-loader. keepCase: true preserves the schema’s snake_case field names:

Reflection and grpcurl

Use gRPC for generated typed clients or existing gRPC services. Use HTTP for curl, browser integration, or priority submission.