JavaScript / TypeScript SDK
The Cells JavaScript SDK ships with full TypeScript types and works in Node.js 18 and later.
Install
npm
npm install mudbase-cells-sdk
# or: pnpm add mudbase-cells-sdknpm install mudbase-cells-sdk
# or: pnpm add mudbase-cells-sdkInitialize
TypeScript
import { Configuration, SessionsApi, ExecutionApi, FilesApi, ServicesApi } from "mudbase-cells-sdk";
const config = new Configuration({
apiKey: process.env.CELLS_API_KEY!,
});
const sessions = new SessionsApi(config);
const exec = new ExecutionApi(config);
const files = new FilesApi(config);
const services = new ServicesApi(config);import { Configuration, SessionsApi, ExecutionApi, FilesApi, ServicesApi } from "mudbase-cells-sdk";
const config = new Configuration({
apiKey: process.env.CELLS_API_KEY!,
});
const sessions = new SessionsApi(config);
const exec = new ExecutionApi(config);
const files = new FilesApi(config);
const services = new ServicesApi(config);Create a session
TypeScript
const session = await sessions.createSession({
projectId: process.env.CELLS_PROJECT_ID!,
createSessionRequest: {
language: "node",
languageVersion: "22",
timeoutSeconds: 300,
},
});
console.log(session.sessionId);const session = await sessions.createSession({
projectId: process.env.CELLS_PROJECT_ID!,
createSessionRequest: {
language: "node",
languageVersion: "22",
timeoutSeconds: 300,
},
});
console.log(session.sessionId);Run a command
TypeScript
const result = await exec.execSession({
projectId: process.env.CELLS_PROJECT_ID!,
sessionId: session.sessionId,
execRequest: {
cmd: ["node", "-e", "console.log(42)"],
timeoutMs: 30000,
},
});
// streams SSE; exit code in the final eventconst result = await exec.execSession({
projectId: process.env.CELLS_PROJECT_ID!,
sessionId: session.sessionId,
execRequest: {
cmd: ["node", "-e", "console.log(42)"],
timeoutMs: 30000,
},
});
// streams SSE; exit code in the final eventFiles
TypeScript
// Write files into the session
await files.writeFiles({
projectId: process.env.CELLS_PROJECT_ID!,
sessionId: session.sessionId,
writeFilesRequest: {
files: [{ path: "index.js", content: "console.log('hello')" }],
},
});
// Read a file back
const file = await files.readFile({
projectId: process.env.CELLS_PROJECT_ID!,
sessionId: session.sessionId,
path: "index.js",
});
console.log(file.content);// Write files into the session
await files.writeFiles({
projectId: process.env.CELLS_PROJECT_ID!,
sessionId: session.sessionId,
writeFilesRequest: {
files: [{ path: "index.js", content: "console.log('hello')" }],
},
});
// Read a file back
const file = await files.readFile({
projectId: process.env.CELLS_PROJECT_ID!,
sessionId: session.sessionId,
path: "index.js",
});
console.log(file.content);Services
TypeScript
// Start a named service on port 3000
await services.startService({
projectId: process.env.CELLS_PROJECT_ID!,
sessionId: session.sessionId,
startServiceRequest: {
name: "web",
cmd: "node",
args: ["server.js"],
port: 3000,
},
});// Start a named service on port 3000
await services.startService({
projectId: process.env.CELLS_PROJECT_ID!,
sessionId: session.sessionId,
startServiceRequest: {
name: "web",
cmd: "node",
args: ["server.js"],
port: 3000,
},
});Close a session
TypeScript
await sessions.closeSession({
projectId: process.env.CELLS_PROJECT_ID!,
sessionId: session.sessionId,
});await sessions.closeSession({
projectId: process.env.CELLS_PROJECT_ID!,
sessionId: session.sessionId,
});