Nullspace exposes the same primitives through several client surfaces. Use the one that fits your runtime; all of them authenticate with the same API key and target the same API base URL.

Choose A Client

Python SDK

Application code, notebooks, scripts, agents, and the broadest management surface.

TypeScript SDK

Node and browser apps that create machines, run commands, manage files, use templates, volumes, and Functions.

CLI

Terminal workflows, CI scripts, local credential setup, MCP schemas, and operator inspection.

Raw HTTP API

Direct REST, SSE, and WebSocket integration from any language.

Local MCP

Let Codex, Claude Code, Cursor, VS Code, or another agent call Nullspace tools.

Configuration

API key, API URL, environment variables, .env, and local config precedence.

Install

python -m pip install "nullspace-sdk"
python -m pip install "nullspace-sdk[cli]"
npm install @nullspace/sdk
python -m pip install "nullspace-sdk[cli,mcp]"
During private beta, use the immutable install source from the operator handout when one is provided. The Python distribution is nullspace-sdk, the Python import package is nullspace, the CLI command is nullspace, and the TypeScript package is @nullspace/sdk. Supported Python versions are 3.11, 3.12, and 3.13. The TypeScript SDK requires Node 18+.

Configure

For scripts, CI, and agents:
export NULLSPACE_API_URL=https://18.140.200.84.sslip.io
export NULLSPACE_API_KEY=<key>
For local CLI-driven Python work:
nullspace auth login --api-url https://18.140.200.84.sslip.io
The Python SDK and CLI can read environment variables, project .env, and local config. The TypeScript SDK reads explicit constructor options and environment variables when process.env is available. See SDK Config for precedence.

First Machine

from nullspace import Machine

with Machine.create(template="base") as machine:
    result = machine.commands.run("echo hello", shell=True)
    print(result.stdout.strip())
import { Machine } from "@nullspace/sdk";

await using machine = await Machine.create({ template: "base" });
const result = await machine.commands.run("echo hello", { shell: true });
console.log(result.stdout.trim());
nullspace machine create --template base
nullspace machine exec mch_123 -- echo hello
nullspace machine destroy mch_123
curl -fsS \
  -H "Authorization: Bearer ${NULLSPACE_API_KEY}" \
  "${NULLSPACE_API_URL}/v1/machines"

Surface Map

SurfaceUse it for
MachinesCreate, connect, list, snapshot, fork, hibernate/resume, set timeout, and destroy isolated runtimes.
CommandsRun foreground, streaming, and background commands; inspect processes and logs.
FilesystemRead, write, upload, download, search, replace, and watch machine files.
Code interpreterRun stateful notebook-style code with structured results and artifacts.
TemplatesBuild reusable environments from images, Dockerfiles, and builder steps.
VolumesCreate persistent shared filesystems, mount them into machines, and transfer data.
FunctionsPackage code as named jobs or services backed by isolated machines.
Computer useAutomate GUI desktops, screenshots, input, viewer sessions, and recordings.
NetworkingPreview URLs, WebSockets, custom proxies, tokens, and traffic policy.
AccessPTY, SSH, and retained-machine debugging.
ObservabilityLifecycle history, webhooks, monitor streams, metrics, and usage.

Reference Paths

Python SDK task guides

Install, configure, and use Python SDK surfaces.

Python SDK objects

Object-level reference for machine, commands, files, templates, volumes, code, desktop, and errors.

TypeScript SDK

TypeScript install, configuration, examples, exported types, and coverage notes.

CLI

CLI installation, authentication, commands, schema, and exit codes.

API reference

Generated OpenAPI operations, schemas, and examples.

Supported clients

Compare SDKs, CLI, MCP, HTTP, and console surfaces.