Like what you see? ⭐ Star the repo ⭐ to support the project and keep it in the spotlight. See the stargazers →

LFS Client SDKs

KafScale provides LFS client SDKs in four languages. Each SDK handles envelope encoding/decoding, HTTP upload to the LFS proxy, and transparent S3 object resolution.

Go (built-in)

The Go SDK lives in pkg/lfs/ and is used internally by the LFS proxy, console, and processors.

import "github.com/KafScale/platform/pkg/lfs"

// Produce a large file
producer := lfs.NewProducer(lfs.ProducerConfig{
    ProxyAddr: "http://localhost:8080",
    Topic:     "demo-topic",
})
err := producer.Upload(ctx, "large-file.bin", fileReader)

// Consume and resolve
consumer := lfs.NewConsumer(lfs.ConsumerConfig{
    S3Bucket:   "kafscale",
    S3Endpoint: "http://localhost:9000",
})
reader, err := consumer.Resolve(ctx, envelope)

Java

Maven-based SDK with retry/backoff and configurable HTTP timeouts.

<dependency>
    <groupId>org.kafscale</groupId>
    <artifactId>lfs-sdk</artifactId>
    <version>0.1.0</version>
</dependency>
import org.kafscale.lfs.LfsProducer;

LfsProducer producer = new LfsProducer.Builder()
    .proxyUrl("http://localhost:8080")
    .topic("demo-topic")
    .retryAttempts(3)
    .connectTimeoutMs(5000)
    .build();

producer.upload("video.mp4", inputStream, "video/mp4");

Build from source:

cd lfs-client-sdk/java
mvn clean package

Python

Pip-installable SDK with retry/backoff and envelope codec.

pip install lfs-client-sdk/python/
from lfs_sdk import LfsProducer

producer = LfsProducer(
    proxy_url="http://localhost:8080",
    topic="demo-topic",
    max_retries=3,
)
producer.upload("scan.dcm", open("scan.dcm", "rb"), content_type="application/dicom")

JavaScript (Node.js)

TypeScript SDK with streaming upload support.

cd lfs-client-sdk/js
npm install && npm run build
import { LfsProducer } from '@kafscale/lfs-sdk';

const producer = new LfsProducer({
  proxyUrl: 'http://localhost:8080',
  topic: 'demo-topic',
});
await producer.upload('payload.bin', readStream);

Browser SDK

Lightweight SDK for single-page applications. Uploads files directly from the browser to the LFS proxy HTTP API.

import { LfsProducer } from '@kafscale/lfs-browser-sdk';

const producer = new LfsProducer({
  proxyUrl: 'http://lfs.example.com',
  topic: 'uploads',
});

// Upload from a file input
const file = document.getElementById('fileInput').files[0];
await producer.upload(file.name, file);

See the E72 browser demo (examples/E72_browser-lfs-sdk-demo/) for a complete single-page application.

Demo applications

Demo Language Description
E60 Medical imaging LFS design
E61 Video streaming LFS design
E62 Industrial IoT LFS design
E70 Java Java SDK producer with video upload
E71 Python Python SDK video upload
E72 Browser Browser-native SPA file manager

Run any demo:

make lfs-demo          # Core LFS stack
make lfs-demo-medical  # E60 medical demo
make lfs-demo-video    # E61 video demo