{"id":21682363,"url":"https://github.com/tadayosi/tensorflow-serving-client-java","last_synced_at":"2026-05-13T05:43:03.239Z","repository":{"id":263803368,"uuid":"891419193","full_name":"tadayosi/tensorflow-serving-client-java","owner":"tadayosi","description":"A Java client library for TensorFlow Serving","archived":false,"fork":false,"pushed_at":"2025-03-01T04:15:57.000Z","size":210,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T05:19:52.268Z","etag":null,"topics":["ai","client","java","tensorflow","tensorflow-serving"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tadayosi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-20T09:53:51.000Z","updated_at":"2025-03-01T04:15:27.000Z","dependencies_parsed_at":"2025-03-01T05:29:19.285Z","dependency_job_id":null,"html_url":"https://github.com/tadayosi/tensorflow-serving-client-java","commit_stats":null,"previous_names":["tadayosi/tensorflow-serving-client-java"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tadayosi%2Ftensorflow-serving-client-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tadayosi%2Ftensorflow-serving-client-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tadayosi%2Ftensorflow-serving-client-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tadayosi%2Ftensorflow-serving-client-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tadayosi","download_url":"https://codeload.github.com/tadayosi/tensorflow-serving-client-java/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244600725,"owners_count":20479307,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","client","java","tensorflow","tensorflow-serving"],"created_at":"2024-11-25T15:36:16.994Z","updated_at":"2026-05-13T05:43:03.233Z","avatar_url":"https://github.com/tadayosi.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TensorFlow Serving Client for Java\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.tadayosi.tensorflow/tensorflow-serving-client/badge.svg?style=flat)](https://repo1.maven.org/maven2/io/github/tadayosi/tensorflow/tensorflow-serving-client/)\n[![Test](https://github.com/tadayosi/tensorflow-serving-client-java/actions/workflows/test.yml/badge.svg)](https://github.com/tadayosi/tensorflow-serving-client-java/actions/workflows/test.yml)\n\nTensorFlow Serving Client for Java (TFSC4J) is a Java client library for [TensorFlow Serving](https://github.com/tensorflow/serving). It supports the following [TensorFlow Serving Client API (gRPC)](https://github.com/tensorflow/serving/tree/master/tensorflow_serving/apis):\n\n- [Model status API](https://www.tensorflow.org/tfx/serving/api_rest#model_status_api)\n- [Model Metadata API](https://www.tensorflow.org/tfx/serving/api_rest#model_metadata_api)\n- [Classify and Regress API](https://www.tensorflow.org/tfx/serving/api_rest#classify_and_regress_api)\n- [Predict API](https://www.tensorflow.org/tfx/serving/api_rest#predict_api)\n\n## Requirements\n\n- Java 17+\n\n## Install\n\n\nAdd the dependency to your `pom.xml`:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.github.tadayosi.tensorflow\u003c/groupId\u003e\n    \u003cartifactId\u003etensorflow-serving-client\u003c/artifactId\u003e\n    \u003cversion\u003e0.2.2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Usage\n\n\u003e [!IMPORTANT]\n\u003e TFSC4J uses the gRPC port (default: `8500`) to communicate with the TensorFlow model server.\n\nTo creat a client:\n\n```java\nTensorFlowServingClient client = TensorFlowServingClient.newInstance();\n```\n\nBy default, the client connects to `localhost:8500`, but if you want to connect to a different target URI (e.g. `example.com:8080`), instantiate a client as follows:\n\n```java\nTensorFlowServingClient client = TensorFlowServingClient.builder()\n    .target(\"example.com:8080\")\n    .build();\n```\n\n### Model status API\n\nTo get the status of a model:\n\n```java\ntry (TensorFlowServingClient client = TensorFlowServingClient.newInstance()) {\n    GetModelStatusRequest request = GetModelStatusRequest.newBuilder()\n        .setModelSpec(ModelSpec.newBuilder()\n            .setName(\"half_plus_two\")\n            .setVersion(Int64Value.of(123)))\n        .build();\n    GetModelStatusResponse response = client.getModelStatus(request);\n    System.out.println(response);\n}\n```\n\nOutput:\n\n```console\nmodel_version_status {\n  version: 123\n  state: AVAILABLE\n  status {\n  }\n}\n```\n\n### Model Metadata API\n\nTo get the metadata of a model:\n\n```java\ntry (TensorFlowServingClient client = TensorFlowServingClient.newInstance()) {\n    GetModelMetadataRequest request = GetModelMetadataRequest.newBuilder()\n        .setModelSpec(ModelSpec.newBuilder()\n            .setName(\"half_plus_two\")\n            .setVersion(Int64Value.of(123)))\n        .addMetadataField(\"signature_def\")) // metadata_field is mandatory\n        .build();\n    GetModelMetadataResponse response = client.getModelMetadata(request);\n    System.out.println(response);\n}\n```\n\nOutput:\n\n```console\nmodel_spec {\n  name: \"half_plus_two\"\n  version {\n    value: 123\n  }\n}\nmetadata {\n  key: \"signature_def\"\n  value {\n    type_url: \"type.googleapis.com/tensorflow.serving.SignatureDefMap\"\n    value: \"...\"\n  }\n}\n```\n\n### Classify API\n\nTo classify:\n\n```java\ntry (TensorFlowServingClient client = TensorFlowServingClient.newInstance()) {\n    ClassificationRequest request = ClassificationRequest.newBuilder()\n        .setModelSpec(ModelSpec.newBuilder()\n            .setName(\"half_plus_two\")\n            .setVersion(Int64Value.of(123))\n            .setSignatureName(\"classify_x_to_y\"))\n        .setInput(Input.newBuilder()\n            .setExampleList(ExampleList.newBuilder()\n                .addExamples(Example.newBuilder()\n                    .setFeatures(Features.newBuilder()\n                        .putFeature(\"x\", Feature.newBuilder()\n                            .setFloatList(FloatList.newBuilder().addValue(1.0f))\n                            .build())))))\n        .build();\n    ClassificationResponse response = client.classify(request);\n    System.out.println(response);\n}\n```\n\nOutput:\n\n```console\nresult {\n  classifications {\n    classes {\n      score: 2.5\n    }\n  }\n}\nmodel_spec {\n  name: \"half_plus_two\"\n  version {\n    value: 123\n  }\n  signature_name: \"classify_x_to_y\"\n}\n```\n\n### Regress API\n\nTo regress:\n\n```java\ntry (TensorFlowServingClient client = TensorFlowServingClient.newInstance()) {\n    RegressionRequest request = RegressionRequest.newBuilder()\n        .setModelSpec(ModelSpec.newBuilder()\n            .setName(\"half_plus_two\")\n            .setVersion(Int64Value.of(123))\n            .setSignatureName(\"regress_x_to_y\"))\n        .setInput(Input.newBuilder()\n            .setExampleList(ExampleList.newBuilder()\n                .addExamples(Example.newBuilder()\n                    .setFeatures(Features.newBuilder()\n                        .putFeature(\"x\", Feature.newBuilder()\n                            .setFloatList(FloatList.newBuilder().addValue(1.0f))\n                            .build())))))\n        .build();\n    RegressionResponse response = client.regress(request);\n    System.out.println(response);\n}\n```\n\nOutput:\n\n```console\nresult {\n  regressions {\n    value: 2.5\n  }\n}\nmodel_spec {\n  name: \"half_plus_two\"\n  version {\n    value: 123\n  }\n  signature_name: \"regress_x_to_y\"\n}\n```\n\n### Predict API\n\nTo predict:\n\n```java\ntry (TensorFlowServingClient client = TensorFlowServingClient.newInstance()) {\n    PredictRequest request = PredictRequest.newBuilder()\n        .setModelSpec(ModelSpec.newBuilder()\n            .setName(\"half_plus_two\")\n            .setVersion(Int64Value.of(123)))\n        .putInputs(\"x\", TensorProto.newBuilder()\n            .setDtype(DataType.DT_FLOAT)\n            .setTensorShape(TensorShapeProto.newBuilder()\n                .addDim(Dim.newBuilder().setSize(3)))\n            .addFloatVal(1.0f)\n            .addFloatVal(2.0f)\n            .addFloatVal(5.0f)\n            .build())\n        .build();\n    PredictResponse response = client.predict(request);\n    System.out.println(response);\n}\n```\n\nOutput:\n\n```console\noutputs {\n  key: \"y\"\n  value {\n    dtype: DT_FLOAT\n    tensor_shape {\n      dim {\n        size: 3\n      }\n    }\n    float_val: 2.5\n    float_val: 3.0\n    float_val: 4.5\n  }\n}\nmodel_spec {\n  name: \"half_plus_two\"\n  version {\n    value: 123\n  }\n  signature_name: \"serving_default\"\n}\n```\n\n## Configuration\n\n### tfsc4j.properties\n\n```properties\ntarget = \u003ctarget\u003e\ncredentials = \u003ccredentials\u003e\n```\n\n### System properties\n\nYou can configure the TFSC4J properties via system properties with prefix `tfsc4j.`.\n\nFor instance, you can configure `target` with the `tfsc4j.target` system property.\n\n### Environment variables\n\nYou can also configure the TFSC4J properties via environment variables with prefix `TFSC4J_`.\n\nFor instance, you can configure `target` with the `TFSC4J_TARGET` environment variable.\n\n## Examples\n\nSee [examples](./examples/).\n\n## Build\n\n```console\nmvn clean install\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftadayosi%2Ftensorflow-serving-client-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftadayosi%2Ftensorflow-serving-client-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftadayosi%2Ftensorflow-serving-client-java/lists"}