batchwatch

batchwatch › Client libraries

Nine languages. No dependencies.

One first-party client for every language an LLM pipeline gets written in — and not one of them puts a dependency in your lock file. Standard library only, all nine. HTTP is hand-rolled where it had to be (std::net in Rust, java.net.http, a raw socket in C++) rather than pulling an HTTP client and a JSON parser into your build.

TypeScript

Node 20+, Deno

Ships its own types. Two files of source, and no dependencies to install with it.

npm install batchwatch

npmliveRead the source →

Go

Go 1.21+

Installs the way every Go package does - the module proxy already serves it.

go get github.com/batchwatch/client/go@latest

go.devliveRead the source →

.NET / C#

net8.0

HttpClient and System.Text.Json, nothing else. Built and tested in CI on every push.

dotnet add package Batchwatch

NuGetliveRead the source →

Java

Java 17+

java.net.http and nothing from Maven. Kotlin and Scala use it unchanged.

dev.batchwatch:batchwatch-client:0.2.1

MavenliveRead the source →

C++

C++17, POSIX

A header and a source file, built with a plain Makefile.

git clone https://github.com/batchwatch/client
make -C client/cpp

source distributionRead the source →

Or let the agent call us directly

The SDKs put batchwatch in your code. The MCP server puts it in your agent's hands: when a model is deciding "batch this or run it now?", it calls batchwatch and gets the real measured queue evidence — no crawl, no index, no ranking in between. It is the same tier system as the API, so a key earns live figures the same way it does everywhere else.

MCP server

Node 18+

Let an AI agent ASK "should I batch this?" and get the real queue evidence — the measured wait distribution, current conditions and a graded confidence — instead of guessing. Six tools, each a real read route, passed through verbatim.

npx batchwatch-mcp

npmliveRead the source →

Two lines to adopt, in every one of them

One call before you submit, one context around the job. That is the whole integration, and it is the same shape in all nine languages.

if bw.should_batch("gpt-5.6-sol", max_wait="15m"):
    with bw.track("openai", "gpt-5.6-sol", mode="batch"):
        submit_the_job()

The same three promises, in all nine

Open source, and short enough to read before you install it

Every client is MIT-licensed, and the send path is a few hundred lines with no dependencies to chase. That is the point of publishing them: you can check what leaves your machine yourself instead of taking our word for it.

All nine on GitHub → How the ingest API works