@rlmesh/client
v0.1.0-alpha.1
Published
Client for interacting with RLMesh
Readme
@rlmesh/client
TypeScript SDK for RLMesh evaluations. Alpha — expect breaking changes.
Install
npm install @rlmesh/clientUsage
import { RLMesh } from "@rlmesh/client";
const rlmesh = new RLMesh({
baseUrl: "https://api.rlmesh.dev",
apiKey: process.env.RLMESH_API_KEY,
});
const evaluation = await rlmesh.evaluations.create({
model: { type: "remote" },
tasks: [{ taskId: "task_1", env: { id: "env_cartpole" }, episodes: 10 }],
});
rlmesh.evaluations.stream(evaluation.id, evaluation.viewerToken, {
onEvent: (event) => console.log(event.type),
});Mock Client (@rlmesh/client/testing)
In-memory mock that auto-runs the full eval lifecycle. No server needed. Current testing helpers target Node.js; browser and worker runtimes are not supported yet.
import { createMockClient } from "@rlmesh/client/testing";
const { client, store } = createMockClient({
environments: [{ gymId: "CartPole-v1", image: "ghcr.io/envs/cartpole:1.0" }],
});
const ev = await client.evaluations.create({
model: { type: "remote" },
tasks: [{ taskId: "tsk_1", env: "CartPole-v1", episodes: 10, seed: 42 }],
webhook: { url: "http://localhost:3000/callbacks/rlmesh", events: ["eval.completed"] },
});Modes: "demo" (default, timed), "fast" (instant, use store.scheduler.advanceBy(ms)), "manual" (nothing auto-runs).
Hot reload: createStore() on globalThis, then createMockClientFromStore(store) on each reload.
If you want disk-backed snapshots, pass persist:
import { createMockClient } from "@rlmesh/client/testing";
const { client, store } = createMockClient({
environments: [{ gymId: "CartPole-v1", image: "ghcr.io/envs/cartpole:1.0" }],
mode: "fast",
persist: ".rlmesh/mock-store.json",
});
// snapshot auto-restores on startup and flushes on destroy / process exit
store.destroy();License
Apache-2.0
